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で質問しましょう!
似たような質問が見つかりました
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- docomo(ドコモ) ドコモのラクラクホン(アンドロイド)で、平面直角座表の位置に、たどり着く事が出来る、アプリは? 2 2023/06/23 21:12
- iPhone(アイフォーン) iPhone7 標準メールアプリでicloud.com のメール設定が出来ない。助けてください! 3 2022/08/17 13:04
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# ディスプレイの解像度とマウスの位置について 2 2023/05/21 19:01
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Chrome(クローム) PC版Chromeで特定サイトの読み込み時のデータ量を軽減したい(特に画像データ) 1 2023/02/09 17:50
- 物理学 角運動量の式変形が分かりません。 4 2022/08/03 21:04
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
画像回転について
-
始点、終点の二つの座標と半径...
-
OpenCvSharp4による画像判定解...
-
以下のプログラムは重心を求め...
-
直線上にある点の座標の求め方
-
エクセルで回転する座標の出し方
-
オートシェイプ円弧の中心点、...
-
水素分子の体積要素
-
エクセルである点からの距離で...
-
プログラミングの問題について...
-
SetWindowOrgとSetViewportOrg...
-
タッチパッドのタッチ座標取得
-
c#で直線が図形内にあるか判定
-
visualbasic でform上に正三角...
-
3d 法線ベクトル計算
-
住所から経緯経度を出したい
-
OpenGLの「見える範囲」は何故...
-
図形が重なりあっているかどうか
-
マインクラフト(pc版)で座標...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報