GeoPandas 基本使用

news2024/11/26 0:34:59

1.GeoPandas是什么

       geopandas是一个开源项目,它的目的是使得在Python下更方便的处理地理空间数据。geopandas扩展了pandas的数据类型,允许其在几何类型上进行空间操作。geopandas主要结合了pandas和shapely框架的能力。

          shapely 有一个名为 geometry 的类,也是python 中一个非常重要的类库,其中包含不同的几何对象。

        geopandas两个主要的数据结构,分别是GeoSeries和GeoDataFrame,分别对应了pandas中Series和DataFrame的子类。

      geopandas有三个基本类的几何对象(实际上是形状对象):点/点集合 线/线集合 多边形/多边形集合

2.GeoSeries

       GeoSeries就是包含了图形series的序列,他包含了几乎所有shapely对象的属性和方法。

     在GeoSeries中可以直接使用Shapely的属性和方法。

  • to_crs():更改坐标参考系。
  • plot():绘制GeoSeries。
  • GeoSeries.area:   返回一个Series,他包含了GeoSeries中的每个几何的面积(投影面积)。
  • GeoSeries.bounds: 返回一个Series,包含了每个几何的边界,用列值minx,miny,maxx,maxy来表示。
  • GeoSeries.distance(other): 它包含与其他GeoSeries对象(每个元素)或几何对象的最小距离.
  • GeoSeries.length: 返回一个Series, 包含了每个要素的长度。
  • GeoSeries.geom_type: 返回一个Series,包含了每个要素的几何对象类型。
  • GeoSeries.exterior: 返回一个环形(LinearRings)的一个GeoSeries, 表示每个要素的外边界
  • GeoSeries.interior: 返回一个内环的GeoSeries,他表示每个多边形的内环。
  • GeoSeries.is_empty :返回一个布尔型的Series,若为空的几何图形,该值就为True。
  • GeoSeries.is_ring:返回一个布尔型的Series,对于闭合的要素,该值就为True。
  • GeoSeries.is_simple:返回一个布尔型的Series,如果几何体自身不交叉,该值就为True(仅对线串--LineStrings和线环--LineRings有意义)。
  • GeoSeries.is_valid:返回一个布尔型的Series,如果几何体是有效的,该值就为True。
  • GeoSeries.almost_equals(other[,decimal=6]):返回一个布尔型的Series对象,如果在指定的小数位精度下,每个对象所有点与其他对象大致相等,该值就为True(可见equals())。
  • GeoSeries.contains(other): 返回一个布尔型的Series,如果每个对象的内部包含其他对象的内部和边界,并且它们的边界不相接,该值为True。
  • GeoSeries.crosses(other):返回一个布尔型的Series,如果每个对象的内部与其他对象的内部相交但不包含,并且相交的部分小于这两个相交对象自身,该值为True。
  • GeoSeries.disjoint(other): 返回一个布尔型的Series,如果每个对象的边界和内部与其他对象的边界和内部都不相交,该值为True。
  • GeoSeries.equals(other):返回一个布尔型的Series,如果几何对象集合的边界,内部,外部都与其他几何对象一样,该值为True。
  • GeoSeries.intersects(other):返回一个布尔型的Series,如果每个对象的边界和内部以其它任何形式与其他对象相交,该值为True。
  • GeoSeries.touches(other):返回一个布尔型的Series,如果对象与其他对象至少有一个点相同,且它们的内部任何部分都不相交,该值为True。
  • GeoSeries.within(other):返回一个布尔型的Series, 如果每个对象的边界和内部只与其他对象的内部相交(不包括边界和外部),该值为True(与contains()方法相反)。

3.GeoDataFrame

一个GeoDataFrame是一个列表数据结构,他包含了很多GeoSeries。

GeoDataFrame可以包含具有几何(形状)对象的其他列,但每次只能有一个列作为活动式几何。若更改活动式几何列,可使用set_geometry方法。

  • GeoDataFrame.from_file(filename, **kwargs):
  • GeoDataFrame.read_file(filename, **kwargs):
  • GeoDataFrame.from_postgis(sql,con,geom_col='geom',crs=None,index_col=None,coerce_float=True,params=None)  从PostGIS数据库文件中加载GeoDataFrame。
  • GeoSeries.to_crs(crs=None,epsg=None,inplace=False)  转换GeoDataFrame的geometry列中的所有几何图形到其他坐标参考系统。
  • GeoSeries.to_file(filename,driver="ESRI Shapefile",**kwargs)  将GeoDataFrame写入文件。默认情况下,写成ESRI的shapefile格式。
  • GeoSeries.to_json(**kwargs) 将GeoDataFrame以字符串的方式表示为GeoJSON对象返回。
  • GeoSeries.plot(column=None,colormap=None,alpha=0.5,categorical=False,legend=False,axes=None)  绘制GeoDataFrame中几何图形。如果列参数给定,颜色根据这列的值绘制,否则在 geometry列调用GeoSeries.plot()函数。都封装在plot_dataframe()函数中。

