1  GeoPandas介绍

GeoPandas是一个开源项目,可以更轻松地使用python处理地理空间数据。

GeoPandas扩展了Pandas中使用的数据类型DataFrame,允许对几何类型进行空间操作。

GeoPandas的目标是使在python中使用地理空间数据更容易。它结合了Pandas和Shapely的能力,提供了Pandas的地理空间操作和多种Shapely的高级接口。GeoPandas可以让您轻松地在python中进行操作,否则将需要空间数据库,如PostGIS。

1.1 GeoPandas 概念

GeoPandas 的核心是 geopandas.GeoDataFrame, pandas.DataFrame的一个子类。这个GeoDataFrame可以存储几何列并执行空间操作。

  几何图形由geopandas.GeoSeries处理。它是panda.series的一个子类。   

  GeoDataFrame 是一组Series的组合(可以是数字、文本、布尔变量等等),同时GeoDataFrame也包括了带有几何图形信息的geopandas.GeoSeries(点、多边形等)

   

每个GeoSeries可以包含任何几何类型,并具有一个GeoSeries.crs属性,它存储关于投影的信息(crs代表坐标参考系统 Coordinate Reference System)。因此,GeoDataFrame中的每个GeoSeries可以在不同的投影中,例如,允许您拥有相同几何图形的多个版本(不同投影)。

GeoDataFrame中只有一个GeoSeries被认为是活跃的几何图形,这意味着应用于GeoDataFrame的所有几何操作都是在这个活动列上操作的。

2读取和写文件

2.1 读文件

假设我们有一个文件,这个文件同时有数据和几何信息(比如,GeoPackage, GeoJSON,Shapefile等),我们可以用geopandas.read_file来读取它。这个操作可以自动探测文件属性,并创建一个GeoDataFrame。

比如我们使用’nybb‘数据集,这个数据集是纽约各区地图,GeoPandas安装的一部分。

import geopandaspath_to_data = geopandas.datasets.get_path("nybb")
gdf = geopandas.read_file(path_to_data)gdf

2.2 写文件

写文件直接用GeoDataFrame.to_file即可

默认的文件格式是Shapefile,但是你也可以用driver来赋值给

3 简单的方法

现在我们有了GeoDataFrame,可以开始处理它的几何属性了。

因为我们只从文件中读取了一个几何列,它被自动视为活跃几何属性。GeoDataFrame上定义的方法将应用到“几何”列。

3.1 测量面积

计算一个多边形的面积,我们可以使用GeoDataFrame.area属性,他会返回一个 pandas.Series。

   注意GeoDataFrame.area只会应用于活跃的几何列

gdf = gdf.set_index("BoroName")
gdf

gdf["area"] = gdf.area
gdf

3.2 得到多边形的边界

GeoDataFrame.boundary.

3.3 得到多边形的质心

3.4 测量距离

我们还可以测量每个质心与第一个质心的距离。

这里我们先设定一个 Point作为我们的基准点,然后对某一列进行求距离的操作

求得的结果是一个DataFrame,所以我们可以在地理空间数据集上使用所有的pandas功能,并使用属性和几何信息一起做数据操作。

3.5 制作地图

GeoPandas还可以绘制地图,这样我们就可以检查我们的几何图形在空间中的样子。

方法就是GeoDataFrame.plot()

在下面的例子中,我们对gdf画图

3.5.1  首先我们查看当前的活跃几何列

3.5.2 然后绘图

(这个相当于底图)

我们用当前的活跃几何列描绘某一列GeoSeries

3.5.3 切换活跃列

我们切换活跃列(set_geometry),出来的就是不一样的东西

     

3.5.4 叠加GeoSeries

我们也可以将两个GeoSeries叠加在一起。我们只需要用一个图作为另一个图的轴axis。

gdf["centroid"]是在ax之上画成的,所以ax是“最底层”。

因而右边的图,ax交换之后,就显示不出黑点了,因为gdf["centroid"]被 gdf["geometry"]覆盖住了

4 创建几何图形

在我们已经有的几何图形的基础上,我们可以创建新的图形

4.1 凸包 convex hull

GeoDataFrame.convex_hull.

4.2 缓冲 buffer

在某些情况下,我们可能需要使用GeoDataFrame.buffer()缓冲几何图形。

GeoDataFrame.buffer()方法会自动应用于活跃的几何列,但我们也可以直接应用于任何GeoSeries。

让我们缓冲 区和它们的中心,并把它们画在一起。

缓冲活跃几何列10000英尺

gdf["buffered"] = gdf.buffer(10000)

缓冲质心几何列10 000英尺

gdf["buffered_centroid"] = gdf["centroid"].buffer(10000)

做图可视化

ax = gdf["buffered"].plot(alpha=.5,figsize=(15,15))
gdf["buffered_centroid"].plot(ax=ax, color="red", alpha=.5)
gdf["bound"].plot(ax=ax, color="white", linewidth=.5)

5 几何相关性

我们也可以去研究不同几何列的空间关系。利用上面的几何图形,我们可以检查哪些缓冲区与布鲁克林的原始几何体相交,也就是说,距离布鲁克林10000英尺以内的区域。

首先我们先找到布鲁克林区的多边形

gdf.loc["Brooklyn", "geometry"]

5.1 相交

然后我们可以看哪些 gdf["buffered"] 里面的几何体和布鲁克林区相交

5.2 在原始多边形内

我们可以检查哪些缓冲质心是完全在原多边形内的。

画图认证:

gdf = gdf.set_geometry("buffered_centroid")
ax = gdf.plot("within", legend=True, categorical=True, legend_kwds={'loc': "upper left"})
# using categorical plot and setting the position of the legend
gdf["bound"].plot(ax=ax, color="black", linewidth=.5)
# passing the first plot and setting linewitdth to 0.5

