09.1 PROJ¶
Knihovna PROJ (dříve označovaná jako PROJ.4) zajišťuje převod souřadnic mezi jednotlivými souřadnicovými systémy. Jde o jednu ze základních knihoven využívaných v mnoha open source GIS projektech jako GRASS, QGIS, PostGIS a dalších.
Knihovna je napsána v C++, existují ale rozhraní do dalších programovacích jazyků jako je Javascript, PHP nebo Python.
Konzolové nástroje¶
Knihovna PROJ nabízí řadu konzolových nástrojů, viz dokumentace.
proj- převod souřadnic mezi jednotlivými souřadnicovými systémy
Tip
Příkaz echo zde používáme k simulaci čtení ze souboru. Měli-li
bychom soubor /tmp/test.txt, který by obsahoval řetězec 15 50 0 0,
první příkaz by vypadal následovně:
proj +proj=utm +zone=32 +ellps=WGS84 /tmp/test.txt.
-
invproj- opačný převod souřadnic -
projinfo- dotazování se na souřadnicové systémy -
cs2cs- převod souřadnic mezi jednotlivými souřadnicovými systémy
Note
Vysvětlení rozdílných výsledků:
projpoužije moderní EPSG operaci (WGS84 → S-JTSK → Krovak)- viz
projinfo EPSG:5514 -o PROJ --spatial-test intersects
- viz
proj + cs2csinterně:- (1) WGS84 → UTM
- (2) UTM → WGS84
- (3) WGS84 → S-JTSK (není jednoznačné)
- viz
projinfo -s EPSG:32632 -t EPSG:5514 -o PROJ --spatial-test intersects
Úkol
Porovnejte výsledek předchozího příkazu s EPSG:5514 code 5239:
cct- převod 4D souřadnic- zkratka
cctznamenáCoordinate Conversion and Transformation - třetí souřadnice - výška m n.m.
- čtvrtá souřadnice - rok měření (např. tektonické pohyby)
- příklad pro ETRS89 (European Terrestrial Reference System) ↔ ITRF (International Terrestrial Reference Frame)
- zkratka
echo "15 50 250 2020" | cct +proj=pipeline +step +proj=cart +ellps=GRS80 +step +proj=helmert +dx=0.025 +dy=0 +dz=0 +t_epoch=2000.0 +convention=position_vector +step +inv +proj=cart +ellps=GRS80
Úkol
Vyzkoušej různé epochy. Porovnej rozdíl mezi roky 2000 a 2020 (posun Eurasie ~ 2.5 cm/rok v ose X).
-
geod- první geodetická úloha -
invgeod- první geodetická úloha (inverzní) -
gie- testovací nástroje knihovny -
projsync- umožňuje stahovat a aktualizovat podpůrná data (výpočetní gridy)
Python API¶
Ukázka transformace zeměpisných souřadnic (EPSG:4326) do S-JTSK (EPSG:5514):
from pyproj import CRS
crs_from = CRS.from_epsg(4326)
crs_to = CRS.from_epsg(5514)
from pyproj import Transformer
transformer = Transformer.from_crs(crs_from, crs_to)
transformer.transform(50, 15)
Úkol
Porovnej výsledek s příkazem cs2cs.