首页 > 编程语言 >用于地理空间数据分析的 5 个 Python 包

用于地理空间数据分析的 5 个 Python 包

时间:2023-08-10 15:13:05浏览次数:75  
标签:数据分析 Python Geopandas 空间数据 地理 空间 可视化

推荐:使用NSDT场景编辑器助你快速搭建可编辑的3D应用场景

介绍

地理空间数据分析在城市规划、环境研究、农业和运输行业中至关重要。不断增长的需求导致越来越多地使用Python包来满足各种地理数据分析要求,例如分析气候模式,调查城市发展或跟踪疾病传播等。评估和选择具有快速处理、修改和可视化功能的正确工具对于有效分析和可视化地理空间数据至关重要。

了解地理空间数据

首先必须了解什么是地理空间数据。地理空间数据是具有表示地球表面上对象、特征或事件的位置和质量的地理或地理组件的数据。它描述了物理宇宙中各种物品的空间联系、分布和属性。地理空间数据主要有两种类型:

  • 栅格数据:适用于没有固定边界的连续信息,表示为具有指示观测要素的值的像元格网。它通常定期监测并插值以创建连续表面。
  • 矢量数据:它使用点、线和面来表示空间属性,包括感兴趣点、交通网络、行政边界和地块,通常用于具有精确位置或硬约束的离散数据。

地理空间数据可以以多种格式存储,例如:

  • ESRI 形状文件
  • 地理数据
  • Erdas Imagine Image File Format (EIF)
  • GeoTIFF, Geopackage (GPKG)
  • GeoJSON, 光检测
  • 测距(激光雷达)等等。

地理空间数据包含卫星图像、高程模型、点云、土地利用分类和基于文本的信息等多种类型,为跨行业的空间分析和决策提供了有价值的见解。Microsoft、谷歌、Esri 和亚马逊网络服务等大公司利用地理空间数据获得有价值的见解。让我们探索用于地理空间数据分析的前五个 Python 包。这些软件包支持数据读取/写入、操作、可视化、地理编码和地理索引,迎合初学者和有经验的用户。了解这些软件包如何支持从地理空间数据中进行有效的探索、可视化和见解提取。让我们开始吧!

1. Geopandas

适用于: 矢量数据

Geopandas 是一个广泛使用的 Python 库,用于处理矢量地理空间数据,在 Pandas DataFrame 中提供直观的地理数据处理。它支持形状文件和 GeoJSON 等格式,并提供合并、分组和空间连接等空间操作。Geopandas与Pandas,NumPy和Matplotlib等流行库无缝集成。它可以处理大型数据集,但这可能会带来挑战。Geopandas 包通常用于空间数据分析任务,包括空间联接、查询和地理空间操作(如缓冲和交集分析)。Geopandas需要不同的软件包,如Shapely来处理几何操作,Fiona访问文件,matplotlib打印。

例如,Geopandas可用于探索房地产数据,以确定城市中最昂贵的社区,或分析人口数据以可视化不同社区的增长和迁移模式。

我们可以使用 pip 来安装软件包:

pip install geopandas

用地理Geopandas绘图

让我们查看内置地图,如下所示:

import geopandas 
# Check available maps
geopandas.datasets.available

我们将使用 Geopandas 加载世界地图的数据集,提取美国的 shapefile,并使用以下代码将其绘制在图形上:

# Selecting a particular map
geopandas.datasets.get_path('naturalearth_lowres')
# Open the selected map - GeoDataFrame
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
# Create a subset of the GeoDataFrame
usa = world[world.name == "United States of America"]
# Plot the subset
usa.plot();

上面的代码打印子集数据框的地图:

 

用于地理空间数据分析的 5 个 Python 包

2. 叶子

适用于: 点云

Folium 是一个 Python 库,用于创建带有标记、弹出窗口、choropleths 和其他地理空间可视化的交互式地图。它与Leaflet JavaScript库集成,并允许将地图导出为HTML。它可以与Geopandas和Cartopy结合使用,并使用地图切片处理大型数据集。Folium 擅长简单、美观和与其他地理空间库的集成。但是,对于高级地理空间分析和操作,Folium 可能有局限性。

例如,Folium可用于供应链和物流,以可视化分销网络,优化路线和监控装运位置。

我们可以使用以下命令安装 Folium:

pip install folium

用叶子绘图

让我们打印一个以 [0, 0] 为中心的交互式地图示例,并在同一位置放置一个标记,代码行如下:

