3 Stimmen

Wie kann ich (Ruby) RGeo verwenden, um (projektfremde) Koordinaten zu transformieren?

Ich begann mit Wie kann ich die Koordinaten eines Shapefile transformieren? .

Die Antwort dort hat mich auf den richtigen Weg gebracht, aber ich konnte mein Problem immer noch nicht lösen.

Ein Problem ist, dass ich noch nicht die richtige Projektion gefunden habe: https://gis.stackexchange.com/questions/13330/how-can-i-correctly-transform-unproject-from-lcc

EDIT: Die Frage auf der gis-Website wurde beantwortet, und ich konnte eine korrekte Transformation mit dem PROJ-Befehlszeilentool cs2cs reproduzieren. Sie sieht folgendermaßen aus:

larry$  cs2cs -f "%.8f" +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs +to +proj=lonlat +datum=WGS84 +ellps=WGS84
6011287.4999795845 2100857.2499904726
-122.40375492   37.74919006 0.00000000

Nun, da ich die richtige Transformation hatte, konnte ich dasselbe in einer einfachen Form mit RGeo versuchen:

ruby-1.9.2-p180 :001 >     projection_str = ' +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs'
 => " +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs" 
ruby-1.9.2-p180 :002 >     projection = RGeo::CoordSys::Proj4.new(projection_str)
 => #<RGeo::CoordSys::Proj4:0x805cba18 " +proj=lcc +lat_1=37.06666666666667 +lat_2=38.43333333333333 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000.0000000002 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs +towgs84=0,0,0"> 
ruby-1.9.2-p180 :003 >     desired_str = '+proj=lonlat +datum=WGS84 +ellps=WGS84'
 => "+proj=lonlat +datum=WGS84 +ellps=WGS84" 
ruby-1.9.2-p180 :004 >     desired = RGeo::CoordSys::Proj4.new(desired_str)
 => #<RGeo::CoordSys::Proj4:0x805271ac " +proj=lonlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"> 
ruby-1.9.2-p180 :005 >     RGeo::CoordSys::Proj4::transform_coords(projection, desired, 6011287.4999795845, 2100857.2499904726 )
 => [-140.92282523143973, 30.16981659183029] 
  1. Warum sind die Ergebnisse zwischen RGeo und cs2cs unterschiedlich?
  2. Sobald ich RGeo die korrekte Übersetzung durchführen kann, gibt es eine Möglichkeit, wie ich die richtige Fabrik erstellen kann, um eine komplette Geometrie anstelle eines Punktes zu transformieren?
  3. Gibt es ein Befehlszeilentool, das ich als Workaround verwenden kann, um alle Punkte in meinem Shapefile zu transformieren, so dass ich mit meinem Leben weitermachen kann?

Generell: Könnte mir bitte jemand erklären, wie man diese Bibliothek richtig benutzt?

Vielen Dank für Ihren Besuch.

2voto

MerseyViking Punkte 337

Da ich mich weder mit RGeo noch mit Ruby auskenne, kann man versuchen, die Koordinaten in Fuß durch die entsprechenden Meterangaben zu ersetzen: 1832244.0944819663048746863094224, 640342.57048223700783128534419392 (so viele Nachkommastellen braucht man wahrscheinlich nicht...) Eine andere Möglichkeit ist, die Koordinaten zu vertauschen - vielleicht macht RGeo ein paar unkonventionelle Annahmen.

Wenn Sie in der Lage sind, ausführbare Dateien von Ruby aus aufzurufen, können Sie einfach ogr2ogr um Ihre Shapefiles zu konvertieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X