Python 给定的经纬度标注在地图上

博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图。值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包。所以需要自己把下面两个包自行下载,然后在该目录下使用pip安装。感觉我说话有点骚的补充,这两个包点击下载。

pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
basemap-1.1.0-cp36-cp36m-win_amd64.whl

下载安装包后,将安装包放在python/Scripts目录下(就是pip安装的目录),然后运行

pip install .\pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
pip install .\basemap-1.1.0-cp36-cp36m-win_amd64.whl

先上个效果图,可以发现这个工具包还是很强大的,下面介绍下怎么在地图上标注出经纬度的地点。

Python 给定的经纬度标注在地图上_第1张图片

整个画图流程分为两部分,第一部分是绘制一个世界地图,代码如下:

from mpl_toolkits.basemap import Basemap

m = Basemap()         # 实例化一个map
m.drawcoastlines()    # 画海岸线
m.drawmapboundary(fill_color='white')    
m.fillcontinents(color='white',lake_color='white') # 画大洲,颜色填充为白色
# m.fillcontinents(color='none',lake_color='white') # 如果color设置为none,则地图为透明

parallels = np.arange(-90., 90., 10.)    # 这两行画纬度,范围为[-90,90]间隔为10
m.drawparallels(parallels,labels=[False, True, True, False])
meridians = np.arange(-180., 180., 20.)   # 这两行画经度,范围为[-180,180]间隔为10
m.drawmeridians(meridians,labels=[True, False, False, True])

第二部分是标注出经纬度所在的地点,这部分比第一步简单多了,直接用scatter()方法就可以了,代码如下:

lon, lat = m(lon, lat)    # lon, lat为给定的经纬度,可以使单个的,也可以是列表
m.scatter(lon, lat, s=100)# 标注出所在的点,s为点的大小,还可以选择点的性状和颜色等属性
plt.show()

P.S. 将大洲的填充色置为none,则为透明,效果如图

Python 给定的经纬度标注在地图上_第2张图片

你可能感兴趣的:(基础知识)