すでにタイトルで述べたように、ミラー円柱投影の緯度/経度をx/y座標に変換する助けが必要です。私は現在、都市リストを入力として取得し、Yahoo Placefinderから各都市の緯度/経度を取得するアプリをJavaで作成しています。私はコード内にtheseの公式を使用しました。私が得るもののHere is an example。 (画像は参照用であり、私が使用するものではありません)。 Xポジションがわずか2〜3ピクセルしかないことがわかるように、このマップでは私の子午線シフト(CENTRAL_MERIDIAN_OFFSET)の計算に問題があります。しかし、主な問題は誤ったY座標です。画像のx/y座標への緯度/経度変換(ミラー円柱投影)
はここに私のコードです(更新 - 赤道のための34px補償オフセット):
public final double W = 6343;
public final double H = 4767 - 34;
protected Point toMillerXY(double lon, double lat)
{
double x, y;
lon = Utils.degToRad(lon);
lat = Utils.degToRad(lat);
x = lon - CENTRAL_MERIDIAN_OFFSET;
y = 1.25 * Math.log(Math.tan(0.25 * Math.PI + 0.4 * lat));
x = (W/2) + (W/(2 * Math.PI)) * x;
y = (H/2) - (H/(2 * 2.303412543)) * y;
y += 34;
return new Point(x, y);
}
Output:
Fetching data with: http://where.yahooapis.com/geocode?location=Buenos+Aires,Argentina
Latitude: -34.608521, longitude: -58.373539
---
Fetching data with: http://where.yahooapis.com/geocode?location=Tokyo,Japan
Latitude: 35.670479, longitude: 139.740921
---
Fetching data with: http://where.yahooapis.com/geocode?location=Cape+Town,CAR
Latitude: -33.919060, longitude: 18.421961
---
Fetching data with: http://where.yahooapis.com/geocode?location=Rome,Italy
Latitude: 41.903110, longitude: 12.495760
---
Total cities: 4
Result for Buenos Aires: 1964.598428, 3046.740995
Result for Tokyo: 5455.265150, 1732.669551
Result for Cape Town: 3317.692474, 3032.814395
Result for Rome: 3213.276105, 1602.176163
は明らかに、何かがY座標計算が間違っています。私は5.6が本当に正しい値になるべきかどうか分からないが、Millers投影の垂直範囲は私が読んだ参照の1つで-2.3 .. + 2.3と言われていた。
'ここに私が得るものの例があります。それはどこですか? – Cheery
画像を追加するのを忘れた、それを修正しました。 – Varnius
http://gis.stackexchange.comはこの質問のより良い場所かもしれません - その視聴者はこの種の問題にもっと焦点を当てています – tomfumb