ArcGIS Python API<\/A> en kan handmatig of automatisch worden uitgevoerd vanuit verschillende bronnen, die ik later zal behandelen. Het script vereist ook dat uw assetlocaties zich in een feature layer binnen uw GIS-portal bevinden, samen met een polygon feature layer die wordt gebruikt als stormbaan, en een laag om uw alarmen of kwetsbare assets aan toe te voegen. Het script is hieronder bijgevoegd, maar laten we het eerst opsplitsen.<\/P><\/P>
Importeer eerst de benodigde ArcGIS python-bibliotheken en authenticatie in uw GIS-portal. Aangezien dit script feature layers gebruikt, zullen we voornamelijk de arcgis.features-module gebruiken.<\/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>}Next laden we de feature layers die in het script worden gebruikt. Het script vereist een point feature layer van uw assetlocaties, een polygon feature layer van uw stormbaan en een andere point layer die wordt gebruikt als alarmen of uw kwetsbare assetlocaties.<\/><P><\/><P><EM><STRONG>Ninja Pro Tip:<\/> Maak gebruik van de <A href="http:\/\/www.arcgis.com\/home\/item.html?id=248e7b5827a34b248647afb012c58787" rel="nofollow noopener noreferrer" target="_blank">Active Hurricane live feed<\/> van Esri's Living Atlas als uw stormbaan.<\/><\/>EM></P>
<PRE class=\"lia-code-sample line-numbers language-none\"><CODE>#assets laag
cellSiteFeatureLayer = gis.content.get('88b5acd4444343b3bdaea40918d070bf')
#stormbaan laag
hurricaneFeatureLayer = gis.content.get('6c8256c93c0e40debe46d9dcf79d0049')
#alarm laag
warningsFeatureLayer = gis.content.get('6f735776f0c246b1ba602a774dbc1b1d')<span class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span></span>
Vervolgens trunceren en wissen we eerdere alarmen en kwetsbare assets uit de alarmlagen.<\/>
warningsLayer = warningsFeatureLayer.layers[0]
warningsLayer.manager.truncate()<span class=\"line-numbers-rows\"><span></span><span></span></span>
Daarna slaan we de huidige geometrie van de polygonlaag of stormbaan op, die zal worden gebruikt om de assets te queryen die erin vallen.<\/>
hurricaneFeatures = hurricaneFeatureLayer.layers[8]
queryHurricane = hurricaneFeatures.query(where='1=1')
hurricaneGeometry = queryHurricane.features[3].geometry
##print (hurricaneGeometry)<span class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span></span>
Nu gebruiken we de geometrie die we zojuist hebben opgeslagen als de ruimtelijke geometriefilter voor onze query op de assetlaag.<\/>
cellSiteFeatures = cellSiteFeatureLayer.layers[0]
warningsResult = cellSiteFeatures.query(where='1=1', out_fields='SiteID', geometry_filter=filters.intersects(hurricaneGeometry))
##print(warningsResult)<span class=\"line-numbers-rows\"><span></span><span></span><span></span></span>
Tenslotte nemen we de feature set die door de query is geretourneerd en voegen we de features toe aan de alarmlaag.<\/>
warningsLayer.edit_features(adds=warningsResult)
<span class=\"line-numbers-rows\"><span></span><span></span></span>
En dat is het. Het resultaat zijn nieuwe puntlocaties die u laten zien waar assets binnen een stormbaan vallen.<\/>
The script kan worden uitgevoerd op verschillende locaties, afhankelijk van de ervaring die u voor de eindgebruiker wilt creëren. Hier enkele opties:
- Lokaal in uw eigen IDE
- Binnen