import folium
# Generate a Folium map with center coordinates (0, 0)
map = folium.Map(location=[0, 0], zoom_start=2)
# Locate the coordinates 0, 0
folium.Marker([0, 0]).add_to(map)
# Display the map
map
用于地理空间数据分析的 5 个 Python 包

 

可以通过基于特定地理空间数据添加标记、图层或样式选项来进一步自定义此地图。

3. IPY传单

适用于:点云,交互式

ipyleaflet 包可以在 Python 中轻松创建交互式地图,特别是在 Jupyter 笔记本中,允许用户生成和共享具有各种底图、标记和其他地理空间操作的交互式地图。ipyleaflet 建立在传单 JavaScript 库的基础上,支持 GeoJSON 和 WMS 层、CSS 和 JavaScript 样式以及地理空间计算。虽然 ipyleaflet 在交互式小部件方面表现出色,但由于其对 JavaScript 的依赖性,它可能不适合纯基于 Python 的项目。

例如,ipyleaflet可以应用于环境监测,以可视化传感器数据,监测空气质量并实时评估环境变化。

要安装 ipyleaflet,我们使用 pip 命令:

pip install ipyleaflet

用 ipyleaflet 绘图

让我们使用以下代码创建一个交互式地图,并在坐标 (40.7128, -74.0060) 处放置一个标记,以表示纽约市的兴趣点:

from ipyleaflet import Map, Marker
# Create the map
m = Map(center=(40.7128, -74.0060), zoom=12)
# Add the market
marker = Marker(location=(40.7128, -74.0060))
m.add_layer(marker)

下面是代码的输出:

 

用于地理空间数据分析的 5 个 Python 包

4. 光栅

适用于: 栅格数据

Rasterio 是一个功能强大的 Python 库,用于处理地理空间栅格数据,提供高效的性能和广泛的操作,如裁剪、重新投影和重新采样。它支持各种栅格格式,并与其他地理空间库很好地集成,尽管它在处理矢量数据和复杂的分析任务方面存在局限性。尽管如此,Rasterio是Python中高效处理栅格数据的重要工具。

例如,栅格可用于读取和写入卫星影像、执行地形分析、从数字高程模型中提取数据以及执行遥感分析等任务。

!pip install rasterio

rasterio.open() 函数打开文件,read() 方法将图像读取为 numpy 数组。最后,来自 Matplotlib 的 plt.imshow() 函数用于显示图像,plt.show() 在输出中显示绘图。

使用栅格进行绘图

import rasterio
from rasterio.plot import show

我们使用栅格库打开并可视化来自 kaggle 上数据集“气候数据的高分辨率 GeoTIFF 图像”的“样本.tif”文件中的光栅图像,将红色通道(图像中的颜色通道之一)显示为带有红色色彩图的子图,并将原始图像(包括多个颜色通道)显示为另一个带有 viridis 色彩图的子图。其他颜色通道,如绿色和蓝色,也可以使用这种方法进行可视化。

src = rasterio.open('/content/sample.tif')
plt.figure(figsize=(15,10))
fig, (axr, axg) = plt.subplots(1,2, figsize=(15,7))
show((src, 1), ax=axr, cmap='Reds', title='red channel')
show((src), ax=axg, cmap='viridis', title='original image')
plt.show()
用于地理空间数据分析的 5 个 Python 包


原始GeoTIFF图像(右)来源:kaggle.com

在地理空间分析中分析特定颜色通道(如红色、蓝色和绿色)是为了关注或提取与图像的这些颜色组件所表示的特定属性、特征或特征相关的有价值信息。这方面的例子可包括遥感中的植被健康、植被指数或水体等。

5. 地理图

适用于:矢量数据、交互式

Geoplot 是一个用户友好的 Python 库,用于快速创建具有视觉吸引力的地理空间可视化,包括分区统计图和散点图。它与流行的数据操作库(如 Pandas)无缝集成,并支持多种地图投影。但是,与专用地理空间库相比,Geoplot 在交互式地图支持和绘图类型范围较小方面存在局限性。尽管如此,它对于快速地理空间数据可视化和深入了解空间模式仍然很有价值。

!pip install geoplot

使用地理绘图进行绘图

我们将使用 Geoplot 绘制分区统计图可视化,其中我们根据“大陆”属性从世界形状文件中选择亚洲国家,根据“pop_est”属性分配颜色强度,并使用带有图例的图例的“冰火”绘制地图图,图例大小为 10 x 5。

import geoplot
#Plotting population for Asia
asia = world.query("continent == 'Asia'")
geoplot.choropleth(asia, hue = "pop_est", cmap = "icefire",legend=True, figsize = (10, 5));
用于地理空间数据分析的 5 个 Python 包

 

