Frage

hoffe es geht dir gut

Ich versuche, LAT/Long -Koordinaten mithilfe der Proj.4 -Bibliothek in OSGB36 X und Y umzuwandeln.

Hat noch jemand das erfolgreich gemacht? Ich muss die Variablen srcprj4string und destprj4string füllen, z. B.

String srcprj4string = " +proj = longlat +ellps = wgs84 +datum = wgs84 +no_defs";
String destprj4string = " +proj = utm +zone = 11 +ellps = grs80 +datum = nad83 +Einheiten = m";

Aber ich kann nicht herausfinden, was der Destprj4String mit OSGB36 sein sollte - ich weiß, dass das Datum +datum = osgb36 sein sollte, aber alles, was ich versuche, funktioniert nicht

Irgendwelche Ideen?

Vielen Dank im Voraus

Leddy

War es hilfreich?

Lösung 2

Ich habs:

string srcPrj4String = "+proj=longlat +ellps=WGS84 +towgs84=0,0,0 +no_defs";
string destPrj4String = "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m +no_defs";

Prost!

Andere Tipps

Googeln taucht auf Dies Von Dr. John Stevenson, einem Erdwissenschaft Akademiker der Manchester University - der es richtig machen sollte, wenn jemand es tut. Hier ist ein Zitat.


Das Problem war, dass das Durchgehen von OSGB36 sowohl eine Projektion als auch a erfordertDatenkonvertierung. Vor Oktober 2007, Proj führte nur die Projektion aus, was zu dem großen Versatz führte. Sie können überprüfen, ob Sie die neue Version haben, indem Sie 'proj -v' ausführen oder Ihre EPSG -Datei ansehen:

cat /usr/share/proj/epsg | grep -A 1 "British National Grid" 

# OSGB 1936 / British National Grid 
<27700> +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 
+y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs  <> 

Die neuen Versionen haben +datum = osgb36.

Wenn Sie eine alte Version haben, können Sie sie korrigieren, indem Sie die Linie ersetzen durch:

+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 
+ellps=airy 
+towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m 
+no_defs <> 

Eine Komplikation ist, dass OSGB36 ist leicht verzerrt in Bezug auf GPS -Projektionen (wie WGS84 und ETRS89). Dieser Versatz ist klein und nur für eine höhere Präzisionsbefragung wichtig. Viele Suchanfragen nach OSGB36 -Offsets bringen Seiten in Bezug auf diese Weise auf. Wenn Sie dies auch kompensieren möchten, können Sie eine Nadgrid -Datei herunterladen und benutze es. Für meine Daten bewegte dies die Punkte um etwa 1 m.

EPSG: 27700 auf SpatialReference.org gibt verschiedene Zeichenfolgen, um dies zu definieren, einschließlich eines für ProJ4.

Hier ist Beispielcode in Ruby Verwenden der ProJ4 -Bindungen:

#!/usr/bin/ruby
require 'rubygems'
require 'proj4'

#Some example WGS84 lat lon coordinates to convert:
lon = -0.10322
lat = 51.52237

srcPoint = Proj4::Point.new(Math::PI * lon.to_f / 180, 
                            Math::PI * lat.to_f / 180)

srcPrj  = Proj4::Projection.new("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") 
destPrj = Proj4::Projection.new("+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.999601 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 +units=m +no_defs <>")

point = srcPrj.transform(destPrj, srcPoint)

puts "http://www.openstreetmap.org/?mlat=" + lat.to_s + "&mlon=" + lon.to_s + "&zoom=16"
puts "Converts to:";
puts "http://streetmap.co.uk/grid/" + point.x.round.to_s + "_" + point.y.round.to_s + "_106"

Die Ausgabe:

http://www.openstreetmap.org/?mlat=51.52237&mlon=-0.10322&zoom=16
Konvertiert zu:
http://streetmap.co.uk/grid/531691_182089_106

Das funktioniert also jetzt genau. Ursprünglich habe ich nur die 'Destprj' -Zeichenfolge ausprobiert und habe die "Forward" -Methode angerufen, aber dies lehnte es ab, die Datum -Conversion durchzuführen, was zu 100 m führte. Es schien notwendig zu sein, die SRCPRJ -Zeichenfolge und die "Transform" -Methode zu verwenden, um die Datenkonvertierung zu erhalten.

Siehe auch meinen Blog -Beitrag: Ruby -Code zur Konvertierung in UK -Ordnance Survey Coordinate Systems aus WGS84? Dies enthält eine reine Ruby -Version (nicht proj4), um dasselbe zu tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top