155GIS2 / 9. cvičení: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
 
(Není zobrazeno 14 mezilehlých verzí od stejného uživatele.)
Řádek 4: Řádek 4:
 
== Náplň ==
 
== Náplň ==
  
* [http://geo.fsv.cvut.cz/~gin/pygit2/pyGIT2-01-uvod.pdf Přednáška GIT2]
+
* Přednášky [[155GIT1]]
* [http://geo.fsv.cvut.cz/gdata/2013/pin2/e/dokumentace/dokumentace.pdf Tutorial Programování v Pythonu pro ArcGIS 10.0 pro začátečníky]
+
** [https://geo.fsv.cvut.cz/vyuka/155git1/python/git1-python-01-uvod.pdf Úvod do jazyka Python]
 +
** [https://geo.fsv.cvut.cz/vyuka/155git1/python/git1-python-02-algoritmizace-io.pdf Algoritmizace, čtení a zápis souborů]
 +
* [http://geo.fsv.cvut.cz/gdata/2013/pin2/e/dokumentace/dokumentace.pdf Tutorial Programování v Pythonu pro ArcGIS 10.0 pro začátečníky] (studentský projekt)
  
 
== Poznámky k systému ArcGIS ==
 
== Poznámky k systému ArcGIS ==
Řádek 15: Řádek 17:
 
{{fig|arcpy|Ukázka interaktivní Python konzole v ArcGIS Pro}}
 
{{fig|arcpy|Ukázka interaktivní Python konzole v ArcGIS Pro}}
  
<source lang="python">
+
<syntaxhighlight lang="python">
arcpy.env.workspace = r'S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb'
+
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
obce = arcpy.Describe('ObcePolygony')
+
obce = arcpy.Describe("ObcePolygony")
 
len(obce.fields)
 
len(obce.fields)
pocet = arcpy.GetCount_management('ObcePolygony')
+
pocet = arcpy.GetCount_management("ObcePolygony")
 
pocet.getOutput(0)
 
pocet.getOutput(0)
</source>
+
</syntaxhighlight>
  
 
=== Notebook ===  
 
=== Notebook ===  
Řádek 39: Řádek 41:
 
* [https://developers.arcgis.com/python/guide/overview-of-the-arcgis-api-for-python/ Overview of the ArcGIS API for Python]
 
* [https://developers.arcgis.com/python/guide/overview-of-the-arcgis-api-for-python/ Overview of the ArcGIS API for Python]
 
* '''[https://pro.arcgis.com/en/pro-app/arcpy/main/arcgis-pro-arcpy-reference.htm ArcGIS Pro Python reference]'''
 
* '''[https://pro.arcgis.com/en/pro-app/arcpy/main/arcgis-pro-arcpy-reference.htm ArcGIS Pro Python reference]'''
 
+
* [https://doc.arcgis.com/en/arcgis-online/reference/use-arcpy-in-your-notebook.htm Use ArcPy in a notebook]
=== PyCharm ===
+
* [https://www.youtube.com/watch?v=FtuHFZUrrMc ArcGIS API for Python: ArcGIS in a Notebook] (video)
 
 
Cesta k Python interpretu: ''C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe''
 
  
 
== Úlohy ==
 
== Úlohy ==
  
 
{{arccr500}}
 
{{arccr500}}
 
'''Další ukázky skriptů [http://geo102.fsv.cvut.cz/~landa/vyuka/155GIS2/arcpy-ulohy/skripty zde]''' ([http://geo102.fsv.cvut.cz/~landa/vyuka/155GIS2/arcpy-ulohy.zip zip]).
 
  
 
=== 1 ===
 
=== 1 ===
Řádek 58: Řádek 56:
 
** [https://pro.arcgis.com/en/pro-app/arcpy/functions/table-properties.htm Table properties]
 
** [https://pro.arcgis.com/en/pro-app/arcpy/functions/table-properties.htm Table properties]
  
<source lang="python">
+
<syntaxhighlight lang="python">
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
   
 
   
Řádek 67: Řádek 65:
 
except Exception as e:
 
except Exception as e:
 
   print(e)
 
   print(e)
</source>
+
</syntaxhighlight>
  
 
Tip:
 
Tip:
  
<source lang="python">
+
<syntaxhighlight lang="python">
 
for field in data.fields:
 
for field in data.fields:
 
     print(field.name)
 
     print(field.name)
</source>
+
</syntaxhighlight>
  
 
=== 2 ===
 
=== 2 ===
Řádek 80: Řádek 78:
 
; Výpis typu geoprvků
 
; Výpis typu geoprvků
  
<source lang=python>
+
<syntaxhighlight lang=python>
 
inputFC = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\ObcePolygony"
 
inputFC = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\ObcePolygony"
 
shapeType = arcpy.Describe(inputFC).shapeType
 
shapeType = arcpy.Describe(inputFC).shapeType
 
print("Shape Type: {}".format(shapeType))
 
print("Shape Type: {}".format(shapeType))
</source>
+
</syntaxhighlight>
  
 
=== 3 ===
 
=== 3 ===
Řádek 90: Řádek 88:
 
; Výpis obcí, které mají počet obyvatel vyšší než Liberec
 
; Výpis obcí, které mají počet obyvatel vyšší než Liberec
  
<source lang="python">
+
<syntaxhighlight lang="python">
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
  
Řádek 104: Řádek 102:
 
except Exception as e:
 
except Exception as e:
 
   print(e)
 
   print(e)
</source>
+
</syntaxhighlight>
  
 
=== 4 ===
 
=== 4 ===
Řádek 110: Řádek 108:
 
; Vytvoření souborů Shapefile pro jednotlivé kraje
 
; Vytvoření souborů Shapefile pro jednotlivé kraje
  
<source lang="python">
+
<syntaxhighlight lang="python">
 
import os
 
import os
 
arcpy.env.overwriteOutput = True
 
arcpy.env.overwriteOutput = True
 
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"
 
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"
 
if not os.path.exists(arcpy.env.workspace):
 
if not os.path.exists(arcpy.env.workspace):
     os.makedirs()
+
     os.makedirs(arcpy.env.workspace)
  
 
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\KrajePolygony"
 
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\KrajePolygony"
Řádek 124: Řádek 122:
 
     print("{0}...".format(nazev))
 
     print("{0}...".format(nazev))
 
     kraje_Select_shp = os.path.join(arcpy.env.workspace, nazev + ".shp")
 
     kraje_Select_shp = os.path.join(arcpy.env.workspace, nazev + ".shp")
     arcpy.Select_analysis(kraje, kraje_Select_shp, "\"KOD_CZNUTS3\" = '{}'".format(nazev))
+
     arcpy.Select_analysis(kraje, kraje_Select_shp, "KOD_CZNUTS3 = '{}'".format(nazev))
</source>
+
</syntaxhighlight>
  
 
=== 5 ===
 
=== 5 ===
Řádek 131: Řádek 129:
 
; Výpis souřadnic lomových bodů uzemí obce 'Lhota'
 
; Výpis souřadnic lomových bodů uzemí obce 'Lhota'
  
<source lang="python">
+
<syntaxhighlight lang="python">
import arcpy
 
 
 
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
   
 
   
Řádek 139: Řádek 135:
  
 
try:
 
try:
  data = arcpy.Describe(obce)
+
    data = arcpy.Describe(obce)
  shapename = data.ShapeFieldName
+
    shapename = data.ShapeFieldName
  rows = arcpy.SearchCursor(obce, '"NAZ_OBEC" = \'Lhota\'')
+
    rows = arcpy.SearchCursor(obce, "NAZ_OBEC = 'Lhota'")
  for row in rows:
+
    for row in rows:
      prvek = row.getValue(shapename)
+
        prvek = row.getValue(shapename)
      arcpy.AddMessage("Prvek {0}: ".format(row.NAZ_OBEC))
+
        print("Prvek {0}: ".format(row.NAZ_OBEC))
      partnum = 0
+
        # prvek.centroid
      for part in prvek:
+
        partnum = 0
          arcpy.AddMessage("Part {0}: ".format(partnum))
+
        for part in prvek:
          for bod in prvek.getPart(partnum):
+
            print("Part {0}: ".format(partnum))
              arcpy.AddMessage("{0} {1}".format(bod.X, bod.Y))
+
            for bod in prvek.getPart(partnum):
          partnum += 1   
+
                print("{0} {1}".format(bod.X, bod.Y))
 +
            partnum += 1   
 
except Exception as e:
 
except Exception as e:
 
   print(e)
 
   print(e)
</source>
+
</syntaxhighlight>
  
 
----
 
----
  
 
''Další úlohy najdete v cvičení k předmětu [[153GIS2 / 10. cvičení#Úkoly|153GIS2]].''
 
''Další úlohy najdete v cvičení k předmětu [[153GIS2 / 10. cvičení#Úkoly|153GIS2]].''

Aktuální verze z 21. 4. 2021, 18:58

předchozí cvičenístránky předmětudalší cvičení

Úvod do skriptování v jazyku Python (arcpy)

Náplň

Poznámky k systému ArcGIS

Python Window

View • Python Window

Ukázka interaktivní Python konzole v ArcGIS Pro
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)

Notebook

Založeno na open source projektu Jupyter.

Insert • New Notebook

Arcgis-pro-notebook.png

Užitečné odkazy

Ú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.

Popis dat je k dispozici zde.

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).

1

Výpis názvů atributů
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
 
try:
   data = arcpy.Describe("ObcePolygony")   
   for i in range(len(data.fields)):
      print(data.fields[i].name)
except Exception as e:
   print(e)

Tip:

for field in data.fields:
    print(field.name)

2

Výpis typu 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))

3

Výpis obcí, které mají počet obyvatel vyšší než Liberec
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\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 is not None and row.POCET_OBYV > pocet:
         print("{0} - {1}".format(row.NAZ_OBEC, row.POCET_OBYV))
except Exception as e:
   print(e)

4

Vytvoření souborů 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("{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'
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\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)
        print("Prvek {0}: ".format(row.NAZ_OBEC))
        # prvek.centroid
        partnum = 0
        for part in prvek:
            print("Part {0}: ".format(partnum))
            for bod in prvek.getPart(partnum):
                print("{0} {1}".format(bod.X, bod.Y))
            partnum += 1  
except Exception as e:
   print(e)

Další úlohy najdete v cvičení k předmětu 153GIS2.