Bekijk het Python Tips and Tricks for ArcGIS trainingsseminar waar @DerekNelson1 en ik tientallen strategieën laten zien om je te helpen repetitieve taken en complexe workflows te automatiseren.
Kijk eerst rond voor bestaande oplossingen voordat je vanaf nul begint.
De kans is groot dat iemand anders een vergelijkbaar probleem heeft gehad en een Python-module heeft gemaakt die je kunt gebruiken om het probleem op te lossen.
ArcPy is voor de soorten taken die je in ArcGIS Pro zou doen.
Als je geoprocessingstaken wilt automatiseren of wilt werken met lokale bestanden en databases, heeft de ArcPy-bibliotheek Python-functies die de dingen repliceren die je handmatig kunt doen in de grafische gebruikersinterface.
De ArcGIS API for Python is voor de soorten taken die je in je portal zou doen.
Het automatiseren van het beheer van gebruikers, groepen en inhoud in je ArcGIS Online- of ArcGIS Enterprise-portal is een uitstekend gebruiksvoorbeeld voor de ArcGIS API for Python. De Python API heeft ook tools voor het maken van een Spatially Enabled DataFrame van lokale gegevens of feature services. Dit is een uitbreiding van een Pandas DataFrame, dus het heeft alle kracht van Pandas tabulaire gegevensmanipulatie naast ruimtelijke eigenschappen en methoden voor het verwerken van geografische gegevens.
Notebooks zijn geweldig voor lesgeven, delen en verhalen vertellen met code.
De mogelijkheid om code op te delen in cellen, markdown toe te voegen om de code uit te leggen, en de uitvoer in het notebook op te nemen, maakt ze krachtige hulpmiddelen om je code iteratief te verbeteren en anderen te helpen de context en het belang van het werk in het notebook te begrijpen.
Een IDE heeft krachtige tools om het schrijven van code gemakkelijker te maken.
Een geïntegreerde ontwikkelomgeving zoals PyCharm of VS Code bevat geavanceerde debugtools, fout- en waarschuwingsdetectie, geautomatiseerde linting en handige code-aanvultools om het schrijven van veel code gemakkelijker te maken. Het wordt zelfs steeds gebruikelijker dat IDE's AI-codeassistenten integreren om de ontwikkeling verder te versnellen.
Het beheren van een Python-omgeving is moeilijk. Verwacht uitdagingen tegen te komen.
Elke module in een Python-omgeving moet compatibel zijn met elke andere omgeving. Het kan gemakkelijk zijn om per ongeluk je omgeving op subtiele manieren kapot te maken.
Gebruik de standaard Python-omgeving van ArcGIS Pro om uitdagingen te minimaliseren.
Gelukkig heeft de arcgispro-py3-omgeving die bij ArcGIS Pro wordt geleverd een set pakketten samengesteld door Esri-ontwikkelaars met de bibliotheken die je nodig hebt voor de overgrote meerderheid van GIS-taken. Omdat je deze standaardomgeving niet kunt wijzigen, heb je altijd ten minste één werkende Python-omgeving als je met ArcGIS Pro werkt.
Kloon de standaardomgeving om een aangepaste omgeving te maken.
Voor die gevallen waarin je extra bibliotheken nodig hebt die niet zijn opgenomen in arcgispro-py3, kun je de standaardomgeving klonen en die bibliotheken toevoegen via de Package Manager in het Project-tabblad van ArcGIS Pro. Je hebt toegang tot duizenden Python-bibliotheken via conda die je vanuit de interface kunt installeren.
Gebruik conda voor geavanceerd omgevingsbeheer. Vermijd pip indien mogelijk.
Sommige geavanceerde taken vereisen complexer omgevingsbeheer dan via de ArcGIS Pro-interface kan worden gedaan. Je kunt conda openen vanuit de opdrachtprompt voor die taken, zoals het specificeren van een bepaald kanaal waaruit een pakket moet worden gehaald, of het exporteren van je omgeving als tekstbestand. Hoewel het mogelijk is pakketten met pip te installeren, loop je het risico incompatibele pakketten te installeren omdat pip niet alle afhankelijkheden in je omgeving volledig oplost. Soms moet je pip gebruiken als een pakket dat je nodig hebt niet beschikbaar is in een conda-kanaal, maar het is beter dit zo veel mogelijk te vermijden.
Wees bewust van pakket-/bibliotheekafhankelijkheden en licenties vermeld in Package Manager.
De Package Manager helpt je afhankelijkheden voor al je geïnstalleerde bibliotheken te identificeren. Het linkt ook naar de licentie voor alle pakketten die beschikbaar zijn voor installatie, zodat je zeker weet dat de licentievoorwaarden compatibel zijn met jouw gebruikssituatie.
Verzend naar Python-venster/Notebook.
Je kunt een tool uit het Geoprocessing-paneel slepen naar het Python-venster om de juiste syntaxis voor de tool te krijgen. In recente versies van ArcGIS Pro kun je deze ook slepen naar een ArcGIS Notebook.
Maak gebruik van bestaande bronnen zoals ModelBuilder-modellen.
Als je al een model hebt dat een taak uitvoert, hoef je dit niet opnieuw vanaf nul te schrijven om het in een Python-script te gebruiken. Je kunt het model aanroepen als een geoprocessing-tool in je script. Je hebt ook de optie om ArcGIS Pro je model als Python-code te laten exporteren.
Controleer of bestanden en feature classes bestaan voordat je code erop uitvoert.
De Exists-functie test of een bepaald data-object daadwerkelijk bestaat of niet. Als dat niet zo is, kun je sommige code overslaan. Strategieën voor vroege returns helpen je code sneller uit te voeren.
Controleer of rijen/waarden bestaan voordat uitvoering plaatsvindt.
Zelfs als een data-object bestaat, kan het lege gegevens bevatten. Je kunt de GetCount-functie gebruiken om vast te stellen of een tabel leeg is en zo nodig code-uitvoering overslaan.
Parameteriseer modelelementen om gebruikersinvoer toe te staan.
Modellen met parameters zijn gemakkelijker op te nemen in een script omdat je programmatisch verschillende invoerwaarden voor hun parameters kunt invoegen.
Kopieer Python-opdracht vanuit de grafische gebruikersinterface in ArcGIS Pro.
Wanneer je een tool opent in het Geoprocessing-paneel, staat er naast de knop Uitvoeren een klein pijltje omhoog. Een van de opties is Kopieer Python-opdracht. Dit kopieert een Python-fragment dat de parameters vertegenwoordigt die nodig zijn om dezelfde parameters na te bootsen die jij hebt ingevuld in de gebruikersinterface. Dit is onze meest impactvolle tip voor gebruikers die bekend zijn met geoprocessingtaken in ArcGIS Pro maar nieuw zijn met Python. Je ziet zo de overeenkomst tussen de parameters die je koos in de bekende interface en de waarden die als argumenten aan de Python-functie worden doorgegeven. Naast het verkrijgen van een kopie van de Python-opdracht vanuit het Geoprocessing-paneel kun je ook met rechts klikken op elk item in je Geoprocessing History en hetzelfde fragment krijgen.
Gebruik Pad kopiëren in de ArcGIS Pro UI.
Bestandspaden zijn lastig om te typen en fouten liggen op de loer. In het Catalogus-paneel van ArcGIS Pro kun je met rechts klikken op een data-object en Pad kopiëren kiezen zodat je dit niet zelf hoeft te typen.
Controleer regelmatig of je code verwachte resultaten oplevert terwijl je bouwt.
Je wilt geen uren besteden aan coderen zonder tussentijds te controleren of het daadwerkelijk werkt. Hoe meer code er tussen tests staat, hoe meer code je moet controleren op fouten wanneer het onvermijdelijk faalt. Regelmatige controles helpen problematische code vroegtijdig identificeren.
Seaborn is geweldig voor grafieken/diagrammen.
Grafische visualisaties kunnen jou (en anderen) helpen jouw data beter te begrijpen. Seaborn is een goede bibliotheek voor het maken van deze visualisaties, en wanneer je deze uitvoert in een notebook zie je direct output samen met jouw code.
import seaborn as sns
# Woordenboek met waarden
cryptid_data = {
"Lochness Monster":LochnessMonsterCount,
"Chupacabra":ChupacabraCount,
"Bigfoot":BigfootCount
}
# Staafdiagram uit woordenboek
cryptid_plot = sns.barplot(
x=list(cryptid_data.keys()),
y=list(cryptid_data.values())
)
Zet nooit logingegevens in je code.
Dit is een groot beveiligingsrisico. De ArcGIS API for Python stelt je in staat gebruik te maken van de logingegevens van jouw omgeving als je werkt in ArcGIS Pro, Notebook Server of ArcGIS Online. Notebook. Je kunt ook profielen gebruiken, die gebruikmaken van de geheimenbeheerhulpmiddelen van je besturingssysteem, of PKI die beveiligingscertificaten gebruikt. Bekijk de Working with different authentication schemes documentatie voor details.<\/P>
Notebooks hebben rijke output die afbeeldingen, hyperlinks en opgemaakte tekst kan bevatten.<\/STRONG><\/P>Dit is een deel van wat een notebook zo geweldig maakt voor lesgeven en delen. De rijke output helpt mensen beter te begrijpen wat de resultaten zijn van het werk dat je in je code hebt gedaan.<\/P>Gebruik extra parameters om je zoekopdracht in de ArcGIS API for Python te verfijnen.<\/STRONG><\/P>De search-methode van de ContentManager kan zoeken op categorieën of item_type of via een query op een aantal velden. Je kunt enkele voorbeeldqueries zien in dit kennisbankartikel.<\/P>Ken betekenisvolle variabelenamen toe aan de objecten waarmee je werkt.<\/STRONG><\/P>Het toewijzen van variabelenamen stelt je in staat om gebruik te maken van waarden die je creëert. Het geven van betekenisvolle namen helpt je te begrijpen wat die waarden betekenen. <\/P> <\/P>x = 2405<\/code><\/pre> <\/P>Betekent eigenlijk niets.<\/P> <\/P>population = 2405<\/code><\/pre> <\/P>Biedt de relevante context voor de waarde binnen het script.<\/P>Wees je bewust van het specifieke type object waarmee je werkt.<\/STRONG><\/P>Verschillende objecten hebben verschillende eigenschappen en methoden. Het is gemakkelijk om in de war te raken met vergelijkbare typen objecten, zoals FeatureLayerCollection, FeatureLayer, en FeatureSet. Gebruik typecontrole om te bevestigen waarmee je werkt, en raadpleeg de documentatie om te controleren wat je met een bepaald object kunt doen.<\/P>Zoek op 22arcpy <ding dat je probeert te doen>22.<\/STRONG><\/P>Zoekmachines zoals Google en Bing geven bijna altijd de juiste documentatie terug in de eerste paar zoekresultaten. Resultaten van Esri Community en Stack Exchange zijn ook vaak waardevolle bronnen omdat ze afkomstig zijn van mensen die vragen stellen. Er is een zeer grote kans dat iemand anders al dezelfde vraag heeft gesteld als jij, en je kunt zien wat voor hen werkte.<\/P>De docs zijn je beste vriend<\/STRONG><\/P>Niemand onthoudt al deze dingen. De allerbelangrijkste vaardigheid die je kunt ontwikkelen is vertrouwdheid met de documentatie. Gebruik de voorbeeldcode om te zien hoe verschillende functies en objecten werken.<\/P>Gebruik sleutelwoord argumenten in plaats van alleen positionele argumenten.<\/STRONG><\/P>Het gebruik van sleutelwoorden bij het aanroepen van functies, in plaats van alleen te vertrouwen op de volgorde van argumenten, maakt je code leesbaarder. Het stelt je in staat om sommige optionele parameters over te slaan en maakt het duidelijker voor mensen die later je code lezen waarvoor de verschillende waarden zijn.<\/P>Gebruik help() of ?<\/STRONG><\/P>Geef een object door aan de help-functie om toegang te krijgen tot de documentatie voor die functie zonder je ontwikkelomgeving te hoeven verlaten. Dat vermindert de cognitieve belasting van contextwisselingen en maakt het makkelijker om weer verder te gaan met coderen. In een notebook-omgeving kun je ook een ? achter een object plaatsen om mooi geformatteerde documentatie te krijgen.<\/P>Gebruik lijsten en lussen om gegevens batchgewijs te verwerken.<\/STRONG><\/P>ArcPy heeft verschillende lijstfuncties zoals ListWorkspaces of ListFiles die automatisch lijsten genereren van data-objecten. Zodra je een lijst hebt, kun je over alle items in die lijst itereren om een taak uit te voeren.<\/P> <\/P># Stel de werkruimte in
arcpy.env.workspace = r"C:\Input_Data"
# Lijst alle file geodatabases in die werkruimte
fgdbs = arcpy.ListWorkspaces(workspace_type="FileGDB")
# Voer het model uit voor elke file geodatabase in de werkruimte
for gdb in fgdbs:
arcpy.PythonTipsandTricksatbx.Model1(Database=gdb)<\/code><\/pre> <\/P>Plan periodieke taken<\/STRONG><\/P>Als een proces elke maand, week of zelfs elke minuut moet worden uitgevoerd, kun je die taak plannen. Lokale tools kunnen gepland worden vanuit de ArcGIS Pro-interface. Je kunt ook notebooks plannen die draaien in ArcGIS Notebook Server of in ArcGIS Online.<\/P>Stel omgevingsvariabelen in om te bepalen hoe arcpy geoprocessing tools werken<\/STRONG><\/P>Als je een werkruimte moet instellen, ervoor wilt zorgen dat uitvoer kan worden overschreven, een uitvoer ruimtelijke referentie wilt specificeren of een andere geoprocessing-omgevingsvariabele wilt instellen, kun je deze declareren met behulp van de env klasse in ArcPy. Niet elke tool respecteert elke omgevingsvariabele, dus zorg ervoor dat je de specifieke documentatie voor die tool controleert om te zien welke omgevingen worden ondersteund.<\/P>Gebruik variabelen voor bestandslocaties, codeer ze niet hard in functieparameters.<\/STRONG><\/P>Bestandspaden zijn lang, moeilijk leesbaar en weerspiegelen vaak niet het doel of de betekenis van de gegevens die ze vertegenwoordigen. Door ze toe te wijzen aan variabelenamen kun je verwijzingen naar gegevens op het pad vereenvoudigen en geef je de gegevens een naam die de juiste context biedt.<\/P>Gebruik de Describe-functie om informatie over een data-element te krijgen.<\/STRONG><\/P>In de gebruikersinterface kun je meestal met rechts klikken op een data-element en Eigenschappen selecteren als je er meer over wilt weten. In een script kun je nergens met rechts klikken. De Describe-functie kan een object maken dat alle eigenschappen van dat data-element bevat. Je kunt die eigenschappen benaderen en gebruiken in je script. <\/P> <\/P>import pandas as pd
import arcpy
# ArcPy tools respecteren de werkruimte-omgeving, maar pandas niet
# Gebruik Describe om het volledige bestandspad van een element op te halen
arcpy.env.workspace = r"C:\Data"
delays = "AA_delays_jan_2023.csv"
desc = arcpy.Describe(delays)
delays_df = pd.read_csv(desc.catalogPath)<\/code><\/pre> <\/P>Gebruik de pandas-bibliotheek voor tabulaire gegevensmanipulatie.<\/STRONG><\/P>Tabellen of feature classes laden in een pandas DataFrame stelt je in staat krachtige hulpmiddelen uit die bibliotheek te gebruiken om gegevens schoon te maken, samen te vatten, groeperen en aggregeren (en meer!). De Spatially Enabled DataFrame-extensie voor pandas gemaakt door de ArcGIS API for Python laat je standaard pandas-hulpmiddelen combineren met extra ruimtelijke functionaliteit voor geografische gegevens.<\/P> <\/P>delays_df.fillna(0, inplace=True)
airport_group = delays_df.groupby(['ORIGIN_AIRPORT_SEQ_ID'])
delays_by_airport_df = airport_group.agg({'WEATHER_DELAY': 'mean'})<\/code><\/pre> <\/P>Koppel niet-ruimtelijke gegevens aan ruimtelijke gegevens om gebruik te maken van ruimtelijke analysetools.<\/STRONG><\/P>Datasets waarmee je werkt zijn vaak impliciet ruimtelijk, maar hebben geen daadwerkelijke geometrie. Bijvoorbeeld gegevens over een bekende locatie of gegevens met adressen in plaats van coördinaten. Je kunt deze datasets opnemen in je ruimtelijke analyse als je ze kunt koppelen aan geometrieën voor die locaties met hulpmiddelen zoals Join, Spatial Join of Geocoding. Als je een Spatially Enabled DataFrame hebt, kun je de merge-functie in pandas gebruiken om ruimtelijke en niet-ruimtelijke gegevens samen te voegen tot een nieuwe Spatially Enabled DataFrame.<\/P> <\/P>airports_sdf = pd.DataFrame.spatial.from_featureclass(airports_fc)
airport_delays_sdf = airports_sdf.merge(
right=delays_by_airport_df,
how='inner',
left_on='AIRPORT_SEQ_ID',
right_on='ORIGIN_AIRPORT_SEQ_ID'
)<\/code>
<\/
>P<\
>P<\
>S<\
>T<\
>R<\
>N<\
>G<\
>>Spatially Enabled DataFrames kunnen inputs zijn voor veel geoprocessing tools.<\
/P>
Terwijl een DataFrame geen feature class is, kun je het behandelen als een feature class voor veel tools. Dat is handig omdat je het DataFrame niet hoeft te exporteren naar een nieuw formaat alleen maar om extra verwerking uit te voeren. <\
/P>
<\
/P>
# Spatially join a DataFrame to a feature class
arcpy.analysis.SpatialJoin(
airport_delays_sdf,
climate_data,
delays_by_airport_weather,
match_option=\"CLOSEST\"
)<\
/code>
<\
/P>
Gebruik variabelen om het gemakkelijker om geoprocessingtools aan elkaar te koppelen.<\/STRONG><\/P>Bij complexe analyses wil je vaak de uitvoer van het ene gereedschap als invoer voor een ander gereedschap gebruiken. Variabelen maken het makkelijker om flexibele code te schrijven, omdat je de waarde van de variabele kunt wijzigen zonder alle geoprocessingtoolcode die je hebt geschreven te hoeven aanpassen. <\/P> <\/P># Ruimtelijk samenvoegen van een DataFrame met een feature class
arcpy.analysis.SpatialJoin(
airport_delays_sdf,
climate_data,
delays_by_airport_weather,
match_option="CLOSEST"
)
# Uitvoer van Spatial Join doorgeven als invoer aan GLR
arcpy.GeneralizedLinearRegression_stats(
in_features=delays_by_airport_weather,
dependent_variable="WEATHER_DELAY",
explanatory_variables= ["Mean_T_f_01_Jan", "Mean_mmPr_01_Jan"]
model_type="CONTINUOUS",
output_features=delay_climate_glr",
)<\/code><\/pre> <\/P>Gebruik variabelen om het makkelijker te maken om te itereren of te experimenteren met parameterwaarden.<\/STRONG><\/P>Vaak wil je bij een complexe taak verschillende waarden voor sommige parameters proberen. Of je wilt die parameters door de gebruiker laten definiëren zodat het script met verschillende gebruikersinvoer kan omgaan. Het hardcoderen van de waarden in de parameters maakt dat lastiger. Het toewijzen van variabelen aan die waarden en ze uit de functieroep halen maakt het makkelijker.<\/P> <\/P># Waarden uit de functieroep halen
dependent_variable = "WEATHER_DELAY"
explanatory_variables = [
"Mean_T_f_01_Jan",
"Mean_mmPr_01_Jan"
]
arcpy.GeneralizedLinearRegression_stats(
in_features=delays_by_airport_weather,
dependent_variable=dependent_variable,
explanatory_variables= explanatory_variables
model_type="CONTINUOUS",
output_features=delay_climate_glr
)<\/code><\/pre> <\/P>Leer de productiviteits-sneltoetsen van je ontwikkelomgeving kennen<\/STRONG><\/P>Je bent waarschijnlijk bekend met tools zoals ctrl+c om te kopiëren of ctrl+z om ongedaan te maken. Verschillende ontwikkelomgevingen hebben ook hun eigen sneltoetsen en macro's die je productiever maken. Het kan even duren om deze sneltoetsen te leren, maar hoe meer code je schrijft, hoe meer tijd je uiteindelijk bespaart door ze te kennen. In een notebook-omgeving kun je op het commandopalet aan de rechterkant van de werkbalk klikken om alle sneltoetsen te zien.<\/P>Als je een frustrerende fout krijgt, neem dan even pauze.<\/STRONG><\/P>De beste debugstrategie is veruit een pauze. Maak een wandeling. Drink wat water. Werk aan iets anders. Ga naar bed. Als je terugkomt bij het probleem, heb je vaak een ander perspectief waardoor je het probleem kunt oplossen. Als je boos of gefrustreerd raakt, weet je dat het tijd is voor een pauze.<\/P>Zoek een maatje om je te helpen.<\/STRONG><\/P>De op één na beste debugstrategie is om hulp te vragen. Probeer eerst zelf het probleem op te lossen, maar houd het probleem niet voor altijd voor jezelf. Soms ziet een maatje heel snel een probleem dat jij niet zag. En als jouw maatje een probleem heeft, kan die bij jou aankloppen voor hulp.<\/P>Begin onderaan het foutbericht.<\/STRONG><\/P>Een foutmelding is geen roman. Lees hem niet van begin tot eind voor de lol. Het is een mysterie-roman. Spring naar het einde om de dader te vinden. De laatste paar regels in een foutmelding zijn waarschijnlijk het meest nuttig.<\/P>Succes bij debuggen betekent dat je een andere fout krijgt dan daarvoor.<\/STRONG><\/P>Dit is een belangrijke tip om je emotionele toestand tijdens een debug-sessie te beheersen. Als je succes definieert als perfecte code krijgen, zul je nooit winnen. Want code die iets interessants doet is altijd onvolmaakt. Maar als je succes ziet als stapsgewijs dichter bij perfectie komen, zul je onderweg veel successen ervaren. <\/P>Gebruik printstatements om waarden en datatypes te controleren.<\/STRONG><\/P>Python-variabelen kunnen waarden en zelfs datatypes veranderen. Dat maakt het extreem flexibel, maar die flexibiliteit is ook de bron van veel fouten. De eenvoudigste manier om te controleren of een variabele de juiste waarde of type heeft, is door deze af te drukken.<\/P> <\/P># Print de waarde van csv_list om zeker te zijn dat deze correct is
arcpy.env.workspace = r"C:\LTS"
csv_list = arcpy.ListFiles("*.csv")
print(csv_list)<\/code><\/pre> <\/P>Onjuiste bestands-paden zijn een veelvoorkomende oorzaak van fouten.<\/STRONG><\/P>Kopiëren/plakken van bestands-paden kan problemen helpen voorkomen die ontstaan door typefouten in bestands-paden. Maar je kunt nog steeds het verkeerde pad kopiëren. Of iemand anders die jouw script gebruikt heeft misschien de data niet op hetzelfde pad staan dat jij hardcoded hebt in het script. Als er problemen zijn met toegang tot of laden van data, moet het bestands-pad tot de eerste dingen behoren die je controleert.<\/P>Typfouten zijn een andere veelvoorkomende oorzaak van fouten.<\/STRONG><\/P>Het grappige aan het menselijk brein is dat je weet wat je bedoelde te typen, dus zie je wat je bedoelde te typen en niet wat je daadwerkelijk getypt hebt. Bestands-paden, lange functienamen of speciale tekens zijn vaak bronnen van typfouten. Typfouten vinden is echt een goede reden om hulp van een maatje in te schakelen, want zij zien alleen wat er daadwerkelijk getypt is.<\/P>Code-completion kan helpen typfouten voorkomen.<\/STRONG><\/P>Een IDE heeft geavanceerde code-completion tools die kunnen helpen de juiste functie- of parameternaam te vinden. Het bespaart niet alleen tijd om veel gebruik te maken van auto-complete, maar vermindert ook drastisch het risico op verkeerde invoer. Deze code-completion tools zijn één van de eerste dingen die je moet oefenen om optimaal gebruik te maken van je ontwikkelomgeving.<\/P>Python vult jouw vakinhoudelijke expertise aan. Het vervangt die niet.<\/STRONG><\/P>Perfecte code die zonder fouten draait maar het verkeerde probleem oplost is waardeloos. Jouw vakinhoudelijke expertise in klimatologie, demografie, transport of elk ander domein dat ruimtelijke data gebruikt is enorm belangrijk. Python is een extra hulpmiddel waarmee je de waarde van die expertise kunt vermenigvuldigen.<\/P>Aanvullende bronnen<\/STRONG><\/P>Voor verdere Python-training kun je Esri's cursus Creating Python Scripts for ArcGIS bekijken: https:\/\/go.esri.com\/python-course<\/A>.<\/SPAN><\/SPAN><\/LI>Stel vragen en beantwoord ze in de Esri Communities voor Python\ArcPy<\/A> en de ArcGIS API for Python<\/A>.
(Let op: "Python", "ArcPy", "ArcGIS API for Python" blijven onvertaald volgens instructies.)