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

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

[/pukiwiki]

[pukiwiki]

*[[白地図 MapMap 6.0:http://www5b.biglobe.ne.jp/~t-kamada/CBuilder/mapmap.htm]]
白地図画像が必要です。今回は、白地図 MapMap 6.0を使わせてもらいました。
ただし、白地図 MapMapは国土地理院の数値地図を利用しているので、商用などにつかうには事前の申請が必要かもです。

[[作成した白地図画像をダウンロード:http://boxheadroom.com/wp/wp-content/uploads/2008/09/wmap.png]]
このプログラムと同じフォルダにファイル名「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”)
_
[/pukiwiki]

コメントを残す

メールアドレスが公開されることはありません。