【可视化】绘制中国标准行政区划地图(2024版)
创作时间:
作者:
@小白创作中心
【可视化】绘制中国标准行政区划地图(2024版)
引用
CSDN
1.
https://m.blog.csdn.net/m0_38065162/article/details/141606151
在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统或国家测绘局地理信息局标准地图底图,所用底图边界要完全无修改(包括南海诸岛位置)。本文结合Geopandas和Cartopy两个强大的地理数据处理库进行展示。
相关库简介
Cartopy是一个用于地理数据处理和可视化的Python库,专门设计来处理地图投影和地理空间数据的绘制。它是基于Matplotlib的高层次接口,主要用于创建地理参考图形和地图。Cartopy提供了丰富的功能来处理不同的地图投影、地理参考数据的转换,以及与流行的地理信息系统(GIS)数据格式的集成。
代码实现
导入相关库
# -*- coding: UTF-8 -*-
# 导入相关库
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from copy import copy
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
import shapely.geometry as sgeom
加载数据
国家地理信息公共服务平台(天地图)新增了矢量地图底图下载服务,用户可以根据需求下载不同审图号的标准地图矢量底图。矢量地图相较于像素地图,具有更高的清晰度和可编辑性,可以无限放大而不失真,更适合进行地图编辑和二次创作。获取方式见-天地图。
读取中国区域的省、市、县的区划信息:
# 读取省级行政区划
province = gpd.read_file('中国_省.geojson')
# 读取市级行政区划
city = gpd.read_file('中国_市.geojson')
# 读取县级行政区划
county = gpd.read_file('中国_县.geojson')
市级行政区划展示
# 设置地图投影
proj = ccrs.LambertConformal(central_longitude=105, central_latitude=90,standard_parallels=(25, 47))
# 设置图片大小
fig = plt.figure(figsize=[10, 8],frameon=True)
# Set projection and plot the main figure
ax = fig.add_axes([0.08, 0.05, 0.8, 0.94], projection=proj)
# 设置地图范围
ax.set_extent([80, 130, 15, 55],crs=ccrs.PlateCarree())
# 添加地理要素
ax.add_geometries(city.geometry,
crs=ccrs.PlateCarree(),
edgecolor='k',
facecolor='none',
zorder=1)
# 添加海洋、陆地、河流、湖泊
ax.add_feature(cfeature.OCEAN.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.LAND.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.RIVERS.with_scale('50m'),zorder=0)
ax.add_feature(cfeature.LAKES.with_scale('50m'),zorder=0)
# 设置并添加经纬度标签
xticks = [55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165]
yticks = [0 , 5 , 10, 15, 20, 25 , 30 , 35 , 40 , 45 , 50 , 55 , 60 , 65]
gl = ax.gridlines(xlocs=xticks,
ylocs=yticks,
draw_labels=True,
x_inline=False,
y_inline=False,
linewidth=1,
color='dimgrey',
alpha=0.5,
linestyle='--')
gl.top_labels = False
gl.right_labels = False
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
# 添加南海附图
sub_ax = fig.add_axes([0.75, 0.102, 0.15, 0.2],
projection=ccrs.LambertConformal(central_latitude=90,
central_longitude=105))
# 添加海洋、陆地、河流、湖泊
sub_ax.add_feature(cfeature.OCEAN.with_scale('50m'))
sub_ax.add_feature(cfeature.LAND.with_scale('50m'))
sub_ax.add_feature(cfeature.RIVERS.with_scale('50m'))
sub_ax.add_feature(cfeature.LAKES.with_scale('50m'))
# 设置南海附图范围
sub_ax.set_extent([106, 120, 2, 24], crs=ccrs.PlateCarree())
sub_ax.add_geometries(city.geometry, crs=ccrs.PlateCarree(), edgecolor='k', facecolor='none')
plt.show()
结果展示
市级行政区划底图
作为展示,本文只展示了市级行政区划的底图,大家可以替换数据进行省、县级的行政区划展示。
热门推荐
CAN总线硬件设计指南:从物理层到接口防护的关键要点
黄金收益计算器使用指南:助力投资决策的实用工具
天门旅游景点介绍:十大名胜古迹
怎样辨别二手车销售商的信誉好坏
流感传奇——让我们说防控
周瑜:东吴崛起的智勇之将
产业投资基金运作模式详解:以南京交通产业基金为例
计算机科学与技术考研学校排名
张道陵和老子谁是道教创始人?(道教张道陵简介资料大全及图片)
如何计算楼板的合理厚度?这种计算有哪些误差可能?
车辆过户手续指南:所需材料、流程及惠州办理地点
龙岗电机启动电容,电机启动电容的选购与使用
【医疗问答】细菌为什么会对抗生素产生耐药性?
个人所得税怎么算一年
儿童正常血压范围及维持方法
彼得·潘综合征怎么诊断
电磁波传播的三种方式:地波,天波和视波
合肥十峰发布!两座在庐江
加沙援助持续推进 优先满足紧急需求
从海洋文化到“晋江经验”:一段跨越三千年的传承
深中通道首个周末:中山美食店,停满粤B车
咽喉炎吃什么?多久会好?营养师:急性、慢性咽喉炎这样吃
拘留所、看守所、监狱:三者的区别与适用情形
一次了解所有功能!超详细【Stable Diffusion界面】使用指南
分布式数据库HBase:从零开始了解列式存储
海丰美食排行榜前十
儿童正常血压范围及维持方法
又有多所高校官宣!确定延长研究生学制
肩颈僵硬怎么自我调理
电脑怎么退出全屏?四种方法轻松搞定