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

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
(Založena nová stránka s textem „{{GIS}} {{Cvičení|155GIS2|6|Úvod do skriptování v Python}} == Náplň == * [http://geo.fsv.cvut.cz/gdata/2013/pin2/e/dokumentace/dokumentace.pdf Tut…“)
 
 
(Není zobrazeno 87 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
 
{{GIS}}
 
{{GIS}}
{{Cvičení|155GIS2|6|Úvod do skriptování v Python}}
+
{{Cvičení|155GIS2|9|Úvod do skriptování v jazyku Python (arcpy)}}
  
 
== Náplň ==
 
== Náplň ==
  
 +
* [http://geo.fsv.cvut.cz/~gin/pygit2/pyGIT2-01-uvod.pdf Přednáška GIT2]
 
* [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]
 
* [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]
  
 
== Poznámky k systému ArcGIS ==
 
== Poznámky k systému ArcGIS ==
  
=== Odkazy ===
+
{{fig|arcpy|Ukázka interaktivní Python konzole v ArcGIS Pro}}
  
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002z00000001000000.htm What is Python?]
+
<source lang="python">
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002100000017000000.htm What is Python Window?]
+
arcpy.env.workspace = r'C:\work\arccr500\AdministrativniCleneni_v13.gdb'
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002z00000023000000.htm Quick tour of Python]
+
obce = arcpy.Describe('ObcePolygony')
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002100000021000000.htm Writing Python scripts]
+
len (obce.fields)
* [http://www.esri.com/library/fliers/pdfs/python-in-arcgis10.pdf Getting started with Python in ArcGIS 10]
+
39
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v000000v7000000.htm What is ArcPy?]
+
obce = arcpy.GetCount_management('ObcePolygony')
 
+
obce.getOutput(0)
== Poznámky k systému GRASS ==
+
'6258'
 +
</source>
 +
* [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/get-started/what-is-arcpy-.htm What is ArcPy?]
 +
* [https://pro.arcgis.com/en/pro-app/arcpy/get-started/arcgis-api-for-python.htm 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]'''
  
{{freegis|GRASS GIS / Skriptování|Úvod do skriptování}} v jazyce Python v systému GRASS.
+
=== PyCharm ===
  
=== Odkazy ===
+
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 ===
 +
 +
; Výpis názvů atributů
 +
 +
* [https://pro.arcgis.com/en/pro-app/arcpy/data-access/describe.htm Describe]
 +
** [https://pro.arcgis.com/en/pro-app/arcpy/functions/featureclass-properties.htm FeatureClass properties]
 +
** [https://pro.arcgis.com/en/pro-app/arcpy/functions/table-properties.htm Table properties]
 +
 +
<source lang="python">
 +
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())
 +
</source>
 +
 +
=== 2 ===
 +
 +
; Výpis typu geoprvků
  
 
<source lang=python>
 
<source lang=python>
Řádek 34: Řádek 66:
 
inputFC = arcpy.GetParameterAsText(0)
 
inputFC = arcpy.GetParameterAsText(0)
  
arcpy.env.workspace = r"E:\data\ArcCR500\AdministrativniCleneni_v11.gdb"
 
 
shapeType = arcpy.Describe(inputFC).shapeType
 
shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: " + str(shapeType))
+
arcpy.AddMessage("Shape Type: {0}".format(shapeType))
 
</source>
 
</source>
  
=== 2 ===
+
=== 3 ===
 +
 
 +
; Výpis obcí, které mají počet obyvatel vyšší než Liberec
 +
 
 +
<source lang="python">
 +
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())
 +
</source>
 +
 
 +
=== 4 ===
 +
 
 +
; Vytvoření souborů Shapefile pro jednotlivé kraje
 +
 
 +
<source lang="python">
 +
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))
 +
</source>
 +
 
 +
=== 5 ===
 +
 
 +
; Výpis souřadnic lomových bodů uzemí obce 'Lhota'
 +
 
 +
<source lang="python">
 +
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())
 +
</source>
  
 
----
 
----
  
 
''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 7. 5. 2020, 17:34

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

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

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.

Popis dat je k dispozici zde.

V učebně B-870 jdou data nainstalována v adresáři

S:\K155\Public\data\ArcGIS\ArcCR500

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.