BETA2007 mit ogr 01.11.2010 Im Prinzip kann man auch ogr dazu überreden mit Grid Dateien zu arbeiten. Allerding muss man sich an strikte Regeln halten. Man muss die Regeln kennen. ################################################################################################## BETA2007 mit ogr 01.11.2010 ################################################################################################## Im Prinzip kann man auch ogr dazu überreden mit Grid Dateien zu arbeiten. Allerding muss man sich an strikte Regeln halten. Man muss die Regeln kennen. 1. Die Verwendung des Parameters +nadgrids 2. Die Pfadangabe zur Grid Datei 3. Die zwingende Angabe von +datum, +towgs84 oder +nadgrids (PROJ 4.6.0 und folgende) 4. Gültige Datumsparameter bzgl. +ellps=GRS80 ################################################################################################## Hinweis : Die Verwendung UTM32 bezieht sich immer auf ETRS89/UTM32 ################################################################################################## ogr benutzt keine EPSG-Datei, sondern holt sich die Projektions Parameter aus eigenen Dateien. In den Daten ist der Parameter "+nadgrids=..." nicht gesetzt. 1. Die Verwendung des Parameters +nadgrids ------------------------------------------ Um dennoch mit "+nadgrids=..." arbeiten zu können, muss man die Projektions Parameter explizit angeben. z.Bsp.: set ogrInput="GK2_Points.gml" set ogrOutput="UTM32_Points_pb.gml" SET S_SRS="+proj=tmerc +lat_0=0 +lon_0=6 +x_0=2500000 +y_0=0 +k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext" SET T_SRS="+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" "%prgpfad%\ogr2ogr" -s_srs %S_SRS% -t_srs %T_SRS% -f "GML" %ogrOutput% %ogrInput% 2. Die Pfadangabe zur Grid Datei -------------------------------- Dabei ist wichtig, wie der Pfad zur Grid Datei angegeben wird. siehe -> A. Pfad zur Grid Datei 3. Die zwingende Angabe von +datum, +towgs84 oder +nadgrids (PROJ 4.6.0 und folgende) ------------------------------------------------------------------------------------- Ausserdem ist zu beachten, dass im Gegensatz zu älteren proj.4 Versionen, die aktuellen Versionen keine Datumstransformationen mehr vornehmen, wenn in der Quellprojektion oder der Zielprojektion die Datums Deklaration fehlt. siehe http://osgeo-org.1803224.n2.nabble.com/proj-4-6-0-and-BETA2007-gsb-td2063847.html "The big change in PROJ 4.6.0 was that pj_transform() will no longer try to apply datum shifts if either the source or destination lack a datum declaration (either +datum, +towgs84 or +nadgrids)." - Frank Warmerdam " z.Bsp.: SET S_SRS="+proj=tmerc +lat_0=0 +lon_0=6 +x_0=2500000 +y_0=0 +k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext" fehlende Datumsangabe in Zielprojektion SET T_SRS="+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs" -> keine Datumstransformation 4. Gültige Datumsparameter bzgl. +ellps=GRS80 --------------------------------------------- Eine weitere Besonderheit ergibt sich aus dem Umstand das +ellps=GRS80 und +ellps=WGS84 gleich- bedeutend verwendet werden können, da die beiden Ellipsoide durch die gleichen Parameter beschrieben werden. Achtung: SET S_SRS="+proj=tmerc +lat_0=0 +lon_0=6 +x_0=2500000 +y_0=0 +k=1.000000 +ellps=bessel +units=m +nadgrids=C:\Proj\nad_beta2007\BETA2007.gsb +wktext" +towgs84=0,0,0,0,0,0,0 SET T_SRS="+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs" oder +datum=WGS84 funktioniert SET T_SRS="+proj=utm +zone=32 +ellps=GRS80 +datum=WGS84 +units=m +no_defs" Aber +datum=GRS80 funktioniert nicht?! (Mit MapServer gibt es sogar einen Programmabbruch) SET T_SRS="+proj=utm +zone=32 +ellps=GRS80 +datum=GRS80 +units=m +no_defs" Daraus lässt sich auch eine zweischrittige Transformation ableiten: 1. Schritt, mit erforderlicher Datumstransformation : GK2 -> WGS84 2. Schritt, keine Datumstransformation notwendig : WGS84 -> UTM32 Die Koordinaten weichen ab der 4. Nachkommastelle von der einschrittigen Transformation ab. z.Bsp.: set ogrInput="GK2_Points.gml" set ogrOutput="UTM32_Points_pa.gml" SET S_SRS="+proj=tmerc +lat_0=0 +lon_0=6 +x_0=2500000 +y_0=0 +k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext" SET T_SRS="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" :oder auch :SET T_SRS="EPSG:4326" :(1a) GK 2 WGS84 "%prgpfad%\ogr2ogr" -s_srs %S_SRS% -t_srs %T_SRS% -f "GML" temp.gml %ogrInput% :(1b) WGS84 2 UTM32 "%prgpfad%\ogr2ogr" -s_srs EPSG:4326 -t_srs EPSG:25832 -f "GML" %ogrOutput% temp.gml del temp.gml del temp.xsd ################################################################################################## A. Angabe der Grid Datei 1. BETA2007.gsb nicht im aktuellen Verzeichnis, PROJ_LIB gesetzt 1.1 PROJ_LIB=C:\Proj\nad_beta2007 und +nadgrids=./BETA2007.gsb -> BETA2007.gsb wird nicht gefunden 1.2 PROJ_LIB=C:\Proj\nad_beta2007 und +nadgrids=BETA2007.gsb -> BETA2007.gsb wird gefunden 1.3 PROJ_LIB=C:\Proj\nad_beta2007 und +nadgrids=relativer Pfad -> BETA2007.gsb wird gefunden 1.4 PROJ_LIB=C:\Proj\nad_beta2007 und +nadgrids=absoluter Pfad -> BETA2007.gsb wird gefunden 2. BETA2007.gsb ist im aktuellen Verzeichnis, PROJ_LIB nicht gesetzt 2.1 PROJ_LIB= und +nadgrids=./BETA2007.gsb -> BETA2007.gsb wird gefunden 2.2 PROJ_LIB= und +nadgrids=BETA2007.gsb -> BETA2007.gsb wird nicht gefunden 3. BETA2007.gsb ist nicht im aktuellen Verzeichnis, PROJ_LIB nicht gesetzt 3.1 PROJ_LIB= und +nadgrids=relativer Pfad -> BETA2007.gsb wird gefunden 3.2 PROJ_LIB= und +nadgrids=absoluter Pfad -> BETA2007.gsb wird gefunden Der sicherste Weg, dass die Grid Datei gefunden wird, ist die Verwendung des absoluten Pfadnamens. ################################################################################################## ################################################################################################## ################################################################################################## http://gis.ibbeck.de/ginfo/apps/BETA2007/ogrBETA2007.zip Beispieldaten und Scripte GK2_Points.gml, ogrBETA2007.cmd, ogrCoordinates.cmd, ogrCoordinates.sed ################################################################################################## Ergebnis bei unterschiedlicher Umgebung und Pfadangabe der Grid Datei Eingangsdaten : GK2_Points.gml Daraus sollte sich ergeben GK2 -> UTM32 2552401.862,5616707.524 -> 340408.06369006773,5617072.4806047725 2554778.697,5614549.001 -> 342695.24616917677,5614819.7229761891 2555906.314,5608696.986 -> 343584.91762312665,5608927.6099451743 Scripte : ogrBETA2007.cmd, ogrCoordinates.cmd, ogrCoordinates.sed Die Scripte erzeugen die 10 GML Dateien (.gml, .gfs) für die unterschiedlichen Randbedingungen und die Ergebnisliste ogrErgebnis.lst Bedingungen : Pfadangaben für gdal/ogr, BETA2007, sed Achtung : Das Script löscht alle UTM*.* Dateien, temp.* (temporäre Dateien) und die BETA2007.gsb im aktuellen Verzeichnis ################################################################################################## Beispiel der Ergebnisliste ################################################################################################## GDAL 1.7.0, released 2010/01/19 PATH=C:\ms4w\Apache\cgi-bin; PROJ_LIB=C:\Proj\nad_beta2007, EPSG-Verzeichnis mit BETA2007.gsb BETA2007.gsb nicht im aktuellen Verzeichnis 0. Points in DHDN/GK2 2552401.862,5616707.524 2554778.697,5614549.001 2555906.314,5608696.986 a. Transformation BETA2007 GK2 (proj) - WGS84 (proj) - UTM32 ./BETA2007 nicht gefunden 340463.83339315851,5617207.6713391794 342751.28883468651,5614954.6888811318 343641.0930464043,5609061.9544950463 b. Transformation BETA2007 GK2 (proj) - UTM32 (proj) ./BETA2007 nicht gefunden 340463.83339629497,5617207.6714419629 342751.2888377764,5614954.6889839303 343641.09304947208,5609061.9545978829 b1. Transformation BETA2007 GK2 (proj) - UTM32 (proj) BETA2007 340408.06369006773,5617072.4806047725 342695.24616917677,5614819.7229761891 343584.91762312665,5608927.6099451743 b2. Transformation BETA2007 GK2 (proj) - UTM32 (proj) ../../ 340408.06369006773,5617072.4806047725 342695.24616917677,5614819.7229761891 343584.91762312665,5608927.6099451743 b3. Transformation BETA2007 GK2 (proj) - UTM32 (proj) C:/... 340408.06369006773,5617072.4806047725 342695.24616917677,5614819.7229761891 343584.91762312665,5608927.6099451743 PROJ_LIB= BETA2007.gsb ins aktuelle Verzeichnis kopiert a. Transformation BETA2007 GK2 (proj) - WGS84 - UTM32 ./BETA2007 340408.06368693081,5617072.4805019945 342695.24616608652,5614819.7228733972 343584.91762005852,5608927.6098423451 b. Transformation BETA2007 GK2 (proj) - UTM32 (proj) ./BETA2007 340408.06369006773,5617072.4806047725 342695.24616917677,5614819.7229761891 343584.91762312665,5608927.6099451743 b1. Transformation BETA2007 GK2 (proj) - UTM32 (proj) BETA2007 nicht gefunden 340463.83339629497,5617207.6714419629 342751.2888377764,5614954.6889839303 343641.09304947208,5609061.9545978829 BETA2007.gsb aus aktuellem Verzeichnis gelöscht b2. Transformation BETA2007 GK2 (proj) - UTM32 (proj) ../../ 340408.06369006773,5617072.4806047725 342695.24616917677,5614819.7229761891 343584.91762312665,5608927.6099451743 b3. Transformation BETA2007 GK2 (proj) - UTM32 (proj) C:\... 340408.06368850195,5617072.4806253845 342695.24616763438,5614819.7229967797 343584.9176215952,5608927.6099657081