2017-03-08 5 views
0

キロにおける赤道ラウンドからの距離に、私は私の二つの距離を与えキロメートルに赤道からの距離を見つけます。私は北と西である(0,0(赤道からの方向の座標と仮定)、次のように元がこれらの値から座標再計算することができます。変換緯度は、経度、各Iが持っている座標について最寄りキロ

_, new_lat, _ = wgs84_geod.fwd(0,0, 0, lat_dist) 
new_lon, _, _ = wgs84_geod.fwd(0, 0, 90, lon_dist) 

これは私がして開始したのと同じ座標をバック与え

今、私は自分の座標に最も近いキロメートルポイントを見つけたいと思っています。私はlon_distとlat_distを赤道値からキロメートルに丸めます。

lat_km_dist = round(lat_dist/1000)*1000 #to nearest km and back to meters 
lon_km_dist = round(lon_dist/1000)*1000 

論理は同じ領域内の複数の座標、任意km_lat間の最も近い距離を、km_lonペアがなければならないことであるべきである

_, km_lat, _ = wgs84_geod.fwd(0,0, 0, lat_km_dist) 
km_lon, _, _ = wgs84_geod.fwd(0, 0, 90, lon_km_dist) 

前と私は同じようにこれらの距離を用いて座標を取得します1km。 これは北/南軸に当てはまりますが、経度については、私が現在いる緯度によって異なります。 km_lat、km_lonの座標が1kmのポリゴンの中心にある黒い円で表される問題を視覚化するために、2つのスクリーンショットを付けます。

どうすればこの問題を修正できますか?

Copenhagen

San Francisco

答えて

0

このアルゴリズムは、本質的に何をしているか、それは赤道(LAT = 0)と主子午線(LON = 0)で(点離れて1キロで)等距離メッシュを構築することです。次に、これらの点のデカルト積として楕円体上にグリッドを効果的に構築する。

しかし、緯度/経度座標はデカルトフレームを形成しないため、これらの格子点によって生成された平行/子午線は、特定の経度だけでなく緯度にも依存する「四角形」を定義します。完璧な球面上では、これは南北方向に作用するであろう。なぜなら、lon = 0上の等距離の(大円距離の点で)グリッドもまた、緯度において等距離である(緯度の差は、球の半径)。言い換えれば

、次の2点の緯度lat1lat2(lat1, lon)から特定の経度lon移動のため、たとえば、中(lat2, lon) 1キロ、西の方向を修正する場合は、これらの新たに得られたポイントが同じ経度を持っていないだろう...

私はあなたが達成しようとしていることを完全にはわかっていませんが、あまりにも近くにないいくつかの代表的なポイントを得ることが目標であれば、おそらくhierarchical clusteringは偉大な円距離の点で合理的な結果を提供できる

EDIT:

近似問題を回避するには、(0, 0)よりも、別の基準点を選択することで、離れて、最も可能性の高い得ることができる - 新しい基準点が離れすぎてあなたが記述しようとしている地域からすべきではありません(関心領域の「左下」コーナーのようなもの)。関心のある領域全体が地球の大部分(緯度の広い範囲)をカバーしていない場合、矛盾は非常に小さくなり、Googleマップの視覚化ではほとんど見えなくなるでしょう。

その後、次のようなものがうまくいくかもしれない、デンマーク(スクリーンショットから判断)に興味がある:

lat_ref, lon_ref = 53.637976, 6.694138 

_,_, lon_dist = wgs84_geod.inv(lon_ref,lat_ref, lon, 0) 
_,_, lat_dist = wgs84_geod.inv(lon_ref,lat_ref, 0, lat) 

lat_km_dist = round(lat_dist/1000)*1000 #to nearest km and back to meters 
lon_km_dist = round(lon_dist/1000)*1000 


_, km_lat, _ = wgs84_geod.fwd(lon_ref,lat_ref, 0, lat_km_dist) 
km_lon, _, _ = wgs84_geod.fwd(lon_ref,lat_ref, 90, lon_km_dist) 
+0

あなたが言うように目標が少なく、代表点に座標の大規模な数を減らすこと、です。これがデータセットとは独立している必要があるため、同じエリアに異なる座標が与えられていると、下にあるグリッドは変化しません。このため、私はクラスタリングを使用したくありません。この方法で経度に及ぼす緯度の影響を考慮する方法はありますか? – clurhur

+0

@clurhur参照点を変更しようとする可能性があります - 私は例を含めました... – ewcz

+0

ありがとうございます。私はこのアプローチを試してみて、私が望む1kmの距離に近づけます。難しさは、これらの基準座標を知ることに依存しています。私は世界中のどこでもこのメソッドを使いたいので、このような参照をたくさん集める必要があります。私はカントリーセンターのリストを見ましたが、大きな南北地域にまたがる国々については、同じ問題が発生します。 – clurhur

関連する問題