第八星系人气爱 发表于 2024-4-17 22:29:53

利用Python绘制北京市区划

利用Python绘制北京市区划


原创 作者:石头人 第八星系人造大气理论爱好者 2024-04-10 15:00 四川

作者:石头人

邮箱:2205455617@qq.com

数据:shp数据

------------------------------------------------------

代码:

# 导入库
import matplotlib.pyplot as plt
import numpy as np
from cartopy.io.shapereader import Reader
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import cartopy.crs as ccrs

# 导入shp文件
shp_path = "F:/shp/直辖市/北京市/北京市.shp"
shp_reader = Reader(shp_path)


# 创建图形
fig = plt.figure(figsize=(15,12))
proj = ccrs.PlateCarree()
ax1 = plt.subplot(1, 2, 1, projection=proj)
ax2 = plt.subplot(1, 2, 2, projection=proj)

# 设置边界范围
extent1 =
extent2 =
ax1.set_extent(extent1, crs = proj)
ax2.set_extent(extent2, crs = proj)

# 绘制图形
ax1.add_geometries(shp_reader.geometries(), fc="None", ec="k", lw=1.2, crs=proj, zorder=2)
ax2.add_geometries(shp_reader.geometries(), fc="None", ec="k", lw=1, crs=proj, zorder=2)
ax1.set_xticks(np.arange(116, 118, 1), crs=proj)
ax1.set_yticks(np.arange(39.5, extent1+0.3, 0.5), crs=proj)
ax1.xaxis.set_major_formatter(LongitudeFormatter())
ax1.yaxis.set_major_formatter(LatitudeFormatter())
ax2.set_xticks(np.arange(116, 117, 0.5), crs=proj)
ax2.set_yticks(np.arange(40, 40.5, 0.5), crs=proj)
ax2.xaxis.set_major_formatter(LongitudeFormatter())
ax2.yaxis.set_major_formatter(LatitudeFormatter())
# 添加文字
plt.rcParams['font.family'] = 'Microsoft YaHei'
ax1.text(115.7, 39.7, r'房山区', fontsize=10)
ax1.text(116.27, 39.633, r'大兴区', fontsize=10)
ax1.text(116.62, 39.75, r'通州区', fontsize=10)
ax1.text(116.4, 40.4, r'怀柔区', fontsize=10)
ax1.text(115.9, 40.45, r'延庆县', fontsize=10)
ax1.text(116, 40.2, r'昌平区', fontsize=10)
ax1.text(116.9, 40.5, r'密云县', fontsize=10)
ax1.text(116.55, 40.14, r'顺义区', fontsize=10)
ax1.text(115.55, 39.98, r'门头沟区', fontsize=10)
ax1.text(117, 40.17, r'平谷区', fontsize=10)

ax2.text(116.12, 40.06, r'海淀区', fontsize=10)
ax2.text(116.4, 40, r'朝阳区', fontsize=10)
ax2.text(116.26, 39.82, r'丰台区', fontsize=10)
ax2.text(116.52, 39.93, r'东城区', fontsize=10)
ax2.text(116.23, 39.96, r'西城区', fontsize=10)
ax2.text(116.13, 39.84, r'石景山区', fontsize=10)
ax2.text(116.3, 39.73, r'大兴区', fontsize=10)
ax2.text(116.32, 40.1, r'昌平区', fontsize=10)
ax2.text(116.52, 40.14, r'顺义区', fontsize=10)
ax2.text(116.05, 39.73, r'房山区', fontsize=10)
arrow1 = ax2.arrow(116.27,39.95,116.31-116.22,39.92-39.95)
arrow2 = ax2.arrow(116.54,39.92,116.42-116.54,39.89-39.92)
arrow3 = ax2.arrow(116.175,39.85,116.175-116.175,39.91-39.85)

# 保存图片
plt.savefig('E:/Beijing.jpg', dpi=600, bbox_inches='tight')


声明:

欢迎各位亲转载、转发本号的原创作品,可以联系小编(微信号lizhi2412963740)授权。

第八星系人造大气理论爱好者致力于记录自己科研的脚印,致力于与大家一起交流学习进步!

欢迎加入第八星系人气爱交流群:

请备注 昵称-单位/院校-研究方向(为防止“无关”人员混入造成不好影响,群里会定期清理不改备注的成员)


END

后台私信:第八星系

群内每日更新分享数据

进群回复 第八星系

本文编辑|小拾壹

本篇文章来源于微信公众号:第八星系

页: [1]
查看完整版本: 利用Python绘制北京市区划