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

2023年08月09日 由 camellia 发表 455 0
本文讨论了地理空间分析的重要性,并介绍了五个基本的Python包,用于有效地处理和可视化来自地理空间数据的有价值洞察。

介绍


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

了解地理空间数据


首先,了解什么是地理空间数据是至关重要的。地理空间数据是具有地理或地理组成部分的数据,表示地球表面对象、特征或事件的位置和特性。它描述了物理宇宙中不同物品的空间联系、分布和属性。地理空间数据主要有两种类型:

栅格数据:适用于没有固定边界的连续信息,表示为具有指示观察特征的值的单元格网格。它经常以规律的间隔进行监测,并进行插值以创建连续表面。

矢量数据:使用点、线和多边形来表示空间属性,包括感兴趣点、交通网络、行政边界和土地地块等,通常用于具有精确位置或硬性约束的离散数据。

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

  • ESRI Shapefile
  • GeoJSON
  • Erdas Imagine Image File Format (EIF)
  • GeoTIFF、Geopackage (GPKG)
  • GeoJSON、光线探测 (LiDAR)等。

地理空间数据包括卫星图像、高程模型、点云、土地利用分类和基于文本的信息等各种类型,为跨行业的空间分析和决策提供了有价值的洞察。微软、谷歌、Esri和亚马逊网络服务等大型企业都利用地理空间数据获得有价值的洞察。让我们探索用于地理空间数据分析的五个顶级Python包。这些包可以进行数据读取/写入、操作、可视化、地理编码和地理索引,适用于初学者和有经验的用户。了解这些包如何增强地理空间数据的有效勘探、可视化和洞察提取。

1.Geopandas

适用于:矢量数据

Geopandas是一个广泛使用的Python库,用于处理矢量地理空间数据,在Pandas数据框中提供直观的地理数据处理。它支持Shapefile和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();

上述代码会打印出子集数据帧的地图:
1.1

2.Folium

适用于:点云

Folium是一个用于创建带有标记、弹出窗口、等值图和其他地理空间可视化的Python库。它与Leaflet JavaScript库集成,并允许将地图导出为HTML。它可以与Geopandas和Cartopy结合使用,并使用Map Tiles来处理大型数据集。Folium在简洁性、美学和与其他地理空间库的集成方面表现出色。然而,对于高级地理空间分析和操作,Folium可能存在局限性。

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

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

使用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
1.2
可以根据特定的地理空间数据,进一步自定义此地图,添加标记、图层或样式选项。

3.ipyleaflet

适用于:点云、交互式

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

例如,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)

下面是代码的输出:
1.3

4.Rasterio

适用于:栅格数据

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

例如,Rasterio可用于读取和写入卫星图像、进行地形分析、从数字高程模型提取数据和进行遥感分析等任务。
!pip install rasterio

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

使用rasterio进行绘图
import rasterio
from rasterio.plot import show

我们使用rasterio库打开和可视化来自kaggle上的“高分辨率气候数据的GeoTIFF图像”数据集中的“sample.tif”文件的栅格图像,将红色通道(图像中的一种颜色通道)作为具有Reds颜色映射的子图,并将原始图像(由多个颜色通道组成)作为具有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()
1.4
原始GeoTIFF图像(右)来源:kaggle.com

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

5.Geoplot

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

Geoplot是一个用户友好的Python库,用于快速创建外观漂亮的地理空间可视化,包括等值图和散点图。它可以与流行的数据处理库如Pandas无缝集成,并支持多种地图投影。然而,Geoplot在交互式地图支持和绘图类型的范围方面有限制,比专业的地理空间库要少。尽管如此,它仍然对快速地理空间数据可视化和获取空间模式的洞察很有价值。
!pip install geoplot

使用geoplot进行绘图

我们将使用Geoplot绘制一个等值图可视化,根据“continent”属性从世界形状文件中选择亚洲国家,根据“pop_est”属性分配颜色强度,并使用“icefire”颜色映射绘制带有10乘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));
1.5

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

结论


总之,地理空间Python包有助于有效分析基于位置的信息。讨论的每个包都有其优点和局限性,但它们在处理地理空间数据时可以形成功能强大的Python工具套件。因此,对于初学者或经验丰富的GIS专业人员来说,这些包在以新颖和创新的方式分析、可视化和处理地理空间数据方面都是有价值的。
文章来源:https://www.kdnuggets.com/2023/08/5-python-packages-geospatial-data-analysis.html
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消