Přeskočit obsah

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:

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:

CO

Python Window

Následující úlohy již můžeme řešit v prostředí Jupyter Notebooku.

CO

Jupyter Notebook

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í

  1. Pro jednotlivé kraje vytvořte třídy prvků ve formátu FileGDB
  2. Zjistěte, jaká obec v ČR má nejdelší hranici.
  3. Vytvořte funkci, která vrátí počet obcí s menším počet obyvatel než zadaná obec (jako parametr funkce).