155GIS2 / 9. cvičení: Porovnání verzí
m (→4) |
m (→5) |
||
(Není zobrazeno 46 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
{{GIS}} | {{GIS}} | ||
{{Cvičení|155GIS2| | {{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?] | ||
== Úlohy == | == Úlohy == | ||
Řádek 33: | Řádek 23: | ||
{{arccr500}} | {{arccr500}} | ||
'''Další | '''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ů | ; Výpis názvů atributů | ||
Řádek 55: | Řádek 31: | ||
<source lang="python"> | <source lang="python"> | ||
import arcpy | import arcpy | ||
arcpy.env.workspace = r" | 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" | arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb" | ||
try: | try: | ||
rows = arcpy.SearchCursor("ObcePolygony", | rows = arcpy.SearchCursor("ObcePolygony", "NAZ_OBEC = 'Liberec'") #vytvori cursor | ||
for row in rows: | for row in rows: | ||
pocet = row. | 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 | if row.POCET_OBYV > pocet: | ||
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: | arcpy.env.workspace = r"C:\Users\landamar\Documents\u04" | ||
kraje = " | 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. | nazev = row.KOD_CZNUTS3 | ||
arcpy.AddMessage("{0}...".format(nazev)) | |||
kraje_Select_shp = arcpy.env.workspace | kraje_Select_shp = os.path.join(arcpy.env.workspace, nazev + ".shp") | ||
arcpy.Select_analysis(kraje, kraje_Select_shp, "\" | arcpy.Select_analysis(kraje, kraje_Select_shp, "\"KOD_CZNUTS3\" = '{}'".format(nazev)) | ||
</source> | </source> | ||
Řádek 109: | Řádek 100: | ||
<source lang="python"> | <source lang="python"> | ||
import arcpy | |||
arcpy.env.workspace = r"S:\K155\Public\data\ArcGIS\ArcCR500\AdministrativniCleneni_v13.gdb" | |||
arcpy.env.workspace = " | |||
obce = "ObcePolygony" | |||
try: | try: | ||
data = arcpy.Describe( | data = arcpy.Describe(obce) | ||
shapename = data.ShapeFieldName | shapename = data.ShapeFieldName | ||
rows = arcpy.SearchCursor( | 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)) | |||
partnum = 0 | partnum = 0 | ||
for part in prvek: | for part in prvek: | ||
arcpy.AddMessage("Part {0}: ".format(partnum)) | |||
for bod in prvek.getPart(partnum): | for bod in prvek.getPart(partnum): | ||
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
Odkazy
- What is Python?
- What is Python Window?
- Quick tour of Python
- Writing Python scripts
- Getting started with Python in ArcGIS 10
- What is ArcPy?
Ú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.