日本地図に緯度経度で指定して丸を書く
ちょっと更新滞るかも。。。。の前に、日本地図に大きさを指定して丸を描くPythonプログラムをメモ
実行サンプル

白地図 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: CG, Python