4.geopand常用示例练习

注意:    插件库版本可能不兼容有些方法,作者使用以下版本,测OK

插件库名称

版本号

SQLAlchemy

1.4.46

Shapely

1.8.5

geopandas

0.10.2

        geopandas 可以做数据读取、展示、分析、拓展,甚至可以读取zip中的shapefile文件,还可以读取geojson、arcgis中的地理数据库gdb,一起qgis中的geoPackage存放的矢量数据。

  • shape 文件读取
import geopandas
import matplotlib.pyplot as plt
data = geopandas.read_file(r'/Users/ecarx/Desktop/123/shp/AD_Lane.shp')
print(data.crs)
print(data.head())
data.plot()
plt.show()

  • 创建shapefile文件,分别用点要素和线要素
data = geopandas.GeoSeries([geometry.Point(120.121, 60),
                            geometry.Point(121.43311, 59.122),
                            geometry.Point(121.034311, 58.999211),
                            geometry.Point(119.431221, 61.232311)], crs='EPSG:4326',index=["点1", "点2", "点3", "点4"])
# 将矢量数据data写入shape文件
data.to_file("Point.shp", driver='ESRI Shapefile', encodings="UTF-8")
data.plot()
plt.show()

  导出shape文件,并展示点位信息

线和面,与点类似。

data = geopandas.GeoSeries([geometry.LineString([(120.32232, 51.222), (121.31032, 51.131), (120.8999, 51.101)]),
geometry.LineString([(121.32232, 51.009), (120.8993, 51.222), (120.14333, 50.1988)])], 
crs='EPSG:4326', index=['线1', '线2'])

5.geopandas与PostGIS进行交互

import geopandas as gpd
from sqlalchemy import create_engine
import matplotlib.pyplot as plt
bj = gpd.read_file("/Users/ecarx/Downloads/110000.geoJson")
# bj.plot()
# plt.show()
engine = create_engine('postgresql://check_comxxx:Ku3pyaXsNW@dev-pg.test.xxxx.cloud:1921/check_comxxx')
bj.to_postgis(name="beijing", con=engine, if_exists='replace', schema='check_coxxx')

北京市的区块范围:

写入数据库展示:

读取数据库中的数据

import geopandas as gpd
from sqlalchemy import create_engine
import matplotlib.pyplot as plt
engine = create_engine('postgresql://check_comxxx:Ku3py1APxgNW@dev-pg.test.xxxx.cloud:1921/check_comxxx')
# 读post库中的数据
sql = "select * from beijing"
beijing = gpd.read_postgis(sql, con=engine, geom_col='geometry')
beijing.plot()
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【DTEmpower案例操作教程】智能数据挖掘

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警、设…

m4a怎么转换mp3?4个方法包教包会

m4a怎么转换mp3?M4A是一种备受欢迎的音频文件格式,通常用于存储高保真音频数据。它代表着“MPEG-4 Audio”扩展名,这意味着它属于基于MPEG-4标准的音频格式之一。M4A格式有着众多的优势。首先,它能够提供出色的音质,并…

html、css学习记录【uniapp前奏】

