前言

Cartopy 是为了向 Python 添加地图制图功能而开发的扩展库。该项目致力于以 matplotlib 包为基础,用简单直观的方式操作各类地理要素的成图。Cartopy 官网的画廊页面已经提供了很多绘图的例子,它们和官方文档一起,是学习该工具的主要材料。

绘制 IGS 站点分布图

本图使用的 IGS 核心站与 MGEX 项目站点,及其坐标均来自 IGS 网站。我已经将其整理成为 igs-core 和 mgex 两个 CSV 文件,你可以直接下载。

IGS 核心站与 MGEX 站点分布图

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature# Load the coordinate of IGS Core & MGEX sites, The CSV files are
# exported from: http://www.igs.org/network
igs_core = np.recfromcsv('igs-core.csv', names=True, encoding='utf-8')
mgex = np.recfromcsv('mgex.csv', names=True, encoding='utf-8')fig = plt.figure(figsize=[9, 6])
# Set projection
ax = plt.axes(projection=ccrs.Robinson())
# Add ocean and land
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
# Add MGEX & IGS core sites
ax.plot(mgex['longitude'], mgex['latitude'], 'o', color='tomato',label='MGEX', transform=ccrs.Geodetic())
ax.plot(igs_core['longitude'], igs_core['latitude'], '*', color='darkmagenta',label='IGS Core', transform=ccrs.Geodetic())
# Plot gridlines
ax.gridlines(linestyle='--')
# Set figure extent
ax.set_global()
# Set legend location
plt.legend(loc='lower right')
# Show figure
plt.show()

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

可以免费领取源码项目实战视频PDF文件

绘制 GNSS 控制网

这里使用的 IGS 站点坐标数据同样来自 IGS 网站。我已将其整理成一个 CSV 格式的文件:euro-igs,你可以直接下载使用。这里使用 matplotlib.tri 中的 Triangulation 来根据输入的点位坐标来创建 Delaunay 三角网,然后使用 plt.triplot() 方法绘制。

GNSS 控制网

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import cartopy.crs as ccrs
import cartopy.feature as cfeature# Load coordinate of the IGS sites in Europe, this CSV file is
# exported from: http://www.igs.org/network
igs_sites = np.recfromcsv('euro-igs.csv', names=True, encoding='utf-8')
# Generate Delaunay triangles
triangles = tri.Triangulation(igs_sites['longitude'], igs_sites['latitude'])fig = plt.figure(figsize=[6, 8])
# Set projection
ax = plt.axes(projection=ccrs.LambertConformal(central_latitude=90,central_longitude=10))
# Add ocean, land, rivers and lakes
ax.add_feature(cfeature.OCEAN.with_scale('50m'))
ax.add_feature(cfeature.LAND.with_scale('50m'))
ax.add_feature(cfeature.RIVERS.with_scale('50m'))
ax.add_feature(cfeature.LAKES.with_scale('50m'))
# Plot triangles
plt.triplot(triangles, transform=ccrs.Geodetic(), marker='o', linestyle='-')
# Plot gridlines
ax.gridlines(linestyle='--')
# Set figure extent
ax.set_extent([-10, 30, 30, 73])
# Show figure
plt.show()

绘制板块分布图

板块构造理论将地球的岩石圈分为十数个大小不等的板块。本图使用的 Nuvel 板块边界数据来自 EarthByte 网站,我已经将其整理为一个压缩文件,你可以直接下载使用。

Nuvel 板块分布图

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs# The plate boundary files
files = ['African.txt', 'Antarctic.txt', 'Arabian.txt', 'Australian.txt','Caribbean.txt', 'Cocos.txt', 'Eurasian.txt', 'Indian.txt', 'Juan.txt','Nazca.txt', 'North_Am.txt', 'Pacific.txt', 'Philippine.txt','Scotia.txt', 'South_Am.txt']
# Read boundaries into numpy
borders = []
for f in files:border = np.genfromtxt(f, names=['lon', 'lat'], dtype=float, comments=':')borders.append(border)
# Plate names
plates = ['African', 'Antarctic', 'Arabian', 'Australian', 'Caribbean', 'Cocos','Eurasian', 'Indian', 'Juan', 'Nazca', '  North\nAmerican', 'Pacific','Philippine', 'Scotia', '  South\nAmerican']
# Central point for every plate, just for text positioning
central = [(17, -5), (90, -80), (40, 21), (120, -28), (270, 12), (260, 6),(60, 50), (70, 13), (230, 45), (260, -21), (250, 36), (190, 0),(123, 17), (304, -59), (315, -27)]# Start plot
fig = plt.figure(figsize=(12, 7))
ax = plt.axes(projection=ccrs.Mollweide(central_longitude=120))
# Plot a image as background
ax.stock_img()
# Plot boundaries
for plate, center, border in zip(plates, central, borders):ax.plot(border['lon'], border['lat'], color='coral',transform=ccrs.Geodetic())ax.text(center[0], center[1], plate, transform=ccrs.Geodetic())plt.show()

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

