Inleiding
Bij ESRI Japan organiseren we GIS Community Forum en andere gelegenheden sessies voor ArcPy beginners . Uit enquêtes blijkt dat er soms de wens is om te weten hoe je de referentie moet raadplegen . Om aan deze wens tegemoet te komen, introduceert dit artikel tips om na de ArcPy basis de referentie te lezen.
Dit artikel richt zich op de ArcPy referentiepagina's .
Wie de basis van ArcPy grondig wil leren, kan deze materialen raadplegen. Voor wie van een specialist wil leren, van basis tot gevorderd, raden we aan om trainingen te overwegen.
Waarom is het nodig om de referentie te bekijken?
ArcPy is een bibliotheek waarmee je ArcGIS Pro kunt bedienen en automatiseren met Python. Omdat je direct vanuit geoprocessing tools scripts kunt raadplegen, er veel voorbeeldcode beschikbaar is en er trainingscursussen zijn, kun je soms scripts schrijven zonder de referentie te raadplegen. Maar als je meerdere voorbeelden wilt combineren tot een workflow, fijnmazig wilt aanpassen of als je niet kunt werken met de methode om scripts vanuit ArcGIS Pro te genereren, kan het zijn dat je tekortkomt. In zulke gevallen helpt het lezen van de referentie om deze problemen op te lossen en meer controle over je processen te krijgen.
Uitleg van de schermindeling
De volgende afbeelding toont het startscherm van de ArcGIS Pro Python referentie, oftewel de top pagina van de ArcPy referentie .
Je kunt hier toegang krijgen tot alle inhoud over ArcPy. Voor geoprocessing tools vind je ze via het tabblad Tool Referentie naast het Python tabblad.
Links op de pagina zie je modules ingedeeld per functie, zoals "ArcPy functies" en "ArcPy klassen". Hier volgen enkele veelgebruikte modules.
Data Access module
Bevat klassen en functies voor toegang tot data.De Describe functie en cursors zijn typische voorbeelden.
Mapping module
Wordt gebruikt om projectbestanden (.aprx), kaarten en lagen te bewerken. Wordt vaak gebruikt bij het automatiseren van kaartcreatie en export. Dit is waarschijnlijk de meest bekende module.In tutorials wordt uitgelegd hoe je van het ophalen van een projectbestand tot het exporteren van een gemaakte kaart werkt.
Sharing module
Wordt gebruikt om content vanuit ArcGIS Pro naar ArcGIS Online of ArcGIS Enterprise te uploaden met ArcPy. Hiermee kun je niet alleen kaarten en lagen delen, maar ook tools en services publiceren.
Naast modules en geoprocessing tools zijn er ook diverse klassen en functies beschikbaar. Zie voor details ArcPy klassen en ArcPy functiesを参照してください。 次のセクションからは、ArcPy のツール、関数、クラスのそれぞれのリファレンス ページの読み方を見ていきましょう。
ツール・ クラス・関数のリファレンスの読み方
ツール リファレンスの読み方
ここでは、属性検索ページを一例として見ていきましょう。
ツール リファレンスの場合は以下のような見出しでページが構成されています。
・サマリー
・使用法
・パラメーター
・ダイアログ
・Python
・環境
・ライセンス情報
・関連トピック
ツールの説明についてはサマリーや使用法から確認できます。ArcPy を使う時はパラメーターの Python を確認します。例えば、今回扱うフィーチャのエクスポートでは以下の図のようになっています。
図の番号順に見ていきましょう。まず 1 番の箇所は使い方の構文です。ツールの場合は基本的に「arcpy.ツールボックスのエイリアス名.ツール名(パラメーター)」の形になっています。
次に 2 番の箇所は各パラメーターの名前と説明です。1 番のパラメーターに「{}」がついているものは「(オプション)」と書かれています。これは必要であれば入力するパラメーターに追加します。必要なければ追加する必要がないので省略することで書く量を減らすことができ、スクリプトがよりシンプルになります。
最後に 3 番の箇所はデータ タイプです。どのような種類のデータが必要かを示しています。スクリプトの途中で変数のデータ タイプを探す時は type 関数を使うことができます。
ツールを実行すると戻り値として Result オブジェクトが返ってきます。Result オブジェクトからツールの操作に関する情報を取得することができます。出力やメッセージなどの操作に関する情報を取得したり、別のパラメーターに使うこともできます。
Kolom -Minder onnodige parameters -
Stel dat je bijvoorbeeld een geoprocessing tool attribuut zoeken uitvoert en het resultaat naar het Python-venster stuurt.
De volgende afbeelding toont wat er na uitvoeren in het Python-venster verschijnt.
De gebruikte tool Attribuut zoeken heeft slechts één verplichte parameter: in_layer_or_view. Voor optionele parameters is behalve bij where_clause, alles ingesteld op None of standaardwaarden. Als None of standaardwaarden worden gebruikt, hoef je ze niet te vermelden; dit maakt het script overzichtelijker zoals in onderstaande afbeelding zichtbaar is.
Voorbeeldcode
Als je het Python-tabblad opent, zie je onder parameters voorbeeldcode staan. Er zijn scripts bedoeld voor uitvoering in het Python-venster en standalone scripts. De eerste bevat alleen noodzakelijke parameters waardoor ze goede voorbeelden zijn voor eenvoudige code.
Hoe lees je klasse- en functie-referenties
Klassepagina's bevatten koppen zoals:
- Samenvatting
- Beschrijving
- Eigenschappen
- Overzicht methoden
- Methoden
- Syntax
- Returnwaarde
- Codevoorbeeld
Functiepagina's bevatten koppen zoals:
- Samenvatting
- Beschrijving
- Syntax
- Returnwaarde
- Codevoorbeeld
'{}' betekent optioneel; pas parameters of methodes aan naar behoefte.
'Laten we eens kijken naar een veelgebruikte klasse: ''ArcGISProject klasse''Hier zie je eerst samenvatting en beschrijving gevolgd door eigenschappen met uitleg en datatype per eigenschap. Eigenschappen die zelf klassen zijn linken door naar die pagina's.'
'Daarna volgt uitleg over methodes; eerst een overzicht met namen en korte omschrijvingen, daarna gedetailleerde uitleg per methode in aparte sectie.'
'Aantal codevoorbeelden varieert per klasse of functie; bijvoorbeeld heeft ArcGISProject klasse acht voorbeelden.'
'Wanneer moet je referentie raadplegen - als 'naar Python verzenden' niet werkt -'
'Tot nu toe hebben we structuur van ArcPy referentie bekeken verdeeld in tools en 'klassen & functies'. Bij scriptontwikkeling met ArcPy zul je vaak referentie gebruiken, maar bij gebruik van ArcGIS Pro maken sommigen scripts deels via 'Verzenden naar Python venster' of 'Verzenden naar notebook' vanuit toolgeschiedenis scherm.'
'Deze methode geldt alleen voor tools; commando's zoals symboolinstellingen of export die niet als tool bestaan moet je zelf maken via referentie. Bijvoorbeeld publicatie van feature layers als feature services op ArcGIS Online vereist deels handmatig script via referentie omdat niet alles door tools wordt ondersteund. In volgende hoofdstuk bekijken we als voorbeeld een script om symbolen aan te passen.'
'Laten we een kort script maken terwijl we de referentie raadplegen'
'We willen nu uiterlijk van lagen aanpassen met renderers voor kleurcodering en symbolen om kleuren in te stellen.'
'# lyrs is lijst met lagen, lyr is elk laagobject afzonderlijk'
'for lyr in lyrs:'
' if lyr.name == "放置車両":'
' sym = lyr.symbology'
' sym.updateRenderer("GraduatedColorsRenderer") # geklasseerde kleuren'
' sym.renderer.classificationField = "total" # veldnaam voor classificatie'
sym.renderer.classificationMethod = "Quantile" # Kwantielclassificatie
sym.renderer.breakCount = 5 # Klassen
lyr.symbology = sym
Eerst krijgen we toegang tot de renderer.Layer klasse van de symbology eigenschap om toegang te krijgen tot de renderer.
sym = lyr.symbology
Omdat we deze keer het symbool willen wijzigen,symbology klasse voeren we de updateRenderer-methode uit. Laten we hier even naar de referentie kijken. Deze keer is er één verplichte parameter die je moet kiezen uit een vaste lijst met strings. Omdat we een gekleurde graduatie willen, voeren we "GraduatedColorsRenderer" in. Raadpleeg de lijst onder de afbeelding voor de vijf parameters.
sym.updateRenderer("GraduatedColorsRenderer")
- GraduatedColorsRenderer→ Gekleurde graduatie
- GraduatedSymbolsRenderer→ Graduatiesymbolen
- SimpleRenderer→ Enkel symbool
- UnClassedColorRenderer→Stretch
- UniqueValueRenderer→ Unieke waarden
Vervolgens krijgen we toegang tot de renderer-eigenschap van de symbology-klasse om de inhoud van de renderer te specificeren.
sym.renderer
Hier vinden we het object dat we hebben opgegeven met updateRenderer , namelijk GraduatedColorsRendererオブジェクトを見つけられます。次は . Er zijn veel eigenschappen die je kunt instellen, maar laten we zeggen dat we het veld voor kleurcodering, de classificatiemethode en het aantal klassen willen instellen. Hiervoor stellen we drie eigenschappen in: "classificationField", "classificationMethod" en "classBreaks". Omdat we een kwantielclassificatie willen, stellen we "classificationMethod" in op Quantile. Voor meer informatie over classificatiemethoden, zie Classificatiemethoden voor data.
sym.renderer.classificationField = "total"
sym.renderer.classificationMethod = "Quantile"
sym.renderer.breakCount = 5
Tot slot wijzen we het geconfigureerde symbology-object toe aan de symbology-eigenschap van de Layer-klasse.
lyr.symbology = sym
Op deze manier hebben we een script gemaakt dat symbolen wijzigt door methoden en eigenschappen in te stellen. Hier hebben we "GraduatedColorsRenderer" gebruikt om symbolen te wijzigen via een renderer, maar je kunt ook "SimpleRenderer" gebruiken en via de symbol-eigenschap een enkel symbool instellen.SimpleRenderer kan ook worden gebruikt om een enkel symbool in te stellen via de symbol-eigenschap.
for lyr in lyrs:
if lyr.name == "<Laagnaam>":
sym = lyr.symbology
sym.updateRenderer("SimpleRenderer")
sym.renderer.symbol.applySymbolFromGallery("バス ターミナル")
sym.renderer.symbol.color = {"RGB" : [243,32,41,100]}
sym.renderer.symbol.outlineColor = {"RGB" : [0,0,0,100]}
sym.renderer.symbol.size = 21
lyr.symbology = sym
Als je zo'n symbool in een script wilt maken, moet je de symbol referentie raadplegen tijdens het maken.
Tot slot
In dit artikel hebben we uitgelegd hoe je ArcPy-referenties kunt opzoeken door naar de structuur en het gebruik van referentiepagina's te kijken. Dit kan nuttig zijn bij het aanpassen van voorbeeldcode aan je eigen omgeving of bij het schrijven van nieuwe scripts. We hopen dat dit artikel helpt om drempels voor ArcPy te verlagen.
ArcPy introductie hands-on
Bekijk dit als je ArcPy helemaal wilt leren kennen.
ArcPy blogartikelen vind je hier