使用Python Cartopy进行地图绘制

一、介绍

Python Cartopy是一个开源的Python库,继承了matplotlib的绘图风格,同时提供了更多丰富的地图投影和数据转换工具,可以帮助我们绘制地图、天气图等地理信息可视化的图表。

在现代社会,地图数据已经成为企业、政府和学术研究的重要基础数据资源。使用Python Cartopy可以让我们更方便地处理和绘制地理信息数据,同时还提供了大量的地图投影方式和地理坐标系,使得我们能够更加细致地展现全球和局部的地理数据。

二、绘制静态地图

1.准备工作

在使用Python Cartopy之前,我们需要先安装Cartopy模块。可以通过pip install cartopy命令来安装。

!pip install cartopy

同时,还需要导入相关的Python模块:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

2.绘制地图

接下来,我们可以绘制一个简单的世界地图。代码如下:

fig = plt.figure(figsize=(10,5)) #创建画布
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) #创建地图子图
ax.coastlines() #添加海岸线
plt.show()

在该代码中,我们首先创建了一个大小为10×5的画布,并在其中创建了一个地图子图。projection参数可以指定地图的投影方式,这里我们使用了等面积Cylindrical投影方式(ccrs.PlateCarree())。

随后,我们使用了ax.coastlines()方法添加了海岸线,并通过plt.show()显示了地图。

运行上述代码,可以绘制出如下的简单地图:

3.添加地图元素

除了海岸线外,我们还可以在地图上添加其他的元素,例如国家和城市的名称。代码如下:

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax.coastlines()
ax.set_title('World Map', fontsize=16) #设置地图标题
ax.text(-168, -57, 'New Zealand', transform=ccrs.PlateCarree()) #添加新西兰的文本标注
ax.text(-66, 10, 'Brazil', transform=ccrs.PlateCarree()) #添加巴西的文本标注
plt.show()

在该代码中,我们使用了ax.set_title()来设置地图的标题,并通过ax.text()方法在地图上添加了新西兰和巴西的文本标注。

运行上述代码,可以绘制出如下的地图:

4.自定义地图

在绘制地图时,还可以通过更改地图的投影、颜色等属性来实现更为自定义的需求。下面是一个例子,展示如何绘制自定义颜色、自定义维度和自定义投影的地图。

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.LambertAzimuthalEqualArea(central_latitude=55, central_longitude=10)) #更改投影方式
ax.set_extent([-10, 100, 30, 80], crs=ccrs.PlateCarree()) #更改地图范围
ax.add_feature(cartopy.feature.OCEAN, facecolor='lightblue') #更改海洋颜色
ax.add_feature(cartopy.feature.LAND, facecolor='beige') #更改陆地颜色
ax.add_feature(cartopy.feature.COASTLINE, linewidth=0.5) #更改海岸线粗细
plt.show()

在该代码中,我们使用了LambertAzimuthalEqualArea投影方式,同时使用set_extent()方法更改了地图的范围。

在地图上,我们使用了add_feature()方法来添加陆地、海洋和海岸线的属性,并通过facecolor参数来更改颜色。

运行上述代码,可以绘制出如下的自定义地图:

三、绘制动态地图

1.准备工作

Python Cartopy不仅可以绘制静态地图,还可以绘制动态地图。在使用Python Cartopy绘制动态地图之前,我们需要导入更多的Python模块,以及四个不同的数据文件mapData、latData、lonData、tempData。这些数据文件包含了每个时刻每个位置的温度数据和经纬度数据。

import pandas as pd
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import numpy as np

csv_file = 'https://raw.githubusercontent.com/plotly/datasets/master/2015_06_30_realtime_global_temperatures.csv'
df = pd.read_csv(csv_file)
mapData = df.groupby(["lat","lon"]).mean()["surface temperature (C)"].reset_index()
latData = np.array(mapData["lat"])
lonData = np.array(mapData["lon"])
tempData = np.array(mapData["surface temperature (C)"])

2.绘制动态地图

接下来,我们可以绘制动态地图。代码如下:

for i in range(len(latData)):
    fig = plt.figure(figsize=(8,6))
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    ax.set_title("Temperature across the world")
    ax.coastlines()
    ax.stock_img()
    ax.gridlines()
    ax.scatter(lonData[:i], latData[:i], marker="o", color="r", s=tempData[:i]*1000, alpha=0.4, transform=ccrs.PlateCarree())
    plt.show()

在该代码中,我们首先通过for循环,遍历了所有的经纬度点,并在每个时刻绘制了该时刻的温度数据点。

在图表中,我们使用了scatter()方法来绘制温度数据点。s参数用于设置绘制点的大小,alpha参数用于设置点的透明度。

运行上述代码,可以得到如下的动态地图(需在jupyter notebook或者本地python环境中运行):

2.总结

Python Cartopy是一个非常方便的工具,可以帮助我们绘制静态和动态的地图。在使用该工具时,我们需要先了解基本的Python和地理信息学知识,同时学会使用相关的Python模块,例如pandas、matplotlib和numpy等。

原创文章,作者:HAVCY,如若转载,请注明出处:https://www.506064.com/n/316162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HAVCYHAVCY
上一篇 2025-01-09 12:13
下一篇 2025-01-09 12:14

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论