<\/HEAD>We hebben veel verzoeken ontvangen in onze Esri Training-enquête voor meer cursussen over scripting, met name met
Python<\/A>, de voorkeurs-scriptingomgeving voor ArcGIS Desktop. Momenteel hebben we een instructeur-geleide cursus<\/A> en verschillende e-Learning bronnen<\/A> die Python scripting behandelen.
Waarom is er zoveel interesse in scripting? De belangrijkste reden is dat scripts je in staat stellen GIS-werkstromen te automatiseren die tijdrovend zouden zijn om taak voor taak uit te voeren. Stel bijvoorbeeld dat je dagelijks attributen voor duizenden features moet bijwerken. Je kunt een script schrijven om de attributen bij te werken, en het script op een specifiek tijdstip elke dag (of 's nachts na werktijd) laten draaien.
De onderstaande stappen tonen een snelle manier om een Python-script te maken met wat ik de F-C-P-M-T methode noem (dat is Find, Copy, Paste, Modify, Test). Net als ontwikkelaars die voorbeeldcode vinden en aanpassen voor hun eigen doeleinden, kun je voorbeeld Python-scriptcode vinden in de ArcGIS Desktop Help en deze aanpassen aan jouw behoeften. Om de stappen door te nemen, download en unzip de data<\/A>.
De stappen gaan ervan uit dat je ArcGIS 9.3 of 9.3.1, Python 2.5 en PythonWin op je computer of een netwerklocatie hebt geïnstalleerd waar je toegang toe hebt en data kunt schrijven.- Opmerking: <\/STRONG>Als je Python-scripts gaat schrijven, wil je PythonWin hebben, een applicatie die een vriendelijke omgeving biedt voor het maken, testen en debuggen van scripts. PythonWin 2.5.1 is inbegrepen op de ArcGIS 9.3 en 9.3.1 installatiemedium, maar wordt niet standaard geïnstalleerd. Je kunt ook PythonWin versie 2.5.4 krijgen van
http:\/\/www.python.org\/download\/releases\/2.5.4\/<\/A>.<\/LI><\/UL>Het Scenario<\/SPAN><\/STRONG>
Stel dat je werkt in openbare veiligheid voor de stad San Diego en jouw taak is om trolleyhaltes te identificeren die mogelijk geëvacueerd en gesloten moeten worden in geval van een noodsituatie op een nabijgelegen snelweg. Je hebt feature classes die de San Diego snelwegen, trolleylijnen en trolleyhaltes vertegenwoordigen. Je wilt een script schrijven om buffers rond de snelwegen te maken, vervolgens de trolleyhaltes en buffers te overlappen om alle trolleyhaltes die mogelijk getroffen worden in een noodsituatie naar een nieuwe feature class uit te voeren.
Waarom zou je moeite doen om een script te schrijven voor deze vrij eenvoudige GIS-bewerking?Herbruikbaarheid — je kunt snel de bufferafstand wijzigen door het script aan te passen en het script opnieuw uit te voeren om nieuwe buffers te maken.<\/LI>Je kunt het scriptbestand delen met collega's die het script misschien willen gebruiken voor hun eigen doeleinden. Zij kunnen de bufferafstand aanpassen en verschillende feature classes specificeren om data voor hun eigen projecten te creëren, allemaal zonder ooit ArcMap of ArcCatalog te openen.<\/LI>Je kunt het script ook opslaan als een aangepast gereedschap en opnemen in een geoprocessing-model.<\/LI><\/UL>Stap 1: Vind Geoprocessing Tool Script Code<\/SPAN><\/STRONG>Start ArcMap, open een nieuw leeg kaartdocument en toon het ArcToolbox-venster.
<\/A><\/LI>Vouw de Analysis Tools toolbox uit en vervolgens de Proximity toolset.<\/DIV><\/LI>
Klik met de rechtermuisknop op het Buffer-gereedschap en kies Help.<\/DIV><\/LI>
Scroll in het helpvenster naar beneden tot je de sectie Scripting syntax ziet.<\/DIV><\/LI>
Onder de syntax staat een scriptvoorbeeld. Vouw het voorbeeld uit om de code te zien.<\/DIV><\/LI><\/UL>Stap 2: Kopieer/plak voorbeeldcode in een nieuw script<\/SPAN><\/STRONG>Klik op Start > Alle Programma's > Python 2.5 > PythonWin.<\/LI>Kies in het menu Bestand Nieuw > Python Script en klik OK.<\/DIV><\/LI>Met het Script1-venster actief kies je in het menu Bestand Opslaan als en sla je het script op met de naam BufferIntersect.py<\/STRONG> in een lokale map.
<\/A><\/DIV><\/LI>Ga terug naar het ArcGIS Desktop Help-venster, selecteer alle code in het scriptvoorbeeld, klik met rechts op de selectie en kies Kopiëren.<\/DIV><\/LI>
Klik in PythonWin met rechts binnen het BufferIntersect.py-venster en kies Plakken.<\/DIV><\/LI>
Sluit het ArcGIS Desktop Help-venster en navigeer naar Analysis Tools toolbox > Overlay toolset > Intersect tool.<\/DIV><\/LI>
Klik met rechts op het Intersect-gereedschap en kies Help.<\/DIV><\/LI>
Scroll opnieuw naar beneden naar het scriptvoorbeeld, selecteer alle code, klik met rechts op de selectie en kies Kopiëren.<\/DIV><\/LI>
Druk in PythonWin op Enter om naar een nieuwe regel te gaan, klik met rechts en kies Plakken.<\/DIV><\/LI>
Sluit het ArcGIS Desktop Help-venster en minimaliseer ArcMap.<\/DIV><\/LI>
Op dit punt heb je een script gemaakt dat voorbeeldcode bevat waarmee je de twee geoprocessing-gereedschappen kunt uitvoeren die je nodig hebt voor jouw project. Omdat je de voorbeelden hebt gecombineerd, bevat jouw script wat extra code die je niet nodig hebt, plus natuurlijk verwijst de voorbeeldcode naar data die jij niet hebt. Het eerste wat je moet doen is de code bekijken en dubbele regels verwijderen.
Stap 3: Pas de code aan aan jouw behoeften<\/><\/>
Python-scripts die ArcGIS-geoprocessing-functionaliteit bevatten beginnen met deze twee regels code:
In het scriptvenster zie je deze code helemaal bovenaan het eerste voorbeeld staan en opnieuw in het tweede voorbeeld dat begint met een commentaarregel die uitlegt wat het doel van de code is. Het opnemen van commentaarregels in een script is goede praktijk zodat anderen kunnen begrijpen wat de code doet. In Python worden commentaarregels weergegeven in groene cursieve tekst en worden ze altijd voorafgegaan door een hekje (#). Wanneer het script wordt uitgevoerd worden commentaarregels genegeerd.

Voeg als eerste regel in het script een commentaarregel toe met Date Created.
Bewerk in gp.workspace-regel het pad zodat dit overeenkomt met waar je de San Diego geodatabase hebt opgeslagen. Let op: Python is hoofdlettergevoelig.
De regel gp.toolbox = "analysis"betekent dat de geoprocessing-gereedschappen waarnaar verwezen wordt zich bevinden in de Analysis toolbox. Dit geldt ook voor jouw project dus hoef je dit niet aan te passen.
Selecteer en verwijder vervolgens de tweede (dubbele) regels waarin opnieuw wordt geïmporteerd vanuit ArcGIS scripting module en waarin opnieuw Geoprocessor-object wordt aangemaakt.
Stap 3a: Pas code aan voor Buffer Tool<\/>
Het voorbeeldcodefragment voor buffer tool bevat alle zeven parameters die door dit gereedschap worden geaccepteerd. Alleen de eerste drie parameters zijn verplicht (input feature class, output feature class, buffer afstand).
Voor dit project heb je alleen verplichte parameters nodig. Let erop dat parameters gescheiden worden door komma's in Python.
In voorbeeldcode is bufferafstand als string opgegeven (tussen aanhalingstekens). Voor dit project ga je expliciet numerieke afstand invoeren. alt="Klik om te vergroten" width="222" height="70" align="right" border="0" __migration_unknown="true" "/><\/A>
Nadat een moment verstreken is, zou je in het Interactive Window de print-statements moeten zien die je hebt ingevoerd.
Als je script niet correct draait, vergelijk dan zorgvuldig je code met de code die wordt getoond in het laatste plaatje van stap 3, breng eventuele correcties aan, sla op en voer het script opnieuw uit. Let er echter op dat als het buffer-gedeelte bij de eerste keer correct draaide maar de intersect niet, en je voert het script opnieuw uit, je een foutmelding krijgt omdat de buffer-output al bestaat in de geodatabase. Oplossing? Gebruik ArcCatalog om de buffer-output (Freeways_Buffer) te verwijderen, voer daarna het script opnieuw uit.<\/DIV></\/LI></\/UL>Als je wilt, kun je verifiëren dat de data is aangemaakt met behulp van ArcMap.

In ArcMap klik op de Add Data-knop, navigeer naar de locatie waar de data is weggeschreven, en voeg vervolgens Freeway_Buffers en StopsNearFreeways feature classes toe.<\/DIV ><\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> \n
Verken desgewenst de data. Als je klaar bent, sluit ArcMap en PythonWin af.<\/>< / DIV >< / LI >< / UL >
Wil je meer leren? < / STRONG >
Dit was uiteraard een zeer eenvoudige scripting-oefening bedoeld om te laten zien hoe je voorbeeld Python-code kunt vinden en combineren om een script te maken dat iets doet wat jij moet doen. Om robuuste scripts te maken moet je echter tijd investeren in het leren van Python-concepten en syntaxis.
< LI >< DIV >De trainingsopties die hierboven zijn gelinkt brengen je goed op weg om een scriptmeester te worden.< / DIV >< / LI >
< LI >< DIV >Een paar aanbevolen boeken voor beginners zijn Learning Python, 3e editie (door Mark Lutz) en Core Python Programming, 2e editie (door Wesley Chun). Er zijn echter veel boeken geschreven. Eén ervan zal zeker bij jou passen.< / DIV >< / LI >
< / UL >
< / BODY >< / HTML >