The memo blog.

About programming language and useful library.

Python: Memo(I)

| Comments

荒廢了過年這段時間,這次要來研究一下別人寫的Python程式,主要用來取得Google Map的影像,並且可以把它存起來。因為某些原因,所以需要對Google Map進行存取地圖,除了存取地圖,也需要來計算每個地圖的大小,詳細的參考網站可以參考Tiles à la Google Maps: Coordinates, Tile Bounds and Projection關於Google Map投影說明可以參考這邊。而在我想要進行的應用當中,主要有幾個部份,Google Map在設定大小的時候,所出現的圖片其大小都是固定的,所以在這邊想要把每個圖片都弄幾個狀態,然而Zoom inlevel設定在21左右,主要的應用,想要利用在某些用途上,總之,需要的功能為:

  • 取得使用者的GPS資訊
  • 使用者GPS資訊對應到Google Map的編號
  • Google Map每個區塊邊界取得

剩下的有些就是需要資料庫的幫忙了,接著最後目標就是要放到GAE上面,然後提供給Android來服務。那在這邊有兩個網路上找的Sample code,就來慢慢Trace

pyMapGrab.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
final = Image.new("RGB", (int(dx), int(dy)))
for x in range(cols):
    for y in range(rows):
        dxn = largura * (0.5 + x)
        dyn = altura * (0.5 + y)
        latn, lonn = pixelstolatlon(ulx + dxn, uly - dyn - bottom/2, zoom)
        position = ','.join((str(latn), str(lonn)))
        print x, y, position
        urlparams = urllib.urlencode({'center': position,
                                      'zoom': str(zoom),
                                      'size': '%dx%d' % (largura, alturaplus),
                                      'maptype': 'satellite',
                                      'sensor': 'false',
                                      'scale': scale})
        url = 'http://maps.google.com/maps/api/staticmap?' + urlparams
        f=urllib.urlopen(url)
        im=Image.open(StringIO.StringIO(f.read()))
        final.paste(im, (int(x*largura), int(y*altura)))
final.show()

這算是主要的main loop,首先就是要建立一張超大的空白圖,這就是使用PIL(Python Image Library),在安裝上還算方便。只是也同樣需要設定一下就是了,不然會找不到Image.new()。這一整段的程式,拆開來執行就是每次截取一小段圖片,後一直拼拼拼成一張大張的圖,這些圖當然都是Google Map提供的。在傳送網址的詳細參數,可以參考Google Map Static API,似乎有很多參數可以選擇…時間上的關係,需要來加緊趕工vuforia的程式了。之後再來慢慢補完這些要研究的東西。

Comments