Html 声明:该学习笔记源于菜鸟自学网站,特此记录笔记。很多示例源于此官网,若有侵权请联系删除。 文章目录 Html声明: CSS 全称 Cascading Style Sheets,层叠样式表。是一种用来为结构化文档(如 HTML 文档…

在微信小程序中跳转到另一个小程序(多种实现方式)

方式一: 配置要跳转的appid和小程序页面路径 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//develop开发版;trial体验版;release正式版envVersion: release, success(res) {// 打开成功console.log("跳…

【MATLAB源码-第38期】基于OFDM的块状导频和梳状导频误码率性能对比,不同信道估计方法以及不同调制方式对比。

1、算法描述 块状导频和梳状导频都是用于无线通信系统中信道估计的方法。 块状导频: 定义: 在频域上,块状导频是连续放置的一组导频符号。这意味着所有的导频符号都集中在一个短的时间段内发送。 优点: 对于时间选择性信道&#…

项目管理常用工具有哪些?

项目管理常用的工具有很多,以下是一些常见的工具: 1. 甘特图:甘特图是一种图形化的工具,用于展示项目的时间计划和任务进度。它可以清晰地显示项目中各个任务的开始时间、结束时间以及任务之间的依赖关系。 2. 工作分解结构&#…

ChatGPT必应联网功能正式上线

今日凌晨发现,ChatGPT又支持必应联网了!虽然有人使用过newbing这个阉割版的联网GPT4,但官方版本确实更加便捷好用啊! 尽管 ChatGPT 此前已经展现出了其他人工智能模型无可比拟的智能,但由于其训练数据的限制&#xff…

【AI视野·今日CV 计算机视觉论文速览 第256期】Thu, 28 Sep 2023

AI视野今日CS.CV 计算机视觉论文速览 Thu, 28 Sep 2023 Totally 96 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers SHACIRA: Scalable HAsh-grid Compression for Implicit Neural Representations Authors Sharath Girish, Abhinav Shriva…

视频直播美颜sdk与计算机视觉的奇妙结合

在数字时代,视频直播已经成为了人们分享生活、娱乐互动的重要方式之一。而随着社交媒体和在线直播平台的不断发展,用户们对于直播质量和体验提出了越来越高的要求。其中之一就是美颜效果。美颜不仅仅是为了矫正自身缺陷,它更是一种增强直播吸…

安卓玩机-----反编译apk 修改apk 去广告 去弹窗等操作中的一些常识

安卓机型app的编译与反编译 apk文件的简单说明与解析 -安卓修改apk apk的组成和编译 一 电脑端几种反编译apk工具操作步骤解析 前面几个博文有说明关于反编译apk和apk架构等有些常识.今天对以上做个补充。初学者记住一点。对于一个apk文件使用压缩软件7zip打开可以查看到文件…

Aruba CX交换机 初始化配置

文章目录 CX交换机使用type-c接口console管理口配置:更改时间更改/创建管理员密码接口vlan配置DHCP配置配置保存 CX交换机使用type-c接口console Aruba cx交换机 console速率 Serial :115200 ##初始化清空配置: 6300: erase all…

基于DTW算法的命令字识别

DTW算法介绍 DTW(Dynamic Time Warping):按距离最近原则,构建两个序列之间的对应的关系,评估两个序列的相似性。 要求: 单向对应,不能回头;一一对应,不能有空;对应之后&#xff0…

【图文】IRRA:跨模态隐式关系推理与对齐 | CVPR2023

详细内容指路zhihu👉CVPR2023 | IRRA论文阅读 摘要 Text-to-image Person Retrieval的目的是根据给定的文本描述查询确定目标个体。主要的挑战是学习把视觉和文本模态映射到一个公共的潜在空间里。之前的工作尝试通过利用单模态分开预训练来提取图像和文本特征来解…

TOWE工业级多口大功率USB插座,助力多设备同时供电

同为科技(TOWE)工业级多口大功率USB桌面PDU插座 随着科技的不断进步,人们对电子设备的需求也越来越多样化。在如今的快节奏生活中,我们常常需要同时给多个设备充电,而传统的插座往往无法满足这一需求。为解决这一问题…

JavaSE(三)

3.1 异常 Java 异常类层次结构图概览: 1.Exception 和 Error 有什么区别? 在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable 类有两个重要的子类,分别是 Exception 和 Error: Ex…

嵌入式中如何用C语言操作sqlite3(07)

sqlite3编程接口非常多,对于初学者来说,我们暂时只需要掌握常用的几个函数,其他函数自然就知道如何使用了。 数据库 本篇假设数据库为my.db,有数据表student。 nonamescore4嵌入式开发爱好者89.0 创建表格语句如下: CREATE T…

数据结构算法--8基数排序

> 多关键字排序:现在有一个员工表,要求按照薪资排序,薪资相同的员工按照年龄排序 >> 先按照年龄排序,再按照薪资进行稳定的排序 > 例如:32,13,94,52,17&am…

C++中指针的概念和声明

C中指针的概念和声明 学习 C 的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的…

Unity实现设计模式——责任链模式

Unity实现设计模式——责任链模式 责任链模式定义:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。 在职责链模式中&…

CIP或者EtherNET/IP中的PATH是什么含义?

目录 SegmentPATH举例 最近在学习EtherNET/IP,PATH不太明白,翻了翻规范,在这里记个笔记。下面的叙述可能是中英混合,有一些是规范中的原文我直接搬过来的。我翻译的不准确。 Segment PATH是CIP Segment中的一个分类。要了解PATH…