3

まず、これが本当に単純な場合は申し訳ありませんが、私はそれを理解できないようです. このように、RGeo を使用して UTM と緯度/経度を変換しています。

 srs_database = RGeo::CoordSys::SRSDatabase::ActiveRecordTable.new

 # create the coordinate factory for the relevant UTM zone
 utm_factory = RGeo::Cartesian.factory(:srid => srid,
                                       :srs_database => srs_database)
 utm_location = utm_factory.point(easting, northing)

 # create the standard WGS84 lat/long coordinate factory
 wgs84_proj4 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
 wgs84_factory = RGeo::Geographic.spherical_factory(proj4: wgs84_proj4, :srid => 4326)

 # perform the UTM -> lat/long cast
 RGeo::Feature.cast(utm_location, :factory => wgs84_factory, :project => true)

ご覧のとおり、私は を使用してRGeo::CoordSys::SRSDatabase::ActiveRecordTableいます。

にアップグレードしたばかりRGeo 0.5.2で、このクラスは非推奨になっていることに注意してください。

十分に公平ですが、代替方法が何であるかはわかりません...私は周りを偵察しましたが、適切なドキュメントを見つけることができないようです.

また、私の元の方法は常に少し複雑に思えました - RGeo で UTM -> lat/long 変換を達成するためのより簡単な方法はありますか?

前もって感謝します!

ベン

4

2 に答える 2

0

これに対する別のアプローチ:

EPSG_4326 = RGeo::CoordSys::Proj4.new("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
EPSG_3857 = RGeo::CoordSys::Proj4.new("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")

RGeo::CoordSys::Proj4.transform(EPSG_3857, geom, EPSG_4326, RGeo::Geographic.spherical_factory)

RGeo::Geographic::SphericalPointImpl適切な座標で新しいを生成します。

于 2016-04-06T15:20:21.603 に答える