Programování v GIS 3
2025-10-14
GeometryGeometry (geometry, inputs, {spatial_reference}, {has_z}, {has_m}, {has_id})Multipoint, PointGeometry, Polygon, PolylineSouřadnicový systém
Přímo součástí třídy Geometry může být a často i je definice souřadnicového systému!
Geometrylength, length3D nebo area, ale i řada funkcí (zejména prostorové vztahy – např. intersect()) pracují s 2D kartézskou matematikougetLength({method}, {units}) nebo getArea({method}, {units}) lze specifikovat method (způsob výpočtu: PLANAR/GEODESIC/aj.) a units (jednotky výsledku)GEODESIC, GREAT_ELLIPTIC, …) s příslušnými jednotkamiGeometry.projectAs(spatial_reference, {transformation_name}) – u změny mezi různými daty je vhodné uvést transformační názevVztah k souřadnicovému systému
Ne všechny kombinace metod a typu souřadnicového systému dávají smysl a jsou možné!
# Výpočet geodetické délky polyline v kilometrech bez projekce do PCS
import arcpy
# Vytvoření jednoduché linie ve WGS84
line = arcpy.Polyline(
arcpy.Array(
[
arcpy.Point(-77.4349451, 37.5408265),
arcpy.Point(-78.6384349, 35.7780943),
]
),
arcpy.SpatialReference(4326),
)
# Geodetická délka (GEODESIC) v km
length_km = line.getLength("GEODESIC", "Kilometers")
print(f"Geodesic length: {length_km:.2f} km")Arrayarcpy.Array() - speciální objekty ArcPy pro tvorbu políGeometry.intersect(other, dimension)Geometry.union(other)Geometry.difference(other)Geometry.symmetricDifference(other)import arcpy
# Jednoduchý polygon (čtverec) v projektovaném SRS (Web Mercator)
poly = arcpy.Polygon(
arcpy.Array(
[
arcpy.Point(1350000, 6250000),
arcpy.Point(2100000, 6250000),
arcpy.Point(2100000, 6620000),
arcpy.Point(1350000, 6620000),
arcpy.Point(1350000, 6250000),]
),
arcpy.SpatialReference(3857),
)
# PLANAR plocha v m^2 (PCS jednotky)
area_m2 = poly.getArea("PLANAR", "SquareMeters")
print(f"Planar area: {area_m2:.0f} m^2")
# Projekce na WGS84 s transformačním názvem (pokud je potřeba)
poly_wgs84 = poly.projectAs(arcpy.SpatialReference(4326))
# GEODESIC plocha v km^2
area_km2 = poly_wgs84.getArea("GEODESIC", "SquareKilometers")
print(f"Geodesic area: {area_km2:.3f} km^2")Materiály dostupné: https://jancaha.github.io/vsb-vyuka/