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

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
 
(Není zobrazeno 35 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
 
{{upravit}}
 
{{upravit}}
 
{{GIS}}
 
{{GIS}}
{{Cvičení|155GIS2|10|Pokročilé funkce Model Builder, publikování dat a procesů}}
+
{{Cvičení|155GIS2|10|Skriptování v ArcGIS Pro, pokročilé funkce Model Builder}}
  
== Základní pojmy ==
+
== Pokročilé funkce Model Builder ==
 
 
== Poznámky k systému ArcGIS ==
 
 
 
=== Odkazy ===
 
  
 
* [http://desktop.arcgis.com/en/arcmap/10.3/analyze/modelbuilder/examples-of-inline-model-variable-substitution.htm Examples of inline model variable substitution]
 
* [http://desktop.arcgis.com/en/arcmap/10.3/analyze/modelbuilder/examples-of-inline-model-variable-substitution.htm Examples of inline model variable substitution]
Řádek 13: Řádek 9:
 
* [http://desktop.arcgis.com/en/arcmap/10.3/analyze/modelbuilder/using-lists.htm Using Lists]
 
* [http://desktop.arcgis.com/en/arcmap/10.3/analyze/modelbuilder/using-lists.htm Using Lists]
 
* [http://resources.arcgis.com/en/help/main/10.1/index.html#//002s00000001000000 What is geoprocessing?]
 
* [http://resources.arcgis.com/en/help/main/10.1/index.html#//002s00000001000000 What is geoprocessing?]
 +
 +
== Skriptování v ArcGIS Pro ==
 +
 +
{{fig|arcgis-pro-script|Registrace skriptu v prostředí ArcGIS Pro}}
 +
 +
=== PyCharm ===
 +
 +
Postupujte podle [[155GIT1 / Python#Editor_Pycharm|návodu]]. Zvolte cestu k Python interpretu odkazující na ArcGIS: ''C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe''
 +
 +
{{fig|pycharm-arcgis-pro|Spuštění skriptu v prostředí Pycharm}}
  
 
== Úlohy ==
 
== Úlohy ==
Řádek 18: Řádek 24:
 
{{arccr500}}
 
{{arccr500}}
  
'''Model''':
+
=== ArcPy ===
 +
 
 +
; Výpis typu geoprvků - připojit jako skript
 +
 
 +
<syntaxhighlight lang=python>
 +
inputFC = arcpy.GetParameterAsText(0)
 +
 
 +
shapeType = arcpy.Describe(inputFC).shapeType
 +
arcpy.AddMessage("Shape Type: {}".format(shapeType))
 +
</syntaxhighlight>
 +
 
 +
; Geoprocessing
 +
 
 +
* [https://pro.arcgis.com/en/pro-app/latest/tool-reference/analysis/select.htm Select]
 +
* [https://pro.arcgis.com/en/pro-app/latest/tool-reference/analysis/buffer.htm Buffer]
 +
 
 +
<syntaxhighlight lang=python>
 +
arcpy.env.workspace = r"C:\users\martin\Documents\GIS2"
 +
 
 +
# vyber a export dalnic
 +
silnice = r"C:\Users\martin\Documents\ArcCR500\ArcCR500_v33.gdb\Silnice_2015"
 +
dalnice = "dalnice.shp"
 +
arcpy.Select_analysis(silnice, dalnice, "TRIDA = 1")
 +
 
 +
# buffer kolem dalnic
 +
buffer_dal = "dalnice_buf.shp"
 +
vzdalenost = "5000 meters"
 +
arcpy.Buffer_analysis(dalnice, buffer_dal, vzdalenost, dissolve_option="ALL")
 +
 
 +
# odstraneni nepotrebnych vrstev
 +
arcpy.Delete_management(dalnice)
 +
</syntaxhighlight>
 +
 
 +
; Rastrová data (numpy)
 +
 
 +
* [https://numpy.org/ knihovna NumPy]
 +
* [https://pro.arcgis.com/en/pro-app/latest/arcpy/get-started/working-with-numpy-in-arcgis.htm Working with NumPy in ArcGIS]
 +
 
 +
<syntaxhighlight lang=python>
 +
dmt = r"C:\Users\martin\Documents\ArcCR500\ArcCR500_v33.gdb\DigitalniModelReliefu"
 +
 
 +
# otestovat nacteni dat
 +
data = arcpy.Describe(dmt)
 +
data.dataType
 +
 
 +
# nacteni metadat rastru
 +
raster = arcpy.Raster(dmt)
 +
raster.width, raster.height
 +
 
 +
# nacteni rastrovych hodnot do numpy pole
 +
array = arcpy.RasterToNumPyArray(raster)
 +
type(array)
 +
 
 +
# rozmer a datovy typ pole
 +
array.shape, array.dtype
 +
 
 +
# zjisteni minimalni, maximalni hodnoty
 +
array.min(), array.max()
 +
 
 +
# cetnost hodnot
 +
unique, counts = numpy.unique(array, return_counts=True)
 +
idx = numpy.where(unique == 200)
 +
counts[idx]
 +
 
 +
# ukazka mapove algebry
 +
array[(array>=0) & (array<=200)] = 0
 +
array[(array>200)] = 1
 +
array.min(), array.max()
 +
 
 +
# zapis numpy pole do rastru
 +
vystup = arcpy.NumPyArrayToRaster(array)
 +
vystup.save(r"C:\users\martin\Documents\dmt200.tif")
 +
</syntaxhighlight>
 +
 
 +
'''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]).
 +
 
 +
=== ArcGIS ===
 +
 
 +
* [https://developers.arcgis.com/python/guide/using-the-api/ ArcGIS API for Python]
 +
 
 +
<syntaxhighlight lang=python>
 +
import arcgis
 +
gis = arcgis.GIS('home')
 +
user = gis.users.get('myusername')
 +
user
 +
 
 +
###
 +
 
 +
map1 = gis.map()
 +
map1
 +
 
 +
###
 +
 
 +
map2 = gis.map(location='San Francisco, CA', zoomlevel = 12)
 +
map2
 +
 
 +
###
 +
 
 +
from IPython.display import display
 +
 
 +
items = gis.content.search('Praha', item_type="Feature Layer", outside_org=True)
 +
print(len(items))
 +
for item in items[:3]:
 +
    display(item)
 +
</syntaxhighlight>
 +
 
 +
=== Model ===
 
* proměnné
 
* proměnné
 
** Obce, Select, název obce
 
** Obce, Select, název obce
* list
+
* list (není podporováno ArcGIS Pro)
 
** Silnice, Select, Buffer
 
** Silnice, Select, Buffer
 
* iterace
 
* iterace
 
** Kraje, Iterate Feature Selection, Copy Features
 
** Kraje, Iterate Feature Selection, Copy Features
  
'''Geoprocessing:'''
+
=== Opakování ===
* model
 
* [http://geo102.fsv.cvut.cz/~landa/vyuka/155GIS2/arcpy-ulohy/skripty/geoprocessing_par.py skript]
 
* [http://rain2.fsv.cvut.cz/arcgis/rest/services/idw0/gpserver/idw služba]
 
 
 
'''Opakování:'''
 
  
 
* [http://geo.fsv.cvut.cz/gwiki/155GIS2_/_1._cvi%C4%8Den%C3%AD#3. 1/3]
 
* [http://geo.fsv.cvut.cz/gwiki/155GIS2_/_1._cvi%C4%8Den%C3%AD#3. 1/3]

Aktuální verze z 21. 4. 2021, 17:31

předchozí cvičenístránky předmětudalší cvičení

Skriptování v ArcGIS Pro, pokročilé funkce Model Builder

Pokročilé funkce Model Builder

Skriptování v ArcGIS Pro

Registrace skriptu v prostředí ArcGIS Pro

PyCharm

Postupujte podle návodu. Zvolte cestu k Python interpretu odkazující na ArcGIS: C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe

Spuštění skriptu v prostředí Pycharm

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

ArcPy

Výpis typu geoprvků - připojit jako skript
inputFC = arcpy.GetParameterAsText(0)

shapeType = arcpy.Describe(inputFC).shapeType
arcpy.AddMessage("Shape Type: {}".format(shapeType))
Geoprocessing
arcpy.env.workspace = r"C:\users\martin\Documents\GIS2"

# vyber a export dalnic
silnice = r"C:\Users\martin\Documents\ArcCR500\ArcCR500_v33.gdb\Silnice_2015"
dalnice = "dalnice.shp"
arcpy.Select_analysis(silnice, dalnice, "TRIDA = 1")

# buffer kolem dalnic
buffer_dal = "dalnice_buf.shp"
vzdalenost = "5000 meters"
arcpy.Buffer_analysis(dalnice, buffer_dal, vzdalenost, dissolve_option="ALL")

# odstraneni nepotrebnych vrstev
arcpy.Delete_management(dalnice)
Rastrová data (numpy)
dmt = r"C:\Users\martin\Documents\ArcCR500\ArcCR500_v33.gdb\DigitalniModelReliefu"

# otestovat nacteni dat
data = arcpy.Describe(dmt)
data.dataType

# nacteni metadat rastru
raster = arcpy.Raster(dmt)
raster.width, raster.height

# nacteni rastrovych hodnot do numpy pole
array = arcpy.RasterToNumPyArray(raster)
type(array)

# rozmer a datovy typ pole
array.shape, array.dtype

# zjisteni minimalni, maximalni hodnoty
array.min(), array.max()

# cetnost hodnot
unique, counts = numpy.unique(array, return_counts=True)
idx = numpy.where(unique == 200)
counts[idx]

# ukazka mapove algebry
array[(array>=0) & (array<=200)] = 0
array[(array>200)] = 1
array.min(), array.max()

# zapis numpy pole do rastru
vystup = arcpy.NumPyArrayToRaster(array)
vystup.save(r"C:\users\martin\Documents\dmt200.tif")

Další ukázky skriptů zde (zip).

ArcGIS

import arcgis
gis = arcgis.GIS('home')
user = gis.users.get('myusername')
user

###

map1 = gis.map()
map1

###

map2 = gis.map(location='San Francisco, CA', zoomlevel = 12)
map2

###

from IPython.display import display

items = gis.content.search('Praha', item_type="Feature Layer", outside_org=True)
print(len(items))
for item in items[:3]:
    display(item)

Model

  • proměnné
    • Obce, Select, název obce
  • list (není podporováno ArcGIS Pro)
    • Silnice, Select, Buffer
  • iterace
    • Kraje, Iterate Feature Selection, Copy Features

Opakování