日本地図に緯度経度で指定して丸を書く



ちょっと更新滞るかも。。。。の前に、日本地図に大きさを指定して丸を描くPythonプログラムをメモ
実行サンプル
http://boxheadroom.com/wp/wp-content/uploads/2008/09/test.png


白地図 MapMap 6.0

白地図画像が必要です。今回は、白地図 MapMap 6.0を使わせてもらいました。
ただし、白地図 MapMapは国土地理院の数値地図を利用しているので、商用などにつかうには事前の申請が必要かもです。

作成した白地図画像をダウンロード
このプログラムと同じフォルダにファイル名「wmap.png」で保存してください

実行すると、ランダムな緯度経度に、丸と座標位置を書きます。実行後 test.pngとして画像が保存されます。
後日、ちょっとしたデータをプロットする予定。

# -*- coding: utf-8 -*-
import Image,ImageDraw,ImageFont
import random

def xytrans(latdeg,latmin,longideg,longimin,
       pixarea=(80,63,1121,1139),  #このへんで白地図とプログラムの座標をすりあわせ
       degarea=(122,24,148,46),
       dw=148.0-122.0,
       dh=46.0-24.0,
       pw=1121.0-80.0,
       ph=1139.0-63.0
   ):
   lat=latdeg+latmin/60.0
   longi=longideg+longimin/60.0
   px=pixarea[0]+pw*(longi-degarea[0])/dw
   py=pixarea[3]-ph*(lat-degarea[1])/dh
   return [px,py]

def maru(latdeg,latmin,longideg,longimin,r):
   ox,oy=xytrans(latdeg,latmin,longideg,longimin)
   r2=r/2.0
   draw.ellipse((ox-r2,oy-r2,ox+r2,oy+r2),fill=(255,0,0))
   draw.text((ox,oy+16),"%d,%d"%(x,y),font=font,fill=(0,0,255))

im=Image.open("wmap.png","r")
draw=ImageDraw.ImageDraw(im)

xy=[(24,122),(46,122),(24,148),(46,148)]
for i in xrange(8):
   xy.append((random.randint(30,46)/2*2,random.randint(128,148)/2*2))

font = ImageFont.truetype("C:\Windows\Fonts\msmincho.ttc",32,0)

for i,(x,y) in enumerate(xy) :
   maru(x,0,y,0,8)
im.show()
im.save("test.png")
Tags: ,

Related posts

タグ: ,

コメントは受け付けていません。