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

Z GeoWikiCZ
(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 143 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/gdata/2013/pin2/e/dokumentace/dokumentace.pdf Tutorial Programování v Pythonu pro ArcGIS 10.0 pro začátečníky]
* Přednášky [[155UVIN]]


== Poznámky k systému ArcGIS ==
== Poznámky k systému ArcGIS ==


=== Odkazy ===
=== Python Window ===


* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002z00000001000000.htm What is Python?]
View {{bullet}} Python Window
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002100000017000000.htm What is Python Window?]
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002z00000023000000.htm Quick tour of Python]
* [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002100000021000000.htm Writing Python scripts]
* [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?]


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


{{freegis|GRASS GIS / Skriptování|Úvod do skriptování}} v jazyce Python v systému GRASS.
* [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]


=== Odkazy ===
<syntaxhighlight lang="python">
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)
</syntaxhighlight>
 
=== 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/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]'''
* [https://doc.arcgis.com/en/arcgis-online/reference/use-arcpy-in-your-notebook.htm Use ArcPy in a notebook]
* [https://www.youtube.com/watch?v=FtuHFZUrrMc ArcGIS API for Python: ArcGIS in a Notebook] (video)


== Úlohy ==
== Úlohy ==
Řádek 29: Řádek 51:
=== 1 ===
=== 1 ===


<source lang=python>
; Výpis názvů atributů
import arcpy


inputFC = arcpy.GetParameterAsText(0)
<syntaxhighlight lang="python">
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)
</syntaxhighlight>


arcpy.env.workspace = r"E:\data\ArcCR500\AdministrativniCleneni_v11.gdb"
=== 2 ===
 
; Výpis typu geoprvků
 
<syntaxhighlight lang=python>
inputFC = r"S:\K155\Public\data\ArcGIS\ArcCR500 3.3\AdministrativniCleneni_v13.gdb\ObcePolygony"
shapeType = arcpy.Describe(inputFC).shapeType
shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: " + str(shapeType))
print("Shape Type: {}".format(shapeType))
</source>
</syntaxhighlight>


=== 2 ===
=== 3 ===
 
; Výpis obcí, které mají počet obyvatel vyšší než Liberec
 
<syntaxhighlight lang="python">
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, row.POCET_OBYV))
</syntaxhighlight>
 
=== 4 ===
 
; Vytvoření souborů Shapefile pro jednotlivé kraje
 
<syntaxhighlight lang="python">
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"{}\{}".formar(arcpy.env.workspace, nazev)
    arcpy.analysis.Select(kraje, kraje_Select_shp, "KOD_CZNUTS3 = '{}'".format(nazev))
</syntaxhighlight>
 
=== 5 ===
 
; Výpis souřadnic lomových bodů uzemí obce 'Lhota'
 
<syntaxhighlight lang="python">
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 cast in prvek.SHAPE:
        for bod in cast:
            print("{} {}".format(bod.X, bod.Y))
</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 23. 11. 2023, 08:12

Ú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

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

1

Výpis názvů 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)

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"

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, row.POCET_OBYV))

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("{}...".format(nazev))
    kraje_Select_shp = r"{}\{}".formar(arcpy.env.workspace, nazev)
    arcpy.analysis.Select(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"

rows = arcpy.SearchCursor(obce, "NAZ_OBEC = 'Lhota'")
for row in rows:
    print("Prvek {}: ".format(row.NAZ_OBEC))
    for cast in prvek.SHAPE:
        for bod in cast:
            print("{} {}".format(bod.X, bod.Y))

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