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

Z GeoWikiCZ
(Není zobrazeno 22 mezilehlých verzí od stejného uživatele.)
Řádek 8: Řádek 8:


== Poznámky k systému ArcGIS ==
== Poznámky k systému ArcGIS ==
=== Python Window ===
View {{bullet}} Python Window


{{fig|arcpy|Ukázka interaktivní Python konzole v ArcGIS Pro}}
{{fig|arcpy|Ukázka interaktivní Python konzole v ArcGIS Pro}}


<source lang="python">
<source lang="python">
arcpy.env.workspace = r'C:\work\arccr500\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)
39
pocet = arcpy.GetCount_management('ObcePolygony')
obce = arcpy.GetCount_management('ObcePolygony')
pocet.getOutput(0)
obce.getOutput(0)
'6258'
</source>
</source>
=== Notebook ===
Založeno na open source projektu {{wikipedia|Jupyter}}.
Insert {{bullet}} New Notebook
{{fig|arcgis-pro-notebook|800px|Notebook v prostředí ArcGIS Pro}}
=== Užitečné odkazy ===
* [https://pro.arcgis.com/en/pro-app/arcpy/get-started/installing-python-for-arcgis-pro.htm Python in ArcGIS Pro]
* [https://pro.arcgis.com/en/pro-app/arcpy/get-started/installing-python-for-arcgis-pro.htm Python in ArcGIS Pro]
* [https://pro.arcgis.com/en/pro-app/arcpy/geoprocessing_and_python/a-quick-tour-of-creating-tools-in-python.htm A quick tour of creating tools with Python]
* [https://pro.arcgis.com/en/pro-app/arcpy/geoprocessing_and_python/a-quick-tour-of-creating-tools-in-python.htm A quick tour of creating tools with Python]
Řádek 47: Řádek 60:
<source lang="python">
<source lang="python">
import arcpy
import arcpy
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
   
   
try:
try:
Řádek 53: Řádek 66:
   for i in range(len(data.fields)):
   for i in range(len(data.fields)):
       print(data.fields[i].name)
       print(data.fields[i].name)
except:
except Exception as e:
   print(arcpy.GetMessages())
   print(e)
</source>
 
Tip:
 
1.
<source lang="python">
for field in data.fields:
    print(field.name)
</source>
 
2. Pokud budete skript spouštět mimo notebook, tak použijte
 
<source lang="python">
arcpy.AddMessage()
</source>
</source>


Řádek 76: Řádek 103:
<source lang="python">
<source lang="python">
import arcpy
import arcpy
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"


try:
try:
Řádek 85: Řádek 112:
   rows = arcpy.SearchCursor("ObcePolygony")
   rows = arcpy.SearchCursor("ObcePolygony")
   for row in rows:
   for row in rows:
       if row.POCET_OBYV > pocet:
       if row.POCET_OBYV is not None and row.POCET_OBYV > pocet:
         arcpy.AddMessage("{0} - {1}".format(row.NAZ_OBEC, row.POCET_OBYV))
         print("{0} - {1}".format(row.NAZ_OBEC, row.POCET_OBYV))
except:
except Exception as e:
   print(arcpy.GetMessages())
   print(e)
</source>
</source>


Řádek 100: Řádek 127:
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"
os.makedirs(arcpy.env.workspace)


kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb\KrajePolygony"
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\KrajePolygony"


rows = arcpy.SearchCursor(kraje)  #vytvori cursor
rows = arcpy.SearchCursor(kraje)  #vytvori cursor
for row in rows:
for row in rows:
       nazev = row.KOD_CZNUTS3
       nazev = row.KOD_CZNUTS3
       arcpy.AddMessage("{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))
Řádek 118: Řádek 146:
import arcpy
import arcpy


arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb"
   
   
obce = "ObcePolygony"
obce = "ObcePolygony"
Řádek 135: Řádek 163:
               arcpy.AddMessage("{0} {1}".format(bod.X, bod.Y))
               arcpy.AddMessage("{0} {1}".format(bod.X, bod.Y))
           partnum += 1   
           partnum += 1   
except:
except Exception as e:
   print(arcpy.GetMessages())
   print(e)
</source>
</source>



Verze z 13. 4. 2021, 19:33

Ú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

Užitečné odkazy

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 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:

1.

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

2. Pokud budete skript spouštět mimo notebook, tak použijte

arcpy.AddMessage()

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 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
import arcpy
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"
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'
import arcpy

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)
       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 Exception as e:
   print(e)

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