I need to automate the process of changing a feature's status attribute based on the most recent date that's input between three of its attributes. Any ideas?
If I understand your question correctly, you want to change the status field based on the most recent date in 3 date fields.
You can use an UpdateCursor or the FieldCalculator and a modified version of:
<SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> datetime <SPAN class="comment token"># to make dates for testing</SPAN> <SPAN class="keyword token">def</SPAN> <SPAN class="token function">status</SPAN><SPAN class="punctuation token">(</SPAN>date1<SPAN class="punctuation token">,</SPAN> date2<SPAN class="punctuation token">,</SPAN> date3<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> stat <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Status 1'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Status 2'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Status 3'</SPAN><SPAN class="punctuation token">]</SPAN> dates <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>date1<SPAN class="punctuation token">,</SPAN> date2<SPAN class="punctuation token">,</SPAN> date3<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">return</SPAN> stat<SPAN class="punctuation token">[</SPAN>dates<SPAN class="punctuation token">.</SPAN>index<SPAN class="punctuation token">(</SPAN>max<SPAN class="punctuation token">(</SPAN>dates<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>status<SPAN class="punctuation token">(</SPAN>datetime<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2020</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">7</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">12</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="comment token"># 3 fields with dates</SPAN> datetime<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2018</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">6</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">12</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> datetime<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2017</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">8</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">12</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">10</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
If it is possible that two date fields could have the same maximum date, the first date in the list that matches would be returned. So the order of the status and date fields would need to be in order of most to least important.
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.