会社のソフトウェアでWMS マップのサポートを実装しています。サーバーはマップが利用可能な投影法のリストを返しますが、当社のソフトウェアはデータを WGS84 (緯度/経度または UTM) でのみ表示し、すべてのサーバーが「CRS:84」または「EPSG:4326」CRS を返すわけではありません。その結果、データを変換/再投影する必要があります。一部のサーバーは非常に珍しいものを返しますが、次のいずれかで問題が発生しています: EPSG:3112 (GDA94 / Geoscience Australia Lambert) Geoscience Australia の WMS サーバーで使用されます。
マップを画面に表示するには、必要な画面またはタイルの境界ボックスの WGS84 緯度/経度座標をサーバーの CRS に変換し、マップ イメージを要求してから、マップの境界ボックスを (サーバーの CRS で) 描画変換する必要があります。 ) WGS-84 lat/lon に戻ります。これはまったく正しく機能していないようです:
この画像は、オーストラリアのタスマニア島の一部です。灰色の海岸線は、WGS:84 投影のDemisからのものです。青いアウトラインとグレーの経緯線は、Geoscience Australiaの EPSG:3112 からのものですが、(理論的には) Proj4 を介して再投影され、グレーの海岸線と一致します。ご覧のとおり、50 ~ 100 キロメートルの範囲でかなり不正確です。このディスプレイが WGS-84 の経緯線を描画している場合、それらは完全に垂直および水平になります。島が引き伸ばされていることにも注意してください。つまり、回転以上のものです。これは、再投影がまったく機能していないように見えます。
私が使用している 2 つの Proj4 初期化文字列は次のとおりです。
- WGS-84 (WMS の CRS:84):
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
- EPSG:3112:
+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
WGS-84 から EPSG:3112 を介して個々のポイントを往復すると、元のポイントが得られます。
- WGS:84: (145.0, -42.0)
- EPSG:3112 へ: (931684.430679232, -4764432.89032608)
- WGS-84 に戻ります: (145, -41.9999999999999)
すべての変換は を使用して行われpj_transform
ます。
ここ数日で多くのことを学んでいますが、地図投影法や Proj4 については、次にどこに行くべきかを知るのに十分な知識がありません。このライブラリについて多くのことを知っている人からアドバイスをいただければ幸いです。
私が持っていたいくつかのアイデアは次のとおりです。
- 青い島は、ランバート図法では静止しているように見えます。これはありそうですか?それは視覚的な歪みを説明するでしょう。
- 何年も前にビルドされた Proj4 DLL のバージョンを使用しています。データムなどに関するさまざまなデータを DLL にビルドできるようですが、これが行われたかどうかはわかりません。ただし、Proj4 は座標変換のエラーにフラグを立てません。そのため、現時点では、ライブラリが満足している場合、それは外部エラー (つまり、私の側) であるという仮定に取り組んでいます。理由もわかりません。とにかく、Proj4 Web サイトのビルド済みバイナリを使用する代わりに、DLL の何年も前の独自のビルドを持っているためです。ただし、Proj4 バイナリでさえ 1 つ古いバージョンであり、すべてをバイナリ データとして含めるように構築されていないようです。
- Proj4 の一部のバージョンは、データムやその他の情報を外部からロードするようです。
PROJ_LIB
DLL を置き換えて、環境変数を使用してこれらのファイルの一部を使用するように構成しようとしましたが、明らかな変更はありません。 +towgs84=0,0,0,0,0,0,0
EPSG:3112 文字列の部分が奇妙に見えます。これは、最新の Proj4 ダウンロードの「epsg」ファイルからのものですが、間違っている可能性はありますか?
おそらく、この質問のより良い定式化は次のとおりです。
- これら 2 つの CRS 間で変換するには、何を用意する必要がありますか?
助けてくれてありがとう:)