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

Z GeoWikiCZ
(Není zobrazeno 42 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
{{upravit}}
{{GIS}}
{{GIS}}
{{Cvičení|155GIS2|7|Úvod do skriptování v jazyku Python (arcpy)}}
{{Cvičení|155GIS2|9|Úvod do skriptování v jazyku Python (arcpy)}}


== Náplň ==
== Náplň ==
Řádek 8: Řádek 7:


== Poznámky k systému ArcGIS ==
== Poznámky k systému ArcGIS ==
{{fig|arcpy|Ukázka interaktivní Python konzole}}


=== Odkazy ===
=== Odkazy ===
Řádek 17: Řádek 18:
* [http://www.esri.com/library/fliers/pdfs/python-in-arcgis10.pdf Getting started with Python in ArcGIS 10]
* [http://www.esri.com/library/fliers/pdfs/python-in-arcgis10.pdf Getting started with Python in ArcGIS 10]
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v000000v7000000.htm What is ArcPy?]
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v000000v7000000.htm What is ArcPy?]
== Poznámky k systému GRASS ==
{{freegis|GRASS GIS / Skriptování|Úvod do skriptování}} v jazyce Python v systému GRASS.
{{fig|wxgui-launch-ndvi-1|Spuštění skriptu z wxGUI, výpis}}
=== Odkazy ===
* [http://grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html PyGRASS]
* [http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html GRASS GIS Python scripting library]


== Úlohy ==
== Úlohy ==
Řádek 33: Řádek 23:
{{arccr500}}
{{arccr500}}


'''Další úlohy [http://geo102.fsv.cvut.cz/~landa/vyuka/155GIS2/arcpy-ulohy.zip zde]'''.
'''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 typu geoprvků
<source lang=python>
import arcpy
inputFC = arcpy.GetParameterAsText(0)
arcpy.env.workspace = r"E:\data\ArcGIS\ArcCR500\AdministrativniCleneni_v11.gdb"
shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: " + str(shapeType))
</source>
=== 2 ===


; Výpis názvů atributů
; Výpis názvů atributů
Řádek 55: Řádek 31:
<source lang="python">
<source lang="python">
import arcpy
import arcpy
arcpy.env.workspace = r"E:\data\ArcGIS\ArcCR500\AdministrativniCleneni_v11.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
   
   
try:
try:
   data = arcpy.Describe("ObcePolygony")   
   data = arcpy.Describe("ObcePolygony")   
   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:
   print arcpy.GetMessages()
   print arcpy.GetMessages()
</source>
=== 2 ===
; Výpis typu geoprvků
<source lang=python>
import arcpy
inputFC = arcpy.GetParameterAsText(0)
shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: {0}".format(shapeType))
</source>
</source>


Řádek 71: Řádek 60:
<source lang="python">
<source lang="python">
import arcpy
import arcpy
arcpy.env.workspace = r"E:\data\ArcGIS\ArcCR500\AdministrativniCleneni_v11.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"


try:
try:
   rows = arcpy.SearchCursor("ObcePolygony", '"NAZOB" = \'Liberec\'')  #vytvori cursor
   rows = arcpy.SearchCursor("ObcePolygony", "NAZ_OBEC = 'Liberec'")  #vytvori cursor
   for row in rows:
   for row in rows:
       pocet = row.POCET_OBYVATEL # pocet obce Liberec
       pocet = row.POCET_OBYV # pocet obce Liberec
      break
   rows = arcpy.SearchCursor("ObcePolygony")
   rows = arcpy.SearchCursor("ObcePolygony")
   for row in rows:
   for row in rows:
       if (row.OB01 > pocet):
       if row.POCET_OBYV > pocet:
         print "%s - %i" %(row.NAZOB, row.OB01)
         arcpy.AddMessage("{0} - {1}".format(row.NAZ_OBEC, row.POCET_OBYV))
except:
except:
   print arcpy.GetMessages()
   print(arcpy.GetMessages())
</source>
</source>


Řádek 90: Řádek 80:


<source lang="python">
<source lang="python">
import os
import arcpy
import arcpy
arcpy.env.overwiteOutput = True
arcpy.env.overwiteOutput = True
arcpy.env.workspace = "C:/users/landa/smetiste/u04/"
arcpy.env.workspace = r"C:\Users\landamar\Documents\u04"


kraje = "E:\data\ArcGIS\ArcCR500\AdministrativniCleneni_v11.gdb\KrajePolygony"
kraje = r"S:\K155\Public\data\ArcGIS\ArcCR500\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.KODNUTS
       nazev = row.KOD_CZNUTS3
       print "%s..." % nazev
       arcpy.AddMessage("{0}...".format(nazev))
       kraje_Select_shp = arcpy.env.workspace + nazev + ".shp"
       kraje_Select_shp = os.path.join(arcpy.env.workspace, nazev + ".shp")
       arcpy.Select_analysis(kraje, kraje_Select_shp, "\"KODNUTS\" = '"+nazev+"'")
       arcpy.Select_analysis(kraje, kraje_Select_shp, "\"KOD_CZNUTS3\" = '{}'".format(nazev))
</source>
</source>


Řádek 111: Řádek 102:
import arcpy
import arcpy


arcpy.env.workspace = "E:\data\ArcGIS\ArcCR500\AdministrativniCleneni_v11.gdb"
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb"
   
   
obce = "ObcePolygony"
obce = "ObcePolygony"
Řádek 118: Řádek 109:
   data = arcpy.Describe(obce)
   data = arcpy.Describe(obce)
   shapename = data.ShapeFieldName
   shapename = data.ShapeFieldName
   rows = arcpy.SearchCursor(obce, '"NAZOB" = \'Lhota\'')
   rows = arcpy.SearchCursor(obce, '"NAZ_OBEC" = \'Lhota\'')
   for row in rows:
   for row in rows:
       prvek = row.getValue(shapename)
       prvek = row.getValue(shapename)
       print "Prvek %s: " % row.NAZOB
       arcpy.AddMessage("Prvek {0}: ".format(row.NAZ_OBEC))
       partnum = 0
       partnum = 0
       for part in prvek:
       for part in prvek:
           print "Part %i: " % partnum
           arcpy.AddMessage("Part {0}: ".format(partnum))
           for bod in prvek.getPart(partnum):
           for bod in prvek.getPart(partnum):
               print bod.X, bod.Y
               arcpy.AddMessage("{0} {1}".format(bod.X, bod.Y))
           partnum += 1   
           partnum += 1   
except:
except:
   print arcpy.GetMessages()
   print(arcpy.GetMessages())
</source>
</source>



Verze z 18. 4. 2019, 07:50

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

Náplň

Poznámky k systému ArcGIS

Ukázka interaktivní Python konzole

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.

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.overwiteOutput = 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.