【可视化】绘制中国标准行政区划地图(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()
结果展示
市级行政区划底图
作为展示,本文只展示了市级行政区划的底图,大家可以替换数据进行省、县级的行政区划展示。
热门推荐
老款电视如何连接WiFi:详细攻略
每天吃雪糕的人,身体会有哪些变化?
温暖心灵的家常丸子汤制作分享
从哪些点来看房子的保值程度
狗肉食用搭配禁忌与建议,助你健康享受美食体验
满族人为何不吃狗肉
公里与千米的关系及其在日常生活中的重要性分析
如何智能检索文献数据库
团市委组织开展青少年心理健康进社区志愿服务活动
什么是医疗行为规范
明尼苏达大学双城分校信息技术专业课程详解
腊肉豆角的制作方法与技巧
探索交互式地图
iPhone怎么拒接电话
象拔蚌外表很污却是餐厅必不可少的顶级珍馐
许姓文化:从春秋许国到当代分布
安全错觉!为什么布达佩斯备忘录没有保护乌克兰免受战争的影响?
牛肉炖土豆不外传的秘方,软烂入味,3斤不够吃!
整形医生解析:上睑下垂的成因与改善方法
剪叉式升降平台的优势与特点
最近的中年男人,流行去户外找自己
摩托车电喷系统的性能和可靠性如何?这种技术对驾驶体验有何影响?
如何升级和拓展汽车音响系统:连接方法、优势、挑选技巧和解决方案
工伤“双赔”困局:团意险与雇主责任险为何互相“打架”?
黄金坑还是价值陷阱:10家公司所持现金超过总市值
鸟类日语词汇大全
征服山巅,心肺功能飙升!
创业者必读:创业资源的全面解析
天丝与竹纤维:有何区别?
塔罗牌复合牌阵五张牌怎么解读?