您的位置:首页 > 编程语言 > Python开发

Python 学习之 2 —— Basemap地图绘制 (windows7安装指南+示例程序)

2019-02-19 18:16 666 查看

简介

Basemap扩展包是Matplotlib子包,负责地图绘制。

配置教程

windows7 + anaconda3 4.1.1 + python 3.5 + basemap + pyproj

  1. 先下载basemap 和 pyproj 的文件,在下面网址中:https://www.lfd.uci.edu/~gohlke/pythonlibs/

为了防止网页失效,我在我的CSDN下载频道中也上传了所需的两个文件,有需要的可以去下载:
https://download.csdn.net/download/lovetaozibaby/11037343
https://download.csdn.net/download/lovetaozibaby/11037332

ctrl+F寻找basemap,如下所示:

ctrl+F:Pyproj,如下所示

下载这两个文件,保存在任何文件夹都可以。

  1. 命令行模式cd到下载目录,执行:
    pip install pyproj-1.9.6-cp35-cp35m-win_amd64.whl
    pip install basemap-1.2.0-cp35-cp35m-win_amd64.whl

参考网址:
https://www.cnblogs.com/Fantinai/p/8733812.html

示例程序

目的为:给出南京市138个位置的经纬度,在地图中画出这些点的分布示意图。
(该代码里用到了一个.csv文件,文件共两列,一列表示经度,一列表示纬度)

# coding=utf-8
import csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon

#画南京市整体图
def DrawPointMap(file_name):
fig = plt.figure()
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])#[left,bottom,width,height]
map = Basemap(projection='mill',lat_0=31,lon_0=110,\
llcrnrlat=31.2  ,urcrnrlat=32.7,llcrnrlon=118.3,urcrnrlon=119.4,\
ax=ax1,rsphere=6371200.,resolution='h',area_thresh=1000000)
shp_info = map.readshapefile('CHN_adm/CHN_adm3','states',drawbounds=False)
for info, shp in zip(map.states_info, map.states):
proid = info['NAME_2']
if proid == 'Nanjing':
poly = Polygon(shp,facecolor='w',edgecolor='k', lw=1.0, alpha=0.2)#注意设置透明度alpha,否则点会被地图覆盖
ax1.add_patch(poly)

# 画横纵坐标
parallels = np.arange(30.6,33,1)
map.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) #parallels
meridians = np.arange(117.35,130,1)
map.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) #meridians

# 读取文件
posi = pd.read_csv(file_name)
lon = np.array(posi["LONGITUDE"][0:139])#获取经纬度坐标,一共有138个数据
lat = np.array(posi["LATITUDE"][0:139])

x,y = map(lon,lat)
map.scatter(x, y, s=8, color = 'r',marker='o') #要标记的点的坐标、大小及颜色

map.drawmapboundary()  #边界线
map.drawstates()
map.drawcountries()
plt.title('Nanjing')#标题
plt.savefig('Nanjing.png', dpi=100, bbox_inches='tight')#文件命名为Nanjing.png存储
plt.show()

if __name__=='__main__':
DrawPointMap("Info1.csv")

报错+修改

  1. numpy报错
  2. pandas报错

anaconda3 4.1.1 版本中对应的numpy 和 pandas的版本过低,配置好basemap后运行程序会报错,因此要对numpy和pandas升级,如下:

pip install numpy --upgrade
pip install pandas --upgrade

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: