155GIS2 / 9. cvičení
Úvod do skriptování v jazyku Python (arcpy)
Náplň
Poznámky k systému ArcGIS
Python Window
View • Python Window
arcpy.env.workspace = r'C:\work\arccr500\AdministrativniCleneni_v13.gdb'
obce = arcpy.Describe('ObcePolygony')
len (obce.fields)
39
obce = arcpy.GetCount_management('ObcePolygony')
obce.getOutput(0)
'6258'
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
- ArcGIS Pro Python reference
PyCharm
Cesta k Python interpretu: C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe
Úlohy
V následujících úlohách budeme, pokud nebude uvedeno jinak, používat data z datové sady ArcCR500. Tato datová sada je poskytovaná firmou ArcData zdarma.
V učebně B-870 jdou data nainstalována v adresáři
S:\K155\Public\data\ArcGIS\ArcCR500 3.3
Přístupová práva k tomu adresáři jsou omezena pouze na čtení! Nelze tedy datové vrstvy z ArcCR500 upravovat (včetně např. vytváření pyramid).
Další ukázky skriptů zde (zip).
1
- Výpis názvů atributů
import arcpy
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
try:
data = arcpy.Describe("ObcePolygony")
for i in range(len(data.fields)):
print(data.fields[i].name)
except:
print(arcpy.GetMessages())
2
- Výpis typu geoprvků
import arcpy
inputFC = arcpy.GetParameterAsText(0)
shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: {0}".format(shapeType))
3
- Výpis obcí, které mají počet obyvatel vyšší než Liberec
import arcpy
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
try:
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 > pocet:
arcpy.AddMessage("{0} - {1}".format(row.NAZ_OBEC, row.POCET_OBYV))
except:
print(arcpy.GetMessages())
4
- Vytvoření souborů Shapefile pro jednotlivé kraje
import os
import arcpy
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb\KrajePolygony"
rows = arcpy.SearchCursor(kraje) #vytvori cursor
for row in rows:
nazev = row.KOD_CZNUTS3
arcpy.AddMessage("{0}...".format(nazev))
kraje_Select_shp = os.path.join(arcpy.env.workspace, nazev + ".shp")
arcpy.Select_analysis(kraje, kraje_Select_shp, "\"KOD_CZNUTS3\" = '{}'".format(nazev))
5
- Výpis souřadnic lomových bodů uzemí obce 'Lhota'
import arcpy
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
obce = "ObcePolygony"
try:
data = arcpy.Describe(obce)
shapename = data.ShapeFieldName
rows = arcpy.SearchCursor(obce, '"NAZ_OBEC" = \'Lhota\'')
for row in rows:
prvek = row.getValue(shapename)
arcpy.AddMessage("Prvek {0}: ".format(row.NAZ_OBEC))
partnum = 0
for part in prvek:
arcpy.AddMessage("Part {0}: ".format(partnum))
for bod in prvek.getPart(partnum):
arcpy.AddMessage("{0} {1}".format(bod.X, bod.Y))
partnum += 1
except:
print(arcpy.GetMessages())
Další úlohy najdete v cvičení k předmětu 153GIS2.