以下文章来源于EasyShu ,作者姜英明

Python数据可视化:Cartopy 地理空间数据可视化相关推荐

  1. 城市地理空间数据可视化

    城市地理空间数据是跟城市中一切与地理空间分布有关的各种要素的图形信息.属性信息以及相互空间关系的总称. 城市地理空间数据的可视化表达就是根据相应的专题数据或是指标,采用一定的算法,对空间要素进行分类分 ...

  2. 数据可视化笔记6 空间数据可视化

    概括 坐标系:地理坐标系.投影坐标系.投影 空间数据格式:矢量.栅格 空间数据可视化:点数据.线数据.面数据.等值线/等高线图 不同空间数据可视化中需要注意的问题 文章目录 空间数据概念 空间数据格式 ...

  3. DEM数据下载——以地理空间数据云为例

    数字高程模型(Digital Elevation Model)是进行地形分析的重要基础,诸如坡度.坡向及水文分析等都在此基础上进行.今天,我们一起来聊一聊一种DEM数据常见下载方式. 按照惯例,先将网 ...

  4. 高德地图的地理空间数据可视化(Loca)

    摘要:最近我们的可视化界面改了好多版本,最近新提出来的需求,就是想要显示地图上的某个区域,希望是3D立体的.并且跟着中心点不同旋转到相对应的位置,并且在改立体的区域上加上相应的散点图.开始第一步的尝试 ...

  5. 转:实验3 地理空间数据可视化

    链接:https://blog.csdn.net/wpxu08/article/details/78130185

  6. 【Python数据可视化】使用geoplotlib绘制地理空间数据

    geoplotlib 前言 一.安装geoplotlib包 二.读取csv数据使用 1.点密度可视化 2.直方图 3. Voronoi图 总结 前言 ❤️❤️希望大家能多多点赞.❤️❤️ 需要数据集的 ...

  7. echart 数据点可以加链接吗_地理可视化就这么简单、酷炫,蚂蚁金服AntV 空间数据可视化引擎 L72.0发布...

    导读 L7 是由蚂蚁金服 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析开发框架.L7 中的 L 代表 Location,7 代表世界七大洲,寓意能为全球位置数据提供 ...

  8. 使用Python+Folium实现地理空间可视化效果

    概述 如今,有多个数据科学项目需要使用交互式地图.可以通过各种工具制作这种交互式绘图,其中一种工具是 Python 的 Folium 库 本文重点介绍使用 Folium 库创建令人印象深刻的地理可视化 ...

  9. 第五章:可视化地理空间数据

    5.1. 概述 地理空间数据界有句谚语:"如果一张图片值一千字,那么一张地图必须值一百万."在交互式地图上可视化地理空间数据是了解数据的好方法.在本章中,我们将学习如何只用几行代码 ...

最新文章

  1. jsp中两个字符串格式的日期可以相减吗_举个栗子!Tableau 技巧(126):学几个常用的日期函数...
  2. mysql 安装完成后需要做的配置
  3. 参加动画电影《魔比斯环》首映
  4. C#窗体间的数据传值(转)
  5. C++关键字this
  6. resnet结构_ResNet 残差网络论文阅读及示例代码
  7. HttpServletRequest即很多代码中的request对象
  8. ic卡读卡器软件_读卡器
  9. jQuery distpicker省市区三级联动
  10. 使用QT开发的简易音乐播放器
  11. 【免费办公软件】万彩办公大师教程丨文件批量解压工具
  12. prometheus监控nginx
  13. seo关键词优化技巧是什么
  14. 谷歌、亚马逊全面开火,一场前所未有的AI芯片大战
  15. AD之Via尺寸和盖油规则设置
  16. 【Java基础】【案例】
  17. eNSP构建企业私有网络
  18. 美国计算机工程专业,2018年美国大学本科计算机工程专业Top10
  19. php 导出excel分段导出_php 导出excel 10万数据
  20. 百度联合清华,全球首个十亿像素数据集来了!

热门文章

  1. SQL注入 基础概述及相关知识
  2. ics日历 android,哪些日历 App 支持导入 ics 或 webcal 协议订阅?
  3. SysML 第一讲:SysML简介
  4. 一句话生成图片,FlagAI使用(附页面操作代码) | 机器学习
  5. 火狐网页访问https提示安全连接失败
  6. 解决Chrome浏览器百度网页打开很慢的问题
  7. Supervisor socket.error No such file or directory file /usr/lib64/pyth
  8. 智能汽车能否真正实现无人驾驶,为什么?
  9. windows防火墙是干什么的_windows防火墙作用介绍
  10. Python实现FP树