利用python绘制中国地图(含省界、河流等)

下面是关于“利用python绘制中国地图(含省界、河流等)”的一份完整攻略。

安装必要的库

绘制地图需要安装maplotlib和basemap库。

pip install matplotlib
pip install basemap

获取地图数据

我们可以从GADM网站下载中国地图数据。地图数据包括省界、县界、河流等信息,我们可以按需选择需要的信息。

我们选择使用省份边界数据和河流数据:
- 中国各行政区划界线数据下载链接
- 中国河流数据下载链接

解压后,我们可以看到两个文件夹cn_province和China-Rivers。

绘制地图

我们可以创建一个新的python文件,使用Matplotlib和Basemap库,绘制中国地图。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 绘制中国地图
map = Basemap(llcrnrlon=73.33, llcrnrlat=18.15, urcrnrlon=135.05, urcrnrlat=53.85, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'china', drawbounds=True)

# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')

plt.show()

使用readshapefile方法读取shp文件,其中第一个参数是文件路径,第二个参数是绘制图形的名字,可以自定义,第三个参数drawbounds表示是否绘制边界。

示例1

修改上面的代码,加入省界标注和标题,如下所示。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 绘制中国地图
map = Basemap(llcrnrlon=73.33, llcrnrlat=18.15, urcrnrlon=135.05, urcrnrlat=53.85, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'china', drawbounds=True)

# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')

# 绘制省界
for info, shape in zip(map.china_info, map.china):
    proid = info['NAME_1']
    if proid in ['Beijing', 'Tianjin', 'Shanghai', 'Chongqing']:
        proid = proid + ' Shi'
    elif proid=='Inner Mongol':
        proid = 'Nei Mongol'
    elif proid=='Tibet':
        proid = 'Xizang'
    elif proid=='Ningxia':
        pass
    elif proid=='Xinjiang':
        pass
    else:
        proid = proid + ' Sheng'
    plt.text(shape[0], shape[1], proid, ha='center', fontsize=10)

# 添加标题
plt.title('China Map')

plt.show()

示例2

修改上面的代码,绘制指定省份的地图。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt

# 绘制山西省地图
map = Basemap(llcrnrlon=108.99117, llcrnrlat=34.74667, urcrnrlon=114.65143, urcrnrlat=40.56313, resolution='h', epsg=4326)
map.readshapefile('./cn_province/gadm36_CHN_1', 'shanxi', drawbounds=True)

# 绘制河流
map.readshapefile('./China-Rivers/China_river', 'river')

# 绘制省界
for info, shape in zip(map.shanxi_info, map.shanxi):
    proid = info['NAME_1'] + ' ' + info['NAME_2']
    plt.text(shape[0], shape[1], proid, ha='center', fontsize=10)

# 添加标题
plt.title('Shanxi Map')

plt.show()

总结

绘制中国地图的过程中,我们需要安装必要的库、获取地图数据、使用Basemap库绘制地图,通过控制Basemap的参数,可以绘制不同范围、不同分辨率的地图,同时我们也可以添加标注和标题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python绘制中国地图(含省界、河流等) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python中如何设置代码自动提示

    当我们在Python中编写程序时,往往需要快速地查找函数或模块的文档,或者在输入函数名称时进行自动完成。这时候一个好的Python代码自动提示工具非常有用。 在Python中,最流行的自动提示工具是Jedi和PyCharm。 下面将分别为你介绍这两种工具的详细使用方法: 一、Jedi Jedi是一个Python解释器库,可以实现自动提示功能。我们可以通过在代…

    python 2023年5月19日
    00
  • python中字符串的操作方法大全

    Python中字符串的操作方法大全 在Python中,字符串是一种不可变的序列类型,可以使用多种方法进行操作。本文将介绍Python中字符串的操作方法,包括字符串的创建、字符串的索引和切片、字符串的拼接和重复、字符串的查和替换、字符串的大小写转换、字符串的分割和连接、字符串格式化等。 字符串的创建 在Python中,可以使用单引号、引号或三引号来创建字符串。…

    python 2023年5月13日
    00
  • python列表操作实例

    Python列表操作实例 在Python中,列表是一种有序的可变序列,可以包含任意类型的元素。本攻略将详细介绍Python列表的操作,包括如何创建列表、如何访问列表中的元素、如何修改列表中的元素、如何使用列表的方法和如何使用列表的切片。 创建列表 在Python中,可以使用方括号[]来创建一个空列表,也可以在方括号中添加元素来创建一个非空列表。以下是一个示例…

    python 2023年5月13日
    00
  • Python:运行一个实时跟踪的 GUI

    【问题标题】:Python: Run a GUI that is tracking real timePython:运行一个实时跟踪的 GUI 【发布时间】:2023-04-01 14:50:02 【问题描述】: 如何将动态时间导入 tkinter?导入 date.time 函数将仅导入运行该特定时间的数据。我希望代码运行一次,但仍像循环一样收集时间数据。 …

    Python开发 2023年4月8日
    00
  • python在线编译器的简单原理及简单实现代码

    这里给出一个简单的 Python 在线编译器的实现代码,同时解释一下其简单原理。 简单原理 该在线编译器的原理是将用户在网页上输入的 Python 代码通过 AJAX 请求发送到后台,后台采用 Python 的 exec 函数执行代码,再将执行结果返回给前端进行展示。 通过 Python 的 exec 函数可以执行用户输入的 Python 代码,并且可以捕获…

    python 2023年5月19日
    00
  • 解决python xx.py文件点击完之后一闪而过的问题

    解决 Python xx.py 文件点击完之后一闪而过的问题,通常有以下两种方法: 方法1:使用cmd命令窗口 打开 cmd 命令窗口,进入 Python 文件所在的目录,并输入以下命令: python xx.py 其中,xx.py 表示文件名。执行完毕后,命令窗口将显示程序运行的所有结果。如果程序不需要任何输入,则命令窗口会停留在程序运行结束的状态。 示例…

    python 2023年6月3日
    00
  • Python标准库sys库常用功能详解

    Python标准库sys库常用功能详解 简介 Python标准库sys库是Python自带的一个系统参数相关的库,通过它可以访问与Python解释器相关的系统参数和函数。它包含了与Python解释器进行交互的一系列工具,主要包括: sys.argv:获取命令行参数 sys.path:获取Python模块搜索路径 sys.modules:获取已经加载的模块 s…

    python 2023年5月30日
    00
  • Python类中的魔法方法之 __slots__原理解析

    Python中的类可以定义各种各样的魔法方法,这些魔法方法通过在类中定义特殊的方法名来触发各种运算以及特殊操作。而 __slots__ 就是Python中一个特殊的魔法方法,它可以在定义类时指定一个类成员列表,从而限制实例对象的属性只能为 __slots__ 中所列出的成员名。 1. 为何需要使用 slots 在Python中,类声明时并不需要指定实例的属性…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部