Python 空间分析简介
Python 空间分析简介
Image Source: 关注
涉及任何类型的特定地理区域或位置信息的数据称为“空间”数据(或“地理空间”数据)。地理空间数据有助于理解地理属性和任何其他指标数据之间的关系,例如,产品销售如何从城市地区到沿海地区?地理空间数据有多种应用,例如
- 可视化数据描述的区域
- 执行贸易区域分析
- 为品牌选择开设新店的地点
- 规划电信/运输网络
- 由于破坏性天气等造成的风险评估
获得这样的见解很有价值,这使得空间数据技能成为任何数据科学家工具集的重要补充。在本文中,通过“geopandas”包中的一些基本地理空间操作提供了 Python 空间分析生态系统的介绍性概述。在本文结束时,读者将了解
- 地理空间数据格式基础
- 从纬度和经度创建点几何
- 在交易分析点周围创建缓冲区
- 使用 folium 可视化地理空间数据
- 相交点的两个空间数据帧之间的连接操作
1. 使用地理空间数据
1.1。 矢量数据
矢量数据代表世界上的几何形状。打开导航地图时,您会看到矢量数据。道路网络、建筑物、餐馆和 ATM 都是具有相关属性的向量。矢量数据只是称为“顶点”的离散位置((x,y)值)的集合,它们定义了三种形状之一:
- 观点 : 单个 (x, y) 点。比如你家的位置。
- 线 : 两个或多个连接的 (x, y) 点。就像一条路。
- 多边形 : 三个或更多 (x, y) 点连接并闭合。就像一个湖泊,或者一个国家的边界。
Shapes of different vector data
矢量数据通常以“shapefile”格式存储。 shapefile 由三个具有相同前缀(此处为“空间数据”)但扩展名不同的必需文件组成:
- 空间数据.shp :存储每个形状几何记录的主文件
- 空间数据.shx :主文件中的几何图形如何相互关联的索引
- 空间数据.dbf : 每条记录的属性
还有其他文件类型用于存储矢量数据,例如 geojson。这些文件通常可以使用我们在下面使用的相同方法和包导入 Python。
1.2. 地质调查局
在本文中,我们将主要使用名为 地理熊猫 在 python 中处理矢量数据。 Geopandas 扩展了 熊猫 地理空间数据的能力并利用 匀称 对空间数据进行几何运算。 Geopandas 取决于 菲奥娜 用于文件访问和 matplotlib 用于绘图。 geopandas 中使用的关键数据类型是 GeoSeries 和 GeoDataFrame,例如 Pandas 的 Series 和 DataFrames。 GeoDataFrames 包含通常称为“几何”的几何列。几何列包含不同的几何形状,如点(纬度和经度)、线、多边形等,作为形状对象。下面是 GeoDataFrame 的示意图。
Data format of a typical geodataframe
接下来,我们将通过分析美国快餐店的数据集来探索地理空间操作的一些示例。
2. 美国快餐案例研究
在本案例研究中,我们将使用来自 卡格尔 其中包含有关美国 10,000 家快餐店的信息。为简单起见,我们将只分析数据集的一个子集。目标是定位纽约州的所有麦当劳餐厅,并确定有多少汉堡王餐厅(麦当劳的竞争对手)位于相应的麦当劳餐厅附近。
首先,我们将导入必要的 python 库并加载数据集。
2.1。 创建点和缓冲区
请注意,这些数据集是常见的 Pandas 数据框。接下来,我们将通过从纬度和经度创建点几何对象来将这些转换为地理数据帧。以下函数使用 WGS84 的坐标参考系统 (CRS) 将数据集转换为地理空间数据。 WGS84 是 GPS 的标准,由参考椭球体、标准坐标系、高度数据和大地水准面组成。鼓励读者检查这个 关联 了解更多关于 CRS 的信息。
如下所示,已经创建了一个新列“Centroid”,它是一个点几何数据类型,并且数据帧的类被转换为 GeoDataFrame。
接下来,我们根据给定的半径在质心点周围创建一个缓冲区。
如下所示,GeoDataFrame 现在包含另一个名为“Buffer_Area”的几何对象列,它是一个多边形。
2.2. 可视化地理空间数据
现在,我们将使用 python 库在地图上可视化点('Centroid')和多边形('Buffer_Area')几何对象' 叶子 ' 和底层的内置瓦片集 '开放街道地图' .
McDonald’s in New York State
Polygons are drawn around 3 miles from all the McDonald’s
2.3. 空间连接
在本节中,我们将使用 Geopandas 的空间连接功能找到位于麦当劳相应缓冲区内的汉堡王餐厅点。就像 Pandas 的连接操作一样,这个操作也涉及连接两个地理数据框,它们都至少有一个几何类型变量。但是,还有一些额外的事情值得注意:
- 来自两个数据帧的几何对象的 CRS 单位应该匹配。
- 要连接的每个数据框中的几何对象都应命名为“geometry”或“set_geometry”选项,如果数据框中有多个几何列,则应使用选项来表示主要几何对象。
- 执行内部空间连接操作后,仅保留左侧数据帧中的几何对象数据,丢弃另一个。
有关详细信息,请读者查看 geopandas 文档 这里 .下面的代码演示了如何使用 spatial_match 查找位于纽约麦当劳 3 英里范围内的汉堡王。
如下图放大版所示,汉堡王在麦当劳的蓝色缓冲区内被标记为红色点。
Red points indicate the locations of Burger Kings
此案例研究的代码可在此找到 github链接 .
三、结论
本文的目标是介绍地理空间分析、geopandas 和其他资源丰富的开源 python 空间库的概念。我们已经介绍了常见的空间操作,例如创建几何点、创建缓冲区、空间连接以及在地图上可视化地理空间数据。地理空间分析还可以做很多事情,例如从地理空间数据创建 KML 文件、计算地理点之间的行驶距离等,我们希望在以后的文章中介绍这些内容。所以请继续关注。
致谢: 谢谢 @ 赛马尼坎塔穆卡 与本文合作 .
4. 参考文献
[
GeoPandas 0.11.0 - GeoPandas 0.11.0+0.g1977b50.dirty 文档
GeoPandas 是一个开源项目,可以更轻松地在 python 中处理地理空间数据。 GeoPandas 扩展了…
geopandas.org
](https://geopandas.org/en/stable/)
[
Shapely 用户手册 - Shapely 1.8.4 文档
作者 Sean Gillies,版本 1.8.0 日期 2022 年 8 月 17 日 版权所有本作品根据知识共享协议获得许可……
shapely.readthedocs.io
](https://shapely.readthedocs.io/en/stable/manual.html)
[
1 Fiona 用户手册 - Fiona 2.0dev 文档
地理信息系统 (GIS) 帮助我们计划、应对和了解我们的物理、政治...
fiona.readthedocs.io
](https://fiona.readthedocs.io/en/latest/manual.html)
[
Folium - Folium 0.12.1 文档
基于 Python 生态系统的数据整理优势和库的映射优势。操纵…
python-visualization.github.io
](https://python-visualization.github.io/folium/)
[
美国各地的快餐店
10,000 家餐厅及其位置的列表。
www.kaggle.com
](https://www.kaggle.com/datasets/datafiniti/fast-food-restaurants?select=FastFoodRestaurants.csv)
[
开放街图
OpenStreetMap 是世界地图,由像您这样的人创建,在开放许可下免费使用。
openstreetmap.org
[
EPSG.io:全球坐标系
EPSG.io:全球坐标系(EPSG/ESRI),在地图上预览位置,获取转换,WKT,OGC GML,Proj.4…
epsg.io
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明