Actualizaciones al script original en los comentarios a continuación - 5\/9\/2019<\/EM><\/P><\/P>Con la temporada de huracanes sobre nosotros, quería compartir un script de python simple pero poderoso que localiza activos que están en la trayectoria de una tormenta mayor. El script aprovecha la ArcGIS Python API<\/A> y puede ejecutarse manualmente o automáticamente desde una variedad de fuentes, que cubriré más adelante. El script también requiere que las ubicaciones de sus activos estén en una capa de entidades dentro de su portal GIS, junto con una capa de entidades poligonales usada como trayectoria de la tormenta, y una capa para agregar sus alarmas o activos vulnerables. El script está adjunto abajo, pero primero desglosémoslo.<\/P><\/P>Primero, importe las bibliotecas necesarias de ArcGIS python y autentíquese en su portal GIS. Dado que este script usa capas de entidades, usaremos principalmente el módulo arcgis.features.<\/P><SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>gis <SPAN class="keyword token">import<\/SPAN> GIS <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>features <SPAN class="keyword token">import<\/SPAN> FeatureLayer <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>features<SPAN class="punctuation token">.<\/SPAN>managers <SPAN class="keyword token">import<\/SPAN> FeatureLayerManager <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>geometry <SPAN class="keyword token">import<\/SPAN> filters <SPAN class="keyword token">from<\/SPAN> IPython<SPAN class="punctuation token">.<\/SPAN>display <SPAN class="keyword token">import<\/SPAN> display gis <SPAN class="operator token">=<\/SPAN> GIS<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"https:\/\/your.portal.here\/"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'username'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'password'<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="line-numbers-rows"><SPAN><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn><\/P>A continuación cargaremos las capas de entidades usadas en el script. El script requiere una capa de entidades puntuales de las ubicaciones de sus activos, una capa poligonal de la trayectoria de la tormenta y otra capa puntual usada como alarmas o ubicaciones vulnerables de activos.<\/P><\/P>Consejo Ninja Pro:<\/STRONG> Aproveche el Active Hurricane live feed<\/A> del Living Atlas de Esri como su trayectoria de tormenta.<\/EM><\/P><SPAN class="comment token">#capa de activos<\/SPAN> cellSiteFeatureLayer <SPAN class="operator token">=<\/SPAN> gis<SPAN class="punctuation token">.<\/SPAN>content<SPAN class="punctuation token">.<\/SPAN>get<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'88b5acd4444343b3bdaea40918d070bf'<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="comment token">#capa trayectoria tormenta<\/SPAN> hurricaneFeatureLayer <SPAN class="operator token">=<\/SPAN> gis<SPAN class="punctuation token">.<\/span>content<Span Class= "punctuation Token ">.<\ /span > get <Span Class = " punctuation Token ">(</Span ><Span Class = " string Token ">'6c8256c93c0e40debe46d9dcf79d0049'</Span ><Span Class = " punctuation Token ">)</Span > <span Class = " comment Token ">#capa alarmas</span > warningsFeatureLayer <span Class = " operator Token ">=</span > gis<span Class = " punctuation Token ">.</span >content<span Class = " punctuation Token ">.</span >get<span Class = " punctuation Token ">(</span ><span Class = " string Token ">'6f735776f0c246b1ba602a774dbc1b1d'</span ><span Class = " punctuation Token ">)</span >< <span Class = " line-numbers-rows "><span >< </span ><span >< </span ><span >< </span ><span >< </span ><span >< </span ><span >< </span ></span ></code ></pre ><p >Luego, truncaremos y limpiaremos las alarmas previas y activos vulnerables de la capa de alarmas.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >warningsLayer < span Class = " operator Token ">=</ span > warningsFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >0<span Class = " punctuation Token ">]</ span > warningsLayer<span Class = " punctuation Token ">.</ span >manager<span Class = " punctuation Token ">.</ span >truncate<span Class = " punctuation Token ">(</ span >)< < span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Luego, almacenaremos la geometría actual de la capa poligonal o la trayectoria de la tormenta que se usará para consultar los activos que caen dentro de ella.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >hurricaneFeatures < span Class = " operator Token ">=</ span > hurricaneFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >8<span Class = " punctuation Token ">]</ span > queryHurricane < span Class = " operator Token ">=</ span > hurricaneFeatures<span Class = " punctuation Token ">.</ span >query<span Class = " punctuation Token ">(</ span >where<span Class = " operator Token ">=</ span >'1=1'<span Class = " punctuation Token ">)</ span > hurricaneGeometry < span Class = " operator Token ">=</ span > queryHurricane<span Class = " punctuation Token ">.</ span >features<span Class = " punctuation Token ">[</ span >3<span Class = " punctuation Token ">]</ span >.geometry <span Class = " comment Token ">##print (hurricaneGeometry)</ span >< span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span >< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Ahora usaremos la geometría que acabamos de almacenar como filtro espacial para nuestra consulta en la capa de activos.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >cellSiteFeatures < span Class = " operator Token ">=</ span > cellSiteFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >0<span Class = " punctuation Token ">]</ span > warningsResult < span Class = " operator Token ">=</ span > cellSiteFeatures<span Class = " punctuation Token ">.</ span >query<span Class = " punctuation Token ">(</ span >where<span Class = " operator Token ">=</ span >'1=1'<span Class = " punctuation Token ">,</ span > out_fields<span Class = " operator Token ">=</ span >'SiteID'<span Class = " punctuation Token ">,</ span > geometry_filter<span Class = " operator Token ">=</ span >filters.intersects(hurricaneGeometry)<span Class = " punctuation Token ">)</ span > <span Class = " comment Token ">##print(warningsResult)</ span >< span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Finalmente, tome el conjunto de entidades devuelto por la consulta y agregue las entidades a la capa de alarmas.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code>warningsLayer.edit_features(adds=warningsResult) <span class="line-numbers-rows"><span></span><span></span></span>Y eso es todo. El resultado son nuevas ubicaciones puntuales que le muestran dónde caen los activos dentro de una trayectoria de tormenta.El script puede ejecutarse en una variedad de lugares dependiendo de la experiencia que desee para el usuario final. Aquí algunas opciones:Localmente en su propio IDEDentro de ArcGIS Pro como una herramienta GPCompartido como un servicio GP y aprovechado en el widget GP del Web AppBuilderLlevado a ArcGIS Notebook serverEjecución automática usando el Programador de tareas Windows Consejo Ninja Pro:Aproveche el Operations Dashboard for ArcGIS para ver los resultados del análisis.
<\/P>
Primero, importe las bibliotecas necesarias de ArcGIS python y autentíquese en su portal GIS. Dado que este script usa capas de entidades, usaremos principalmente el módulo arcgis.features.<\/P>
<SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>gis <SPAN class="keyword token">import<\/SPAN> GIS <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>features <SPAN class="keyword token">import<\/SPAN> FeatureLayer <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>features<SPAN class="punctuation token">.<\/SPAN>managers <SPAN class="keyword token">import<\/SPAN> FeatureLayerManager <SPAN class="keyword token">from<\/SPAN> arcgis<SPAN class="punctuation token">.<\/SPAN>geometry <SPAN class="keyword token">import<\/SPAN> filters <SPAN class="keyword token">from<\/SPAN> IPython<SPAN class="punctuation token">.<\/SPAN>display <SPAN class="keyword token">import<\/SPAN> display gis <SPAN class="operator token">=<\/SPAN> GIS<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">"https:\/\/your.portal.here\/"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'username'<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">'password'<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="line-numbers-rows"><SPAN><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn><\/><SPAn>
A continuación cargaremos las capas de entidades usadas en el script. El script requiere una capa de entidades puntuales de las ubicaciones de sus activos, una capa poligonal de la trayectoria de la tormenta y otra capa puntual usada como alarmas o ubicaciones vulnerables de activos.<\/P>
Consejo Ninja Pro:<\/STRONG> Aproveche el
<SPAN class="comment token">#capa de activos<\/SPAN> cellSiteFeatureLayer <SPAN class="operator token">=<\/SPAN> gis<SPAN class="punctuation token">.<\/SPAN>content<SPAN class="punctuation token">.<\/SPAN>get<SPAN class="punctuation token">(<\/SPAN><SPAN class="string token">'88b5acd4444343b3bdaea40918d070bf'<\/SPAN><SPAN class="punctuation token">)<\/SPAN> <SPAN class="comment token">#capa trayectoria tormenta<\/SPAN> hurricaneFeatureLayer <SPAN class="operator token">=<\/SPAN> gis<SPAN class="punctuation token">.<\/span>content<Span Class= "punctuation Token ">.<\ /span > get <Span Class = " punctuation Token ">(</Span ><Span Class = " string Token ">'6c8256c93c0e40debe46d9dcf79d0049'</Span ><Span Class = " punctuation Token ">)</Span > <span Class = " comment Token ">#capa alarmas</span > warningsFeatureLayer <span Class = " operator Token ">=</span > gis<span Class = " punctuation Token ">.</span >content<span Class = " punctuation Token ">.</span >get<span Class = " punctuation Token ">(</span ><span Class = " string Token ">'6f735776f0c246b1ba602a774dbc1b1d'</span ><span Class = " punctuation Token ">)</span >< <span Class = " line-numbers-rows "><span >< </span ><span >< </span ><span >< </span ><span >< </span ><span >< </span ><span >< </span ></span ></code ></pre ><p >Luego, truncaremos y limpiaremos las alarmas previas y activos vulnerables de la capa de alarmas.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >warningsLayer < span Class = " operator Token ">=</ span > warningsFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >0<span Class = " punctuation Token ">]</ span > warningsLayer<span Class = " punctuation Token ">.</ span >manager<span Class = " punctuation Token ">.</ span >truncate<span Class = " punctuation Token ">(</ span >)< < span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Luego, almacenaremos la geometría actual de la capa poligonal o la trayectoria de la tormenta que se usará para consultar los activos que caen dentro de ella.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >hurricaneFeatures < span Class = " operator Token ">=</ span > hurricaneFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >8<span Class = " punctuation Token ">]</ span > queryHurricane < span Class = " operator Token ">=</ span > hurricaneFeatures<span Class = " punctuation Token ">.</ span >query<span Class = " punctuation Token ">(</ span >where<span Class = " operator Token ">=</ span >'1=1'<span Class = " punctuation Token ">)</ span > hurricaneGeometry < span Class = " operator Token ">=</ span > queryHurricane<span Class = " punctuation Token ">.</ span >features<span Class = " punctuation Token ">[</ span >3<span Class = " punctuation Token ">]</ span >.geometry <span Class = " comment Token ">##print (hurricaneGeometry)</ span >< span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span >< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Ahora usaremos la geometría que acabamos de almacenar como filtro espacial para nuestra consulta en la capa de activos.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code >cellSiteFeatures < span Class = " operator Token ">=</ span > cellSiteFeatureLayer<span Class = " punctuation Token ">.</ span >layers<span Class = " punctuation Token ">[</ span >0<span Class = " punctuation Token ">]</ span > warningsResult < span Class = " operator Token ">=</ span > cellSiteFeatures<span Class = " punctuation Token ">.</ span >query<span Class = " punctuation Token ">(</ span >where<span Class = " operator Token ">=</ span >'1=1'<span Class = " punctuation Token ">,</ span > out_fields<span Class = " operator Token ">=</ span >'SiteID'<span Class = " punctuation Token ">,</ span > geometry_filter<span Class = " operator Token ">=</ span >filters.intersects(hurricaneGeometry)<span Class = " punctuation Token ">)</ span > <span Class = " comment Token ">##print(warningsResult)</ span >< span Class = " line-numbers-rows ">< span >< </ span >< span >< </ span >< span >< </ span ></ span ></ code ></ pre ><p >Finalmente, tome el conjunto de entidades devuelto por la consulta y agregue las entidades a la capa de alarmas.< /p ><pre Class = " lia-code-sample line-numbers language-none " ><code>warningsLayer.edit_features(adds=warningsResult) <span class="line-numbers-rows"><span></span><span></span></span>
Y eso es todo. El resultado son nuevas ubicaciones puntuales que le muestran dónde caen los activos dentro de una trayectoria de tormenta.El script puede ejecutarse en una variedad de lugares dependiendo de la experiencia que desee para el usuario final. Aquí algunas opciones:
Patrick Huls<\/STRONG><\/SPAN><\/P>Líder de Equipo de Ingenieros de Soluciones<\/SPAN> - Telecommunications<\/A><\/STRONG><\/SPAN><\/SPAN><\/H5>LinkedIn: Patrick Huls<\/A>| Twitter: @SpatialNinja<\/A>| GeoNet:Phuls-esristaff<\/A><\/SPAN><\/P><\/BODY><\/HTML>
LinkedIn:
A user asked me if this analysis can be run using a feature layer that contains multiple polygons (just in case there are multiple storms occurring), and the answer is yes. Here are necessary modifications:
Add a for loop to iterate through each feature in the feature layer and run the asset query using the geometry from each feature.
cellSiteFeatures <SPAN class="operator token">=</SPAN> cellSiteFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> hurricaneFeatures <SPAN class="operator token">=</SPAN> hurricaneFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN> queryHurricane <SPAN class="operator token">=</SPAN> hurricaneFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_sr<SPAN class="operator token">=</SPAN><SPAN class="string token">"102100"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> queryHurricane<SPAN class="punctuation token">:</SPAN> geometryHurricane <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">.</SPAN>geometry warningsResult <SPAN class="operator token">=</SPAN> cellSiteFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_fields<SPAN class="operator token">=</SPAN><SPAN class="string token">'SiteID'</SPAN><SPAN class="punctuation token">,</SPAN> geometry_filter<SPAN class="operator token">=</SPAN>filters<SPAN class="punctuation token">.</SPAN>intersects<SPAN class="punctuation token">(</SPAN>geometryHurricane<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> warningsLayer<SPAN class="punctuation token">.</SPAN>edit_features<SPAN class="punctuation token">(</SPAN>adds<SPAN class="operator token">=</SPAN>warningsResult<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>warningsResult<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>
Additional lines of code to store attributes of the storm and add those to the warning layer.
cellSiteFeatures <SPAN class="operator token">=</SPAN> cellSiteFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> hurricaneFeatures <SPAN class="operator token">=</SPAN> hurricaneFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN> queryHurricane <SPAN class="operator token">=</SPAN> hurricaneFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_sr<SPAN class="operator token">=</SPAN><SPAN class="string token">"102100"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> queryHurricane<SPAN class="punctuation token">:</SPAN> geometryHurricane <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">.</SPAN>geometry warningName <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">.</SPAN>get_value<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'STORMNAME'</SPAN><SPAN class="punctuation token">)</SPAN> warningType <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Hurricane'</SPAN> warningsResult <SPAN class="operator token">=</SPAN> cellSiteFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_fields<SPAN class="operator token">=</SPAN><SPAN class="string token">'*'</SPAN><SPAN class="punctuation token">,</SPAN> geometry_filter<SPAN class="operator token">=</SPAN>filters<SPAN class="punctuation token">.</SPAN>intersects<SPAN class="punctuation token">(</SPAN>geometryHurricane<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#add vurnerable asset locations to alarms layer w/ storm name</SPAN> <SPAN class="keyword token">for</SPAN> f <SPAN class="keyword token">in</SPAN> warningsResult<SPAN class="punctuation token">:</SPAN> f<SPAN class="punctuation token">.</SPAN>attributes<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Warning_Name'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">=</SPAN>warningName f<SPAN class="punctuation token">.</SPAN>attributes<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Warning_Type'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">=</SPAN>warningType warningsLayer<SPAN class="punctuation token">.</SPAN>edit_features<SPAN class="punctuation token">(</SPAN>adds<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN>f<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>f<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></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
For larger datasets, is best to chunk up the queried results and add them to your alarms layer in chunks. Here are some modifications to the code to allow for sending the edits in chunks of 1000.
cellSiteFeatures <SPAN class="operator token">=</SPAN> cellSiteFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> hurricaneFeatures <SPAN class="operator token">=</SPAN> hurricaneFeatureLayer<SPAN class="punctuation token">.</SPAN>layers<SPAN class="punctuation token">[</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">]</SPAN> queryHurricane <SPAN class="operator token">=</SPAN> hurricaneFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_sr<SPAN class="operator token">=</SPAN><SPAN class="string token">"102100"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>queryHurricane<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> queryHurricane<SPAN class="punctuation token">:</SPAN> geometryHurricane <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">.</SPAN>geometry warningName <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">.</SPAN>get_value<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'STORMNAME'</SPAN><SPAN class="punctuation token">)</SPAN> warningInfo <SPAN class="operator token">=</SPAN> <SPAN class="string token">''</SPAN> warningType <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Hurricane'</SPAN> warningsResult <SPAN class="operator token">=</SPAN> cellSiteFeatures<SPAN class="punctuation token">.</SPAN>query<SPAN class="punctuation token">(</SPAN>where<SPAN class="operator token">=</SPAN><SPAN class="string token">'1=1'</SPAN><SPAN class="punctuation token">,</SPAN> out_fields<SPAN class="operator token">=</SPAN><SPAN class="string token">'*'</SPAN><SPAN class="punctuation token">,</SPAN> geometry_filter<SPAN class="operator token">=</SPAN>filters<SPAN class="punctuation token">.</SPAN>intersects<SPAN class="punctuation token">(</SPAN>geometryHurricane<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> f <SPAN class="keyword token">in</SPAN> warningsResult<SPAN class="punctuation token">:</SPAN> f<SPAN class="punctuation token">.</SPAN>attributes<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Warning_Name'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">=</SPAN>warningName f<SPAN class="punctuation token">.</SPAN>attributes<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Warning_Type'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="operator token">=</SPAN>warningType warningsResultSdf <SPAN class="operator token">=</SPAN> warningsResult<SPAN class="punctuation token">.</SPAN>sdf <SPAN class="comment token">#Yield successive n-sized chunks from l</SPAN> <SPAN class="keyword token">def</SPAN> <SPAN class="token function">chunks</SPAN><SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">yield</SPAN> l<SPAN class="punctuation token">[</SPAN>i<SPAN class="punctuation token">:</SPAN>i <SPAN class="operator token">+</SPAN> n<SPAN class="punctuation token">]</SPAN> <SPAN class="comment token">#add vulnerable asset locations to alarms layer w/ storm info</SPAN> <SPAN class="keyword token">for</SPAN> chunk <SPAN class="keyword token">in</SPAN> chunks<SPAN class="punctuation token">(</SPAN>warningsResultSdf<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">1000</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> warningsLayer<SPAN class="punctuation token">.</SPAN>edit_features<SPAN class="punctuation token">(</SPAN>adds<SPAN class="operator token">=</SPAN>FeatureSet<SPAN class="punctuation token">.</SPAN>from_dataframe<SPAN class="punctuation token">(</SPAN>chunk<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>chunk<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></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.