3

ウィキリークスのおかげで、ここ英国では、各郵便番号の経度と緯度の座標にアクセスできるようになりましたwikileaks postcodes uk IMPORTANT. このデータを公開アプリケーションで使用しないでください - データが意図的に破損されており、著作権法に違反しているとみなされる可能性があるという懸念があります。このPostcode UK サイトのようなオープン ソース サイトのデータを使用してみてください

これで、次の計算を使用して各ポイント間の距離を計算することが可能になりました (元は Pro Mysql の優れた本から)。

2 点 (x1,y1) と (x2,y2) の間の距離 d は、次の式から計算できます (x の値が緯度で、y の値がラジアン単位の経度である限り、r は 3956 である球の半径です)。マイル):

d= acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y2-y1)) * r

これで十分ですか、それとも新しい GIS データ タイプと関数を使用する必要がありますか? もしそうなら、経度と緯度の参照を Point データ タイプに変換するにはどうすればよいですか? 地球は完全な球体ではないため、上記で引用した距離の計算は完全ではありません。しかし、それは私の目的には十分です。新しい GIS 機能を使用すると、a) 距離の計算が速くなりますか? b) 距離の計算がより正確になりますか?

4

2 に答える 2

2

(a) に注目するには:

過去に、緯度、経度、x 軸、y 軸、および zxais を格納するパーツを事前に計算しました。ここで、x、y および z は次のように定義されます。

xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))

次に、大まかに SQL を使用して距離を計算できます(acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852)($ で始まるものは、問題の開始点について上記と同じ方法で事前に計算されます)。

この方法で事前計算すると、比較的高価なトリガーが 1 回限りのイベントにプッシュされ、クエリが簡素化されます。

于 2009-09-22T18:29:23.357 に答える
1

さて、あなたの「B」の質問に答えるために、あなたの方程式は完全な球体を仮定しているので、少し外れます (そして、2 つの点が互いに離れているほど、次第に悪化する可能性が最も高いでしょう)。GIS がこれを考慮している場合、距離の計算はより正確になります。

緯度/経度からポイントへの変換に関しては、これはGoogle Maps API内で提供されていると断言できました。( GLatLngリファレンスを参照してください。)

于 2009-09-22T18:26:38.097 に答える