例如,geoplot包可以创建分区统计图来可视化人口密度,绘制犯罪事件的空间模式,显示环境因素的分布,并根据地理数据分析疾病的传播。

结论

总之,地理空间Python包有助于有效地分析基于位置的信息。所讨论的每个包都有其优点和缺点,但是在处理地理空间数据时,它们可以共同形成一套强大的Python工具。因此,对于初学者或经验丰富的 GIS 专业人员来说,这些软件包对于以新的创新方式分析、可视化和操作地理空间数据很有价值。

 

原文链接:用于地理空间数据分析的 5 个 Python 包 (mvrlink.com)

标签:数据分析,Python,Geopandas,空间数据,地理,空间,可视化
From: https://www.cnblogs.com/mvrlink/p/17620371.html

相关文章

  • # yyds干货盘点 # 盘点一个列表相加的Python基础题目
    大家好,我是皮皮。一、前言前几天在明佬的Python群【dq】问了一个Python列表基础处理的问题,一起来看看吧。下图是他的原始列表,想通过左边的列表,得到右边的合并列表。二、实现过程这里【流水线】和【hclw】大佬给了一个答案,如下图所示:如此顺利地解决了粉丝的问题。后来他自己也写了个......
  • python读取xml文件
    Python有三种方法解析XML:SAX,DOM,以及ElementTree,本博客主要是讲解DOM和ElementTreeDOM解析方法:xml文件解析首先将xml文件加载进内存,然后读取文件中的内容.在内存将文件以树的结构进行保存,树根在上,树枝在下,整个xml文件被封装为Document对象,文件中的标签节点被封装为No......
  • Windows11安装python模块transformers报错Long Path处理
    Windows11安装python模块transformers报错,报错信息如下ERROR:CouldnotinstallpackagesduetoanOSError:[Errno2]Nosuchfileordirectory:'C:\\Users\\27467\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCac......
  • 爬虫框架的选择与对比:Python爬虫框架的比较与评估
    爬虫框架的选择与对比:Python爬虫框架的比较与评估Hey大家好!作为一名专业的隧道代理供应商,我今天要和大家分享一些关于爬虫框架的知识。在开发爬虫项目时,选择一个合适的框架非常重要,它可以提高开发效率、简化操作并提供丰富的功能。Python作为一门流行的编程语言,拥有许多优秀的爬虫......
  • 提升Python运行速度的必备工具清单
    提升Python运行速度的必备工具清单大家好呀!今天我要给大家分享一下可以让Python变得更快的工具清单。可能有些小伙伴一直在为Python的执行速度苦恼,今天就给大家分享一些实用的工具,可能能够帮到你哦!1.PyPy:PyPy是一个用JIT(即时编译)技术实现的Python解释器,相比于传统的CPython解释器,它......
  • 如何在python中使用pywebcopy克隆网页?
    Python提供了Pywebcopy模块,允许我们将整个网站下载并存储到我们的机器上,包括所有图像,HTML页面和其他文件。在这个模块中,我们有一个函数,即 save_webpage(),它允许我们克隆网页。安装pywebcopy模块首先,我们必须使用以下代码在python环境中安装pywebcopy模块。pip install ......
  • 用Python学人工智能_学习日志
    学习中国MOOC"用Python学人工智能"整理的笔记——[email protected]欢迎交流20230805在python中,函数和方法很像又有不同'hello'.upper()#得到'HELLO'int(10.5)#得到10python中列表>>>a=[1,2,3,4,5]>>>a[0]1>>>a[0:3][......
  • sftp python
    #pipinstallpysftpimportpysftpclassSftpUtil(object):def__int__(self,host,port,username,password):self.host=hostself.port=portself.username=usernameself.password=passworddefget_connnet(self):......
  • Python语言代码示例
    PythonrequestsimportrequeststargetURL="https://ip.hahado.cn/api/index?ip=&type=0"proxyAddr="您的代理IP:端口"authKey="请改成您的Key"password="请改成您的AuthPwd"#账密模式proxyUrl="http://%(user)s:%(password)s@%(serv......
  • 爬虫与搜索引擎优化:通过Python爬虫提升搜索排名
    作为一名专业的爬虫程序员,我深知网站的搜索排名对于业务的重要性。在如今竞争激烈的网络世界中,如何让自己的网站在搜索引擎结果中脱颖而出,成为关键。今天,和大家分享一些关于如何通过Python爬虫来提升网站的搜索排名的技巧和实践经验。无论你是在提升自己的网站排名还是优化客户的SE......