座標をLatitude&に変換するにはどうすればよいですか。経度?
-
03-07-2019 - |
質問
私は、輸送の可視化アプリをリバースエンジニアリングしています。データフィードの発信元の緯度を調べる必要があります。具体的には、XY 0,0とは何ですか。私が見つけた唯一の式は、2点間の距離、または方位/距離の位置を計算します。
XYを使用して、非常に古いアプリケーションでマップを表示します。 XYはフィートです。
これらの座標があります:
47.70446615506108, -122.34469839507263: x=1268314, y=260622
47.774182540800616,-122.3412994737105: x=1269649, y=286031
47.60024792289405, -122.32767331735774: x=1271767, y=222532
47.57012494413499, -122.29129609983679: x=1280532, y=211374
x = 0、y = 0
の緯度と経度が何であるか、およびこれを見つけるための式を調べる必要があります。
これらには2つのデータフィードがあり、一方は他方よりも最新です。最新のデータを含むフィードには、緯度、経度は含まれませんが、XYのみが含まれます。私は彼らの(現在の)データフィードのXY座標を緯度と経度に簡単に変換できるように、0、0が何であるかという、より少ない、より有益な(lat、lonを含む)データフィードに基づいて外挿しようとしています。
解決
使用している座標系を尋ねます! (または、データベースからデータセットを取得した場合は、データセットのメタデータを見てください。そうでなければ、その値に懐疑的です)
ほとんどの場合、これは州平面座標系のいずれかです。それらは地球のローカライズされた地域用で( UTM のようなもの)、頻繁に使用されます測量。
CORPSCON (または他のGISプログラム; ExpertGPS は、GISオプションパックをお持ちの場合にこれを行いますが、無料ではありません。 GPSBabel は、lat / longと状態平面座標系のいずれかとの間で変換する変換を行います。また、座標がどの datum にあるかを知る必要があります。WGS84とNAD83は非常に近いですが、NAD27は異なります。
他のヒント
データの最初の2行を見て、緯度を引くと
47.7044 - 47.7741 = -0.06972 degrees
緯度ごとに60海里、海里あたり6076フィートです。
-.06972 * 60 * 6076 = 25,415 ft
2つの「Y」値の減算:
260662 - 286031 = 25,409 ft
実際、XとYの値が足元にあることを証明しているようです。
Y値のいずれかを取り、度に戻す場合、たとえば
260622 ft / ( 6076 ft/nm ) / ( 60 nm/degree ) = .71
286031 ft / 6076 / 60 = .78
(47.70および47.77)の緯度からこれらの値を引くと、47度に非常に近い値が得られます。これはy = 0ポイントである必要があります。
経度の場合、度は赤道で60海里、極で0マイルです。したがって、1度あたりのマイル数に緯度のコサインを乗算する必要があるため、約cos(47度)、つまり.68となります。したがって、1度あたり6076 nmではなく、約4145 nmです。
X値については、
1268314 ft / ( 4145 ft/nm ) / ( 60 nm/degree ) = 5.10 degrees
1269649 ft / 4145 / 60 = 5.10 degrees
これらのX数は、緯度が高くなると(負の値が小さくなる)増加するため、5.1度を追加する必要があると思います。つまり、X基点は約
です。-122.3 + 5.1 = 117.2 West longitude for your x=0 point.
これはおおよそスポケーンWAの位置です。
X = 1280532、Y = 211374の場合
Lat = 47 + ( 211374 / 6096 / 60 ) = 47.58
Lon = -117.2 - ( 1280532 / ( 6096 * cos(47.58)) / 60 ) = -122.35
指定されたデータ47.57および-122.29とほぼ同等です
分散は異なる投影によるものである可能性があります-X、Yシステムは「フラット化」されている可能性があります球面投影に適用される緯度/経度ではなく投影?正確にするためには、さらに高度な数学やそのオープンソースライブラリが必要になる場合があります:)
この質問も役立つ場合があります。これには、大円距離を計算するためのコードが含まれています。
さまざまな座標系があります。緯度/経度(例:WGS84など)とx / yの最初(例:何らかの投影システム)の座標系が何であるかを知る必要があります。
その情報を入手したら、変換と操作を行うために使用できるツールがいくつかあります。 1つの例(無料のオープンソースコーディングライブラリ)は、 proj4 です。
座標系については既に十分なアドバイスが得られているので、過去に大成功を収めたライブラリをご紹介します。
Geotransは、米国国防総省による使用が承認されているため、十分にテストされていることを確認できます。ここから入手できます:
http://earth-info.nga.mil/GandG/geotrans/index.html
そのページはライブラリではなくアプリケーションについて述べているので、正しいリンクではないかもしれません。ライブラリはDevelopersパッケージに含まれていると思います。ライセンス条件はメモリから非常に自由でしたが、商業的に使用する前に条件を確認してください。
編集:
Geotransのライセンスに関する興味深い議論については、こちらをご覧ください:
http://www.mail-archive.com/debian-legal@lists.debian.org/msg39263.html
Javaでは、 OpenMapコンバーター UTMでのポイントの表現から、緯度と経度を使用するものへ(GPSで最も一般的に使用されるWGS-84楕円体を想定)。
OpenMapはオープンソースであり、ダウンロードページへのリンクを投稿しますが、途中で短いライセンススクリプトがあります。だから、失礼なことを避けるために、私はディープリンクしません。代わりに、彼らのホームページとダウンロードをクリックします。
それはあなたの問題を直接解決するか、少なくとも有用なアルゴリズムを指し示す必要があります。
これを行うためにBrenor Bropheyの gPoint PHPクラスを使用しましたいくつかの機会。確実な結果、GPLコード、および簡単に展開できます。推奨。