CV06 – Nalezení trasy s nejnižšími náklady (ArcGIS Pro)

Cíl: Naplánovat trasu elektrického vedení s nejnižšími kumulativními náklady mezi hlavním uzlem (start) a dvěma místními uzly (cíle) na území obce Jistebník. Náklady vycházejí z CLC 2018 (land cover) a jsou zvýšeny o sklon svahu z DMR5G.


Doporučený SRS: S-JTSK / Krovak East North (EPSG:5514) nebo ETRS89 / LAEA Europe (EPSG:3035). Drž se jednoho SRS napříč všemi vrstvami.


3) DMR5G: ořez + výpočet sklonu

Připojení ImageService (možno stažení DMR)

Ořez (Extract by Mask)

Slope (Surface → Slope)


4) CLC 2018 → rastr → reklasifikace na cost

Clip (vektor)

Feature to Raster

Reclassify (CLC → cost)

NoData NESMÍ zůstat uvnitř AOI. Doplň hodnoty pro všechny použité CLC kódy.


5) Zapojení sklonu (Raster Calculator)

Raster Calculator

cost_slope = cost_clc * (1 + "slope_deg" / 90)

Cost Distance

costdist musí plynule růst od startu, bez „děr“ NoData v AOI.


7) Cost Path jako polylinie

Cost Path As Polyline (doporučeno)

Alternativně Cost Path (rastrově) + Raster to Polyline převod.


8) Měření a reportování

Délka trasy

Kumulativní náklad (cost) v cílech


9) Symbolizace a layout

Mapová kompozice

Layout A3

  1. Insert → New Layout → A3 (Landscape/Portrait).
  2. Map Frame, Legend, Scale Bar, North Arrow.
  3. Tiráž: název, autor, datum, zdroje (DMR5G – ČÚZK, CLC 2018 – CENIA).
  4. Share → Export Layout → PDF (300 dpi).

10) QA checklist


11) Výkon a časté problémy


12) Bonusy

Ochranná území / zóny

cost_final = Con( Protected == 1, cost_slope * 1.5, cost_slope )

Pak použij cost_final v Cost Distance.

Citlivostní analýza CLC

Oddělené výstupy pro každý cíl


13) Mini workflow tabulka

Krok Nástroj Parametry (klíčové) Výstup
1 Extract by Mask DMR5G + AOI DMR5G_clip
2 Slope DEGREE, Z=1 slope_deg
3 Feature to Raster field=code_18, cell=5 m CLC_ras
4 Reclassify CLC→cost cost_clc
5 Raster Calculator cost_clc*(1+slope_deg/90) cost_slope
6 Cost Distance Source=Start, Cost=cost_slope costdist,backlink
7 Cost Path as Polyline Dest=Targets, Id, EACH_CELL path_line
8 Add Geometry Attr. LENGTH (m) délka
9 Extract Values to Points Targets × costdist kumulativní cost

14) ArcPy – kompletní skript super bonus

Uprav názvy vrstev a cesty. Vyžaduje Spatial Analyst.

import arcpy
from arcpy.sa import *

arcpy.CheckOutExtension("Spatial")

# Cesty uprav dle sebe:
gdb = r"C:\...\CV07_Jistebnik\gdb\CV07.gdb"
scratch = r"C:\...\CV07_Jistebnik\scratch"
arcpy.env.workspace = gdb
arcpy.env.scratchWorkspace = scratch

# Sjednocení prostředí
arcpy.env.extent = "AOI_Jistebnik"
arcpy.env.mask = "AOI_Jistebnik"

# 1) DMR5G -> slope
# Předpoklad: máš už DMR5G_clip (Extract by Mask)
arcpy.env.snapRaster = "DMR5G_clip"
arcpy.env.cellSize = "DMR5G_clip"

Slope("DMR5G_clip", "DEGREE", 1).save("slope_deg")

# 2) CLC reclass (příklad: uprav na reálné kódy v AOI)
# Doporučeno použít RemapValue s explicitními kódy, zde ukázkově RemapRange
remap = RemapRange([
    [100,200,10],  # Urban
    [200,300,5],   # Agriculture
    [310,333,8],   # Forest 3.1–3.2.x
    [334,340,7],   # Scrub 3.3.x
    [500,600,20]   # Water/Wetlands
])
Reclassify("CLC_ras", "Value", remap, "NODATA").save("cost_clc")

# 3) Sklonový faktor
cost_slope = Raster("cost_clc") * (1 + Raster("slope_deg") / 90.0)
cost_slope.save("cost_slope")

# 4) Cost Distance + Backlink
cd, bl = CostDistance("Start", "cost_slope", "", "", "", "BACKLINK")
cd.save("costdist")
bl.save("backlink")

# 5) Cost Path jako polyline (pro oba cíle najednou)
CostPathAsPolyline("Targets", cd, bl, "EACH_CELL", "Id").save("path_line")

# 6) Délka v metrech
arcpy.management.AddGeometryAttributes("path_line", "LENGTH", "METERS")

# 7) Kumulativní cost v cílech
ExtractValuesToPoints("Targets", "costdist", "Targets_cost", interpolate_values="NONE")

15) Odevzdání


Poznámka k re-klasifikaci CLC

Klíčové je přizpůsobit cost hodnoty skutečným třídám v AOI (statistika CLC). Pokud chceš, snadno sem přidám konkrétní finální tabulku pro Jistebník (pošleš seznam kódů nebo výřez).