2012-05-16 34 views
6

Tôi muốn tạo bản đồ với một số điểm nhất định bằng Python. Đối với điều này tôi muốn sử dụng Basemap từ matplotlib. Nó hoạt động tốt, nhưng tôi không biết làm thế nào để có được một bản đồ nền thích hợp.Cách vẽ bản đồ png-osm với tọa độ

Làm cách nào để nhập một bản đồ OSM? Hoặc tôi nên sử dụng một gói bản đồ khác? Tôi chỉ muốn tạo một bản đồ raster và lưu nó thành png.

+0

Bản sao: http://stackoverflow.com/questions/9482335/draw-a-map-with-gps-markers-and-save-this-image-to-file/9485409#9485409 – ChrisP

+1

Nhưng bài đăng trên blog được liên kết chỉ mô tả một giải pháp buộc tôi kết hợp hai hình ảnh (bản đồ và điểm) bởi photoshop/gimp, tôi cần giải pháp tự động hoàn toàn – teGuy

+0

teGuy ... đăng giải pháp của bạn (với càng nhiều chi tiết càng tốt) làm câu trả lời ... sau đó chấp nhận nó. Sẽ tốt hơn nếu bạn trả lời các câu hỏi của riêng mình: http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – Yann

Trả lời

2

Đây không phải là giải pháp của tôi; Tôi đã dán nó từ câu hỏi bởi vì người hỏi không có đủ danh tiếng để trả lời câu hỏi của riêng mình.

Tôi tìm thấy một giải pháp:

Sử dụng imshow trong bản đồ cơ sở bao gồm một png vào cốt truyện như hình ảnh nền. Để có được hình nền thích hợp, tôi đã sử dụng export feature of OSM có ranh giới được lấy từ các nhà xây dựng bản đồ cơ sở :

m = Basemap(llcrnrlon=7.4319, urcrnrlat=52.0632, urcrnrlon=7.848, llcrnrlat=51.8495, 
     resolution='h', projection='merc') 

im = plt.imread('background.png') 
m.imshow(im, interpolation='lanczos', origin='upper') 
2

Tôi tìm thấy một số hình ảnh bản đồ cơ sở thể truy cập từ NASA gibs tileserver. Bạn có thể sử dụng cùng một phương pháp cho các trình tạo hình xếp khác.

http://earthdata.nasa.gov/wiki/main/index.php/GIBS_Supported_Clients#Script-level_access_to_imagery

Thị Sử dụng gdal_translate GDAL trong một subshell python:

import subprocess 
import matplotlib.pyplot 
import mpl_toolkits.basemap 

l,u,r,d=(7.4319,52.0632,7.848,51.8495) 

subprocess.call ('gdal_translate -of GTiff -outsize 400 400 -projwin {l} {u} {r} {d} TERRA.xml Background.tif'.format(l=l,u=u,r=r,d=d),shell=True) 

im=matplotlib.pyplot.imread('Background.tif') 

m = mpl_toolkits.basemap.Basemap(llcrnrlon=l, urcrnrlat=u, urcrnrlon=r, llcrnrlat=d, 
    resolution='h', projection='merc') 
m.imshow(im, interpolation='lanczos', origin='upper') 

matplotlib.pyplot.show() 

này cần file TERRA.xml từ liên kết ở trên, mặc dù bạn có thể inline XML là tốt.

Các vấn đề liên quan