ArcGIS Python API<\/A> und kann manuell oder automatisch aus verschiedenen Quellen ausgeführt werden, die ich später erläutern werde. Das Skript erfordert außerdem, dass Ihre Asset-Standorte in einem Feature-Layer innerhalb Ihres GIS-Portals vorliegen, zusammen mit einem Polygon-Feature-Layer, der als Sturmspur verwendet wird, und einem Layer, um Ihre Alarme oder gefährdeten Assets hinzuzufügen. Das Skript ist unten angehängt, aber lassen Sie uns zuerst eine Aufschlüsselung machen.<\/P><\/P>
Zuerst importieren wir die notwendigen ArcGIS-Python-Bibliotheken und authentifizieren uns in Ihrem GIS-Portal. Da dieses Skript Feature-Layers verwendet, nutzen wir hauptsächlich das arcgis.features-Modul.<\/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><\/><CODE><PRE><P><\/><P>Nächster Schritt ist das Laden der im Skript verwendeten Feature-Layers. Das Skript benötigt einen Punkt-Feature-Layer Ihrer Asset-Standorte, einen Polygon-Feature-Layer Ihrer Sturmspur und einen weiteren Punkt-Layer, der als Alarme oder Ihre gefährdeten Asset-Standorte dient.<\/><P><\/><P><EM><STRONG>Ninja Pro Tipp:<\/><STRONG> Nutzen Sie den <A href="http:\/\/www.arcgis.com\/home\/item.html?id=248e7b5827a34b248647afb012c58787" rel="nofollow noopener noreferrer" target="_blank">Active Hurricane live feed<\/><A> aus Esris Living Atlas als Ihre Sturmspur.<\/><EM></P><PRE class="lia-code-sample line-numbers language-none"><CODE>#assets layer
cellSiteFeatureLayer <span class="operator token">=</span> gis.content.get(<span class="string token">'88b5acd4444343b3bdaea40918d070bf'</span>)
#storm track layer
hurricaneFeatureLayer <span class="operator token">=</span> gis.content.get(<span class="string token">'6c8256c93c0e40debe46d9dcf79d0049'</span>)
#alarms layer
warningsFeatureLayer <span class="operator token">=</span> gis.content.get(<span class="string token">'6f735776f0c246b1ba602a774dbc1b1d'</span>)<span class="line-numbers-rows"><span></span><span></span><span></span><span></span><span></span><span></span></span>
Nächster Schritt: Wir kürzen und löschen vorherige Alarme und gefährdete Assets aus den Alarm-Layern.<\/P>
warningsLayer <span class="operator token">=</span> warningsFeatureLayer.layers[0]
warningsLayer.manager.truncate()<<span class="line-numbers-rows"><span></span><span></span></span>
Anschließend speichern wir die aktuelle Geometrie des Polygon-Layers oder der Sturmspur, welche verwendet wird, um die Assets abzufragen, die darin liegen.<\/P>
hurricaneFeatures <span class="operator token">=</span> hurricaneFeatureLayer.layers[8]
queryHurricane <span class="operator token">=</span> hurricaneFeatures.query(where<span class="operator token">=</span>'1=1')
hurricaneGeometry <span class="operator token">=</span> queryHurricane.features[3].geometry
##print (hurricaneGeometry)
Jetzt verwenden wir die gerade gespeicherte Geometrie als räumlichen Geometriefilter für unsere Abfrage auf dem Asset-Layer.<\/P>
cellSiteFeatures <span class="operator token">=</span> cellSiteFeatureLayer.layers[0]
warningsResult <span class="operator token">=</span> cellSiteFeatures.query(where<span class="operator token">=</span>'1=1', out_fields<span class="operator token">=</span>'SiteID', geometry_filter<span class="operator token">=</span>filters.intersects(hurricaneGeometry))
##print(warningsResult)
Zum Schluss nehmen wir das durch die Abfrage zurückgegebene Feature-Set und fügen die Features dem Alarm-Layer hinzu.<\/P>
warningsLayer.edit_features(adds<warningsResult)
Und das war's. Das Ergebnis sind neue Punktstandorte, die Ihnen zeigen, wo sich Assets innerhalb einer Sturmspur befinden.<\/P>
<\/P>
<\/P>
<\/P>
Patrick Huls<\/STRONG><\/SPAN><\/P>