
python初心者です.
なかなか調べても出てこないものにあたってしまい質問させていただきました.
python ver = 2.7.6
スマホのGPSから取得した
csvファイルがこのようになっていて
"Latitude","Longitude"(緯度,経度)
34745884, 135782873
34746035, 135782770
34745872, 135782753
.
.
のような位置データがずらっと書かれています.
このデータを読み込み,640*480の画面の対応する場所に画像を表示したいのですがどのようなプログラムを書けばいいかで詰まっています.
例.ある(経度,緯度)→640*480の実行画面の座標(240,180)のような感じで反映させたいのですが.
調べると実行画面の中心の座標を予め自分で定めた(経度,緯度)に設定しそこを元に読み込んだ座標を反映させるような方法もあるようですがやり方がわからず.
どのようなことをしたいか画像を添付しておきます.
よろしければご享受願います.
例でも参考にさせていただけるプログラムがあれば幸いです.

A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
うまく説明できるかどうか自信がないのですが…。
そして、これでebisen000さんのやりたいことができるかも自信がないのですが…。
思いついた限りで書かせていただきます。
まず、640*480の実行画面(上の地図)で表示する緯度経度の対応範囲を決めてやる必要があるかと思います。
つまり、実行画面上の x=0, y=0 (たぶん左上の座標) が緯度いくつで経度いくつなのかと、
実行画面上の x=640, y=480 (たぶん右下の座標)が緯度いくつで経度いくつなのかを決めます。
#ここからは仮定の話になりますので、実際には想定している値に置き換えてください。
実行画面上の地図で何kmくらいの範囲を表示したいかによって変わってきますが、
仮に実行画面上の地図の表示範囲は、x軸(横)に640メートル、y軸(縦)に480メートルとします。
(実行画面上の1ピクセルが1メートルに対応するということにしました。)
また、実行画面のx軸が経度、y軸が緯度に対応するものとします。
サンプルとして載せてもらっている緯度経度の最初の一つ Lat=34.745884, Lng=135.782873 を
仮に実行画面の x=0, y=0 に対応させるものとして、x軸に640メートル、y軸に480メートル加算した緯度経度は、Lat=34.750211, Lng=135.789863 になります。(だいたいですが…)
つまり実行画面上の x, y と 緯度経度 Lat, Lnt の対応は、
x=0 : Lng=135.782873
x=640 : Lng=135.789863
y=0 : Lat=34.745884
y=480 : Lat=34.750211
となります。
あとはこの値の範囲を使って、とある緯度経度が実行画面上の座標(x, y)ではいくつなのかを計算すればいいと思うのです。
Pythonで以下のような関数を作ってみました。(注意:スペースを全角にしてあります。)
数値(引数x)をある範囲(引数in_min~in_max)から別の範囲(out_min~out_max)に変換します。
def ValueMapping(x, in_min, in_max, out_min, out_max):
return float(x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
例えば、
Lat=34.746884, Lng=135.783873
が実行画面のどの座標に対応するかを計算したい場合なら、
x = ValueMapping(135.783873, 135.782873, 135.789863, 0, 640)
y = ValueMapping(34.746884, 34.745884, 34.750211, 0, 480)
のように関数に値を渡します。
上記の結果は、
x=91.5593705297
y=110.931361221
となります。小数点以下を四捨五入するとして、つまり実行画面上での座標は、
x=92
y=111
となります。(たぶん…)
で、ここまできてなんですが、この方法は緯度経度を単純に画面上のx,yに置き換えています。
しかし緯度経度は本来、地球の楕円球面上の座標なので単純に二次元に変換できないと思います。
短い距離の範囲で変換しているぶんには誤差の範囲と思うのですが、
大きな範囲の地図上で表示しようとすると誤差が無視できないレベルになるかもしれません。
その場合は、もっと厳密な変換の計算が必要と思われます。
もしくは、そもそももっとクールなやりかたがあるかもしれません(^^;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
シーケンサー(PLC?)で制...
-
複数の回転する長方形の衝突判定
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
始点、終点の二つの座標と半径...
-
変数名のこだわりについて
-
座標A(X,Y)の線分(aX,aY)(b...
-
任意点を中心とした回転
-
「関数ポインタとして評価され...
-
交差する2線分の交点座標の求め方
-
ダイアログ内コントロールの位...
-
対数表示のグラフを書くには
-
ビットマップ画像の座標を小数...
-
MATLABの画像処理、2本の直線の...
-
閉図形の座標の配列が右回りか...
-
回転する矩形同士の当たり判定...
-
リアルタイム3Dについて。
-
直線と傾きのある楕円の交点を...
-
2つの座標と角度から交点座標の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
c言語でキーボードから2点の座...
-
3次元空間上の2つの座標から...
-
ワード上Shapeの位置情報を統一...
-
シーケンサー(PLC?)で制...
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
ガウシアンフィルタのCプログラム
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
選択範囲の座標値の抽出
-
ダイアログ内コントロールの位...
-
y=x^2の座標をプロットするプロ...
-
有限要素法について教えてください
-
有限要素法(FEM)について教え...
-
C言語 配列で座標
-
PanelとCanvasの違いについて
-
タッチパッドのタッチ座標取得
-
アクセスのセルの数え方。
おすすめ情報