1

我最近遇到了一组很棒的免费 G​​IS 数据,包括圆锥体内的所有城市。shapefile 包含几层信息,例如名称、人口等。我使用 shapefile 阅读器中内置的底图绘制了城市的位置。但是,我似乎找不到一种方法来绘制城市名称和位置。有没有办法使用底图绘制城市名称及其位置?因为我是一名学生,所以我使用 enthoughts canopy 分发,所以某些插件模块可能无法获得。我已经链接了我的输出示例,以及帖子底部的 shapefile 链接。如果有人有任何想法,那就太好了!

谢谢,安德鲁显示俄克拉荷马州西部道路和城市的示例输出

来自 Noaa 国家气象服务http://www.nws.noaa.gov/geodata/catalog/national/html/cities.htm的 shapefile 链接

4

1 回答 1

0

文档中的示例中的以下内容应为您指明正确的方向:

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
# setup Lambert Conformal basemap.
m = Basemap(width=12000000,height=9000000,projection='lcc',
            resolution='c',lat_1=45.,lat_2=55,lat_0=50,lon_0=-107.)
# draw a boundary around the map, fill the background.
# this background will end up being the ocean color, since
# the continents will be drawn on top.
m.drawmapboundary(fill_color='aqua')
# fill continents, set lake color same as ocean color.
m.fillcontinents(color='coral',lake_color='aqua')
# draw parallels and meridians.
# label parallels on right and top
# meridians on bottom and left
parallels = np.arange(0.,81,10.)
# labels = [left,right,top,bottom]
m.drawparallels(parallels,labels=[False,True,True,False])
meridians = np.arange(10.,351.,20.)
m.drawmeridians(meridians,labels=[True,False,False,True])
# plot blue dot on Boulder, colorado and label it as such.
lon, lat = -104.237, 40.125 # Location of Boulder
# convert to map projection coords.
# Note that lon,lat can be scalars, lists or numpy arrays.
xpt,ypt = m(lon,lat)
# convert back to lat/lon
lonpt, latpt = m(xpt,ypt,inverse=True)
m.plot(xpt,ypt,'bo')  # plot a blue dot there
# put some text next to the dot, offset a little bit
# (the offset is in map projection coordinates)
plt.text(xpt+100000,ypt+100000,'Boulder (%5.1fW,%3.1fN)' % (lonpt,latpt))
plt.show()
于 2013-07-21T07:15:21.883 回答