6 投影

每一个GeoSeries 都有一个坐标参考系 Coordinate Reference System (CRS),GeoSeries.crs

CRS告诉GeoPandas几何图形的坐标在地球上的位置。

在某些情况下,CRS是地理坐标,这意味着坐标以纬度和经度表示。在这些情况下,其CRS是WGS84,其授权代码是EPSG:4326。

让我们看看纽约区GeoDataFrame的投影

使用英尺坐标的几何图形的授权代码是 EPSG:2263。我们可以通过GeoSeries.to_crs()将GeoSeries投影到别的授权编码上

gdf = gdf.set_geometry("geometry")
boroughs_4326 = gdf.to_crs("EPSG:4326")
boroughs_4326.crs

两个编码的区别在于,我们之前两个点的举例是 120 000 - 280 000 (feet),现在是 40.5 - 40.9 (degrees)

参考资料:Introduction to GeoPandas — GeoPandas 0.9.0 documentation

python包介绍:GeoPandas(初识)相关推荐

  1. python 包介绍:osmnx

    1 osmnx介绍 一个Python 包,可检索.建模.分析和可视化来自 OpenstreetMap 的街道网络. 2 graph模块 graph类型就是networkx 包中的graph类型.所以p ...

  2. python包介绍:numpy

    1 ndarray 相比于python中的list,ndarray的核心优势就是运算快 Numpy 喜欢用电脑内存中连续的一块物理地址存储数据 Python 的 List 并不是连续存储的,它的数据是 ...

  3. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...

    点击上方 Z先生点记,加为星标 第一时间收到 Python 技术干货! 文字 OCR 识别技术现在已经相当成熟了,无论 其 准确度还是识别速度 都能够满足我们的日常需要:今天给大家介绍一个 Pytho ...

  4. anaconda怎么使用python包_Anaconda中python包的介绍与使用方法

    Anaconda中python包的介绍与使用方法 目录: 1.包的定义 2.常用包管理器 3.包管理器的使用方法 4.数据科学常用的包 1.包的定义 由多个和同一功能相关的模块组成,通常为含有_ini ...

  5. python包的中 _init _.py文件介绍

    python包的中 _init _.py文件介绍 我们新建python包时常常会看到一个__init _.py文件. 作用介绍: ​ 一:这个文件是属于python包的,这个文件用作于标识python ...

  6. python包和模块关系_Python包和模块的分发详细介绍

    发布Python包 上一篇介绍了如何使用别人的轮子,现在我们讨论下如何自己造轮子给别人用. 作为一个流行的开源开发项目,Python拥有一个活跃的贡献者和用户支持社区,这些社区也可以让他们的软件可供其 ...

  7. 【python小课堂专栏】python小课堂31 - 初识原生爬虫

    python小课堂31 - 初识原生爬虫 前言 在上一期介绍了爬虫之前必会浏览器的开发者工具,忘记的童鞋可以在回顾一下: python小课堂30 - 爬虫之前必会的浏览器开发者工具. 本篇文章将以实战 ...

  8. python包 wget_Python数据科学“冷门”库

    原标题 | Lesser Known Python Libraries for Data Science 作者 | Parul Pandey 译者 | CONFIDANT(福建师范大学).Seabis ...

  9. 独家 | UCI机器学习数据库的Python API介绍

    作者:Tirthajyoti Sarkar 翻译:王雨桐 校对:丁楠雅 本文约2600字,建议阅读9分钟. 本文将带你了解UCI数据库的Python API,通过实际案例拆解并讲解代码. 本文将介绍如 ...

最新文章

  1. 帮助一个大兄弟修复完善了一下他的代码
  2. 窗体的扩展样式GWL_EXSTYLE:用于SetWindowLong
  3. Linux下Tomcat安装和配置
  4. CVPR2019| 最新CVPR2019论文:含目标检测、分割、深度学习、GAN等领域
  5. SCCM 2012安装部署三:客户端管理
  6. Oracle Update语句的几种方式
  7. 图形学基础——伽马校正
  8. PHP多功能Youngxj工具箱/在线站长工具箱源码
  9. 一个很实用的造数工具—Spawner Data Generator
  10. WiFi技术概述:WiFi那些事
  11. 蓝牙耳机连接成功,但是每次关闭电脑后,重启电脑,连接耳机,没有声音——stereo模式没有声音
  12. java文本域_Java Swing JTextArea:文本域组件
  13. Vue组件通信:父传子、子传父、跨组件通信
  14. git报错 failed: The TLS connection was non-properly terminated
  15. hevc_nvenc 详细分析1
  16. 远程桌面 你的凭据不工作 系统管理员不允许使用保存的凭据登录远程计算机
  17. 最小二乘拟合n阶多项式【Matlab】
  18. 发票OCR识别技术太屌了,哈哈哈哈
  19. python爬虫,wallhaven热门壁纸多线程采集下载源码
  20. 面向云环境基于属性加密的密文分享系统——简介

热门文章

  1. Python: 绝对导入 Absolute Imports
  2. 学历是铜牌,能力是银牌,人脉是金牌,思维是王牌——有感
  3. EtherType :以太网类型字段及值
  4. Doxygen的使用,配置及实例
  5. python Clipping input data to the valid range for imshow with RGB data解决方法
  6. CSP认证201509-4 高速公路[C++题解]:强连通分量、tarjan算法模板题
  7. 交叉编译_Golang交叉编译
  8. 动态规划 dp03 最长公共子串问题 c代码
  9. python 除法取整_Python中整数和浮点数
  10. php clownfish,Python实现的金山快盘的签到程序