2

UTM から緯度/経度に変換するための無料ツールがたくさんあります。結構ですが、別の方法で行く必要があります。WGS-84 から緯度/経度フォーマットへ。

しかし、それはそれよりも複雑です。結果が UTM-33 (ノルディック) ゾーンにある必要があるからです。これは悪い考えのように聞こえるかもしれません。地理的なポイントが別のゾーンにある可能性があるのに、ゾーンを 33N に「強制」したいのはなぜですか...

良い; 問題は、ノルウェーのすべての住所の UTM33 座標を含むデータベースを既に持っていることです。

UTM @ 北ヨーロッパに詳しい方は、ノルウェーがいくつかのゾーンにまたがっていることを知っています。31 から 36 まで. (わかりました、ゾーン 32V の奇妙な幅のために、32 から 36 までしかスパンしないかもしれませんが、それは別の議論です)。

それで、私の問題に戻ります。すべてのアドレスは既に UTM-33 形式で指定されています (範囲外の場合は負の値を使用)。緯度/経度を UTM-33 にするにはどうすればよいですか?

PHP での解決策が必要ですが、「gPoint」を使用して多くのデバッグを行った後、それが機能しないことがわかりました...

(gPoint は UTM との間で変換するのに優れていますが、常に「正しい」ゾーン ブロックで UTM x/y ペアを返します。私はそれを望んでいません!ゾーン 33 で常に結果を取得する必要があります。実際に正しいのは..)

4

1 に答える 1

3

私は最終的にProj4(SlightlyCubanに感謝)で解決策を見つけました!

// Conversion from WGS84 to UTM33
$proj4 = new Proj4php();
$projWGS84 = new Proj4phpProj('EPSG:4326');
$projUTM33N = new Proj4phpProj('EPSG:2078');

$result = $proj4->transform($projWGS84, $projUTM33N, new proj4phpPoint($long, $lat));

変換の正しい形式を推測することは不可能であり、しばらく苦労していました...その後、非常に便利な Web ページを発見しました: http://spatialreference.org。ここで必要な定義を見つけました ( EPSG:2078 = "+proj=utm +zone=33 +ellps=intl +units=m +no_defs")

Proj4 の PHP 実装には、ハードコーディングされた定義が必要です。アドホックな定義を渡すことはできません。EPSG:2078 は、もともと Proj4php にありませんでした。わーい; 私は幸運!

そのため、Proj4 を and 経由Node.jsでテストすることをお勧めします ( http://pastebin.com/1BP8cWpjproj4jsで私の小さなデモを参照してください)。

成功するには、Proj4PHP-library をフォークし、 EPSG:2078 の定義ファイルを追加する必要がありました ...

于 2014-05-31T21:39:48.020 に答える