ArcPy
Cíl cvičení
Seznámení s Python balíčkem ArcPy.
Základní pojmy
- Python Window (
View > Python Window
) - Jupyter Notebook (
Insert > New Notebook
)
Užitečné odkazy:
- Python in ArcGIS Pro
- A quick tour of creating tools with Python
- What is ArcPy?
- ArcGIS API for Python
- Overview of the ArcGIS API for Python
- ArcPy API Reference
- Use ArcPy in a notebook
- ArcGIS API for Python: ArcGIS in a Notebook (video)
Použité datové podklady
Náplň cvičení
Úvod
Otevřte Python Window a vyzkoušejte úryvek kódu níže.
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
obce = arcpy.Describe("ObcePolygony")
len(obce.fields)
pocet = arcpy.GetCount_management("ObcePolygony")
pocet.getOutput(0)
Dokumentace:
Následující úlohy již můžeme řešit v prostředí Jupyter Notebooku.
Vypište typ geoprvků
inputFC = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\ObcePolygony"
shapeType = arcpy.Describe(inputFC).shapeType
print("Shape Type: {}".format(shapeType))
Vypište názvy atributů
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
data = arcpy.Describe("ObcePolygony")
for field in data.fields:
print(field.name)
Vypiště obce, které mají počet obyvatel vyšší než Liberec
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
rows = arcpy.SearchCursor("ObcePolygony", "NAZ_OBEC = 'Liberec'") #vytvori cursor
for row in rows:
pocet = row.POCET_OBYV # pocet obce Liberec
break
rows = arcpy.SearchCursor("ObcePolygony")
for row in rows:
if row.POCET_OBYV is not None and row.POCET_OBYV > pocet:
print("{} - {}".format(row.NAZ_OBEC, int(row.POCET_OBYV)))
Vytvořte soubory ve formátu Esri Shapefile pro jednotlivé kraje
import os
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"
if not os.path.exists(arcpy.env.workspace):
os.makedirs(arcpy.env.workspace)
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\KrajePolygony"
rows = arcpy.SearchCursor(kraje) #vytvori cursor
for row in rows:
nazev = row.KOD_CZNUTS3
print("{}...".format(nazev))
kraje_Select_shp = r"{}\{}".format(arcpy.env.workspace, nazev)
arcpy.analysis.Select(kraje, kraje_Select_shp, "KOD_CZNUTS3 = '{}'".format(nazev))
Vypište souřadnice lomových bodů uzemí obce 'Lhota'
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
obce = "ObcePolygony"
rows = arcpy.SearchCursor(obce, "NAZ_OBEC = 'Lhota'")
for row in rows:
print("Prvek {}: ".format(row.NAZ_OBEC))
for geom in row.SHAPE:
for bod in geom:
print("{} {}".format(bod.X, bod.Y))
Další úlohy k procvičení
- Pro jednotlivé kraje vytvořte třídy prvků ve formátu FileGDB
- Zjistěte, jaká obec v ČR má nejdelší hranici.
- Vytvořte funkci, která vrátí počet obcí s menším počet obyvatel než zadaná obec (jako parametr funkce).