1

Proj4rb gem を使用して、緯度と経度の座標をロビンソン図法のポイントに変換しています。これは、マップ イメージのどこにピンを配置するかを判断するために使用されます。

私が(ニューヨークで)試している例は次のとおりです。

  robinson_projection = Proj4::Projection.new('+proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs')

  source_point = Proj4::Point.new(40.7142, -74.0064)
  source_projection = Proj4::Projection.new("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

  projected_point = source_projection.transform(robinson_projection, source_point)

これにより、次の例外がスローされます。

#<Proj4::LatitudeOrLongitudeExceededLimitsError: latitude or longitude exceeded limits>

私は何を間違っていますか?

4

2 に答える 2

0

2 つのエラーが表示されます。1 つが原因かどうか知りたいです。

New York has : lat/lon: 40.713956,-74.00528
最初のエラー:
New York には負の経度座標があります。あなたが書いた 74.0064

2 番目:
Point.new(x,y) の long, lat の順序は long, lat であり、その逆ではありません docu で確認してください!

とても正しいです:

source_point = Proj4::Point.new(-74.0064, 40.7142);
于 2012-11-30T18:58:27.457 に答える
0

問題はソース ポイント (緯度、経度) 内にあります。これを試して:

robinson_projection = Proj4::Projection.new('+proj=robin +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs')

lat = 40.7142
lon = -74.0064
source_point = Proj4::Point.new(Math::PI * lon.to_f / 180,
                                Math::PI * lat.to_f / 180)
source_projection = Proj4::Projection.new("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

projected_point = source_projection.transform(robinson_projection, source_point)
于 2016-10-19T10:11:19.247 に答える