shapely库的用法,高效处理点、线、面的几何关系和相关延申(GeoPandas 库)python

news2024/11/26 21:39:30

在这里插入图片描述

1、shapely库的基本用法

Shapely 是一个用于处理几何对象的 Python 库,它提供了各种函数和方法来进行空间分析和几何计算。下面是一些 Shapely 库的常见用法示例:

1. 创建几何对象:

from shapely.geometry import Point, LineString, Polygon

"""创建点对象"""
point = Point(0, 0)

"""创建线对象"""
line = LineString([(0, 0), (1, 1), (2, 1)])

"""创建多边形对象"""
polygon = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])

2. 计算几何对象的属性和操作:

# 计算点的坐标
x = point.x
y = point.y

"""判断线是否封闭"""
is_closed = line.is_closed

"""判断多边形是否为凸多边形"""
is_convex = polygon.is_convex

"""计算多边形的面积"""
area = polygon.area

"""判断点是否在多边形内"""
is_inside = point.within(polygon)

"""判断两个几何对象是否相交"""
is_intersect = line.intersects(polygon)

3. 进行几何对象的空间分析和操作:

"""计算两个几何对象的交集"""
intersection = line.intersection(polygon)

"""计算两个几何对象的并集"""
union = line.union(polygon)

"""计算两个几何对象的差集"""
difference = line.difference(polygon)

"""缓冲区分析"""
buffered = point.buffer(1)

"""空间关系分析,比如判断两个几何对象之间的距离、是否接触等"""
distance = point.distance(line)
touches = point.touches(polygon)

在这里插入图片描述

以上仅是 Shapely 库的一些基础用法示例,该库还提供了丰富的几何操作和分析功能。你可以根据具体需求,查阅 Shapely 的官方文档以获取更详细的使用方法和示例:https://shapely.readthedocs.io/

2、shapely对两个多边形的处理方法

Shapely 提供了一系列函数和方法来处理两个多边形之间的空间关系和几何操作。以下是一些 Shapely 中常用的多边形处理方法:

1. 判断两个多边形之间的空间关系:

from shapely.geometry import Polygon

polygon1 = Polygon([(0, 0), (0, 1), (1, 1), (1, 0)])
polygon2 = Polygon([(0.5, 0.5), (0.5, 1.5), (1.5, 1.5), (1.5, 0.5)])

"""判断两个多边形是否相交"""
is_intersect = polygon1.intersects(polygon2)

"""判断一个多边形是否包含另一个多边形"""
is_contains = polygon1.contains(polygon2)

"""判断多边形是否在另一个多边形内部"""
is_within = polygon1.within(polygon2)

"""判断多边形是否被另一个多边形包围"""
is_covers = polygon1.covers(polygon2)

2. 计算两个多边形之间的几何操作:

"""计算两个多边形的交集"""
intersection = polygon1.intersection(polygon2)

"""计算两个多边形的并集"""
union = polygon1.union(polygon2)

"""计算一个多边形减去另一个多边形的差集"""
difference = polygon1.difference(polygon2)

"""计算两个多边形的对称差集(即去除交集部分得到的新几何图形)"""
symmetric_difference = polygon1.symmetric_difference(polygon2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

"""类型和坐标点相同返回TRUE"""
objection.__eq__(other) 

"""boundary, interior, and exterior完全相同返回TRUE"""
objection.equals(other)  #

"""近似相等返回TRUE decimal是小数点的位数完全相同"""
objection.almost_equals(other[, decimal=6]) 

"""other里没有点在object的exterior,且other的interior里至少有一个点在object的interior """
objection.contains(other) #

"""objection的interior与other的interior相交,且不包含other"""
objection.crosses(other) # 

"""objection的interior和boundary 和other的interior和boundary都不相交 返回True"""
objection.disjoint(other) # 

"""objection的interior或者boundary和other的interior或者boundary相交 返回TRUE"""
objection.intersects(other) # 

"""objection的interior或者boundary和other的interior或者boundary相交,且不包含other, 返回TRUE"""
objection.overlaps(other) # 

"""other和objection至少有一个共同的点,且他们的interior不相交"""
objection.touches(other) # 

3. 其他常见的多边形处理方法:

"""计算多边形的面积"""
area = polygon1.area

"""计算多边形的周长"""
perimeter = polygon1.length

"""判断一个点是否在多边形内"""
point = Point(0.5, 0.5)
is_inside = point.within(polygon1)

以上是一些常用的多边形处理方法,你可以根据具体需求使用 Shapely 提供的函数和方法来处理你的多边形数据。关于更详细的用法和示例,请查阅 Shapely 的官方文档:https://shapely.readthedocs.io/

3、shapely判断矩形是否相交以及相交求交点python

要使用 Shapely 库来判断两个矩形是否相交并计算它们的交点,你可以按照以下方式操作:

首先,安装 Shapely 库(如果还没有安装),可以使用以下命令来安装:

pip install shapely

然后,使用以下示例代码来判断两个矩形是否相交并计算它们的交点:

from shapely.geometry import Polygon

"""定义两个矩形"""
rect1 = Polygon([(0, 0), (4, 0), (4, 2), (0, 2)])  # 矩形1的坐标点
rect2 = Polygon([(2, 1), (6, 1), (6, 3), (2, 3)])  # 矩形2的坐标点

"""判断两个矩形是否相交"""
if rect1.intersects(rect2):
    print("两个矩形相交")
else:
    print("两个矩形不相交")

"""计算两个矩形的交点"""
intersection = rect1.intersection(rect2)
if intersection.is_empty:
    print("两个矩形没有交点")
else:
    print("两个矩形的交点:", intersection)

在上面的示例中,我们先定义了两个矩形 rect1rect2 的坐标点。然后,我们使用 intersects() 方法来判断两个矩形是否相交,如果相交则输出提示信息。接着,使用 intersection() 方法计算两个矩形的交点,并判断交点是否为空以输出对应的结果。

请确保已经安装了 Shapely 库,并在代码中适当引入 Polygon 类和必要的函数。

4、处理多边形操作和空间分析的常用库

在 Python 中,有几个常用的库可以用于处理多边形操作和空间分析。以下是其中几个常用的库:

  1. Shapely: Shapely 是一个优秀的 Python 库,用于进行几何对象的创建、操作和分析。它提供包括点、线、多边形等多种几何对象,并支持诸如交集、并集、差集、缓冲区等多种操作。

  2. GeoPandas: GeoPandas 是建立在 Pandas 和 Shapely 基础上的库,用于处理地理空间数据。GeoPandas 提供了包括读取、写入、操作和分析地理空间数据的功能,其中也包括多边形操作和空间分析。

  3. PySAL: PySAL(Python Spatial Analysis Library)是用于地理空间数据分析和建模的 Python 库。它提供了多种空间分析方法和模型,包括聚类、空间权重矩阵、地理加权回归等。PySAL 的几何对象使用的是 Shapely 库。

  4. Matplotlib: Matplotlib 是一个流行的绘图库,可以用于绘制各种图形和可视化。对于多边形操作,Matplotlib 可以用于绘制多边形和显示空间连接图。

这些库提供了丰富的功能和方法,可以帮助你进行多边形操作、空间分析和可视化。你可以根据具体需求选择合适的库来处理多边形数据。

5、GeoPandas库的用法

GeoPandas 是建立在 Pandas 和 Shapely 基础上的库,专门用于处理地理空间数据。它提供了一套丰富的函数和方法,用于读取、写入、操作和分析地理空间数据,包括点、线、多边形等几何对象。以下是 GeoPandas 库的一些常见用法示例:

1. 安装 GeoPandas:

pip install geopandas

2. 导入 GeoPandas 和相关库:

import geopandas as gpd
from shapely.geometry import Point, LineString, Polygon

3. 读取地理空间数据:

"""从文件中读取地理空间数据,支持多种格式"""
data = gpd.read_file('data.shp')

"""从 Pandas DataFrame 中读取数据"""
data = gpd.GeoDataFrame(df, geometry='geometry')

4. 数据查看和基本操作:

"""查看数据前几行"""
print(data.head())

"""获取数据列"""
print(data['column_name'])

"""获取数据对象的几何属性"""
print(data.geometry)

"""计算数据的包围盒"""
bbox = data.total_bounds

5. 空间查询和筛选:

"""选择满足查询条件的数据行"""
selected_data = data[data['column_name'] == 'value']

"""基于空间关系进行查询"""
selected_data = data[data.intersects(geometry)]

"""根据属性和空间条件进行查询"""
selected_data = data[(data['column_name'] == 'value') & data.intersects(geometry)]

6. 几何操作和转换:

"""创建点对象"""
point = Point(x, y)

"""缓冲区分析"""
buffered = point.buffer(distance)

"""投影转换"""
data = data.to_crs(crs)

"""几何对象之间的空间操作"""
intersection = geom1.intersection(geom2)
union = geom1.union(geom2)
difference = geom1.difference(geom2)

7. 可视化和绘图:

"""绘制地理空间数据"""
data.plot()

"""根据属性值绘制不同颜色的地图"""
data.plot(column='column_name', cmap='viridis', legend=True)

"""添加标题和坐标轴标签"""
plt.title('Title')
plt.xlabel('X Label')
plt.ylabel('Y Label')

"""显示地图"""
plt.show()

以上仅是 GeoPandas 库的一些基础用法示例,该库还提供了更多强大的功能,如地理空间分析、数据合并、投影转换等。你可以根据具体需求,查阅 GeoPandas 的官方文档以获取更详细的使用方法和示例:https://geopandas.org/

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

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

相关文章

uni——tab切换

案例展示 案例代码 <view class"tablist"><block v-for"(item,index) in tabList" :key"index"><view class"tabItem" :class"current item.id?active:" click"changeTab(item)">{{item.nam…

你真的懂OP吗?知道什么是OP吗?看完你就懂了!

运维到底是干什么的&#xff1f;估计连运维工程师本身都不清楚&#xff0c;小编各种搜索也没找到答案&#xff0c;问了很多运维老员工&#xff0c;终于总结出了运维工程师的工作内容。 01运维的定义本质上是对网络、服务器各个阶段的运营与维护&#xff0c;在成本、稳定性、效率…

混合云环境实现K8S可观测的6大策略

2023年&#xff0c;原生云应用及平台发展迅猛。大量企业都在努力发挥其应用程序的最大潜力&#xff0c;以确保极致的用户体验并推动业务增长。 混合云环境的兴起和容器化技术(如Kubernetes)的采用彻底改变了现代应用程序的开发、部署和扩展方式。 在这个数字舞台上&#xff0c;…

赴日IT工作之中日假期大对比!是你想要的程序员生活吗?

说了这么多关于工作方面的事宜&#xff0c;今天咱们来聊聊大家都关心的假期问题吧&#xff01;中国和日本的假期有什么区别呢&#xff1f;从天数上来看&#xff0c;其实中日假期都是16天左右&#xff0c;但是可能在调休方面&#xff0c;日本相比我国对员工层会有一点点优势&…

Linux环境下安装JDK(17)

1、官网下载 https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html 2、传到Linux上去&#xff0c;至于用什么工具&#xff0c;自行选择 3、虚拟机上&#xff0c;找到它&#xff0c;移到你想移的地方去 4、解压缩&#xff0c;换包名 tar -zxvf jdk…

Django快速入门

文章目录 一、安装1.创建虚拟环境&#xff08;virtualenv和virtualenvwrapper&#xff09;2. 安装django 二、改解释器三、创建一个Django项目四、项目目录项目同名文件夹/settings.py 五、测试服务器启动六、数据迁移七、创建应用八、基本视图1. 返回响应 response2. 渲染模板…

企业微信认证费用及年审的问题(收藏)

一、企业微信认证审核服务费用说明 企业微信认证的审核是委托第三方审核公司来履行的&#xff0c;对企业提交资料的真实性进行甄别和校验。针对中、大型规模企业&#xff0c;企业微信团队会以电话回访、征信核查等方式&#xff0c;对企业规模进行严格审核。针对大型规模企业&a…

Java分布式微服务3——Docker

文章目录 Docker介绍安装DockerDocker基础操作Docker服务的启动镜像命令容器命令1. 从docker hub去查看Nginx容器的运行命令2. 查看所有容器状态3. 查看容器日志4. 进入Nginx容器执行命令&#xff0c;修改Html内容&#xff0c;添加“Hello World”5. 停止与开始容器6. 删除容器…

错过NFT投资,你可能会后悔吗?

在过去的几年里&#xff0c;非同质化代币&#xff08;NFT&#xff09;以其独特性和创新性&#xff0c;迅速成为数字资产领域的热门话题。NFT代表了数字资产的所有权和独特性&#xff0c;为艺术、音乐、游戏和虚拟世界等领域提供了全新的可能性。然而&#xff0c;对于那些错过了…

使用 Docker 部署 Prometheus + Grafana 监控平台

使用 Docker 部署 Prometheus Grafana 监控平台 默认docker 已经安装好,我使用的是CentOS7 注意一定要开启服务器对应的端口 1. 安装Prometheus docker run -itd --nameprometheus --restartalways -p 9090:9090 prom/prometheus访问:http://ip:9090 2.安装Grafana #这里的$…

【AGC】付费下载上架下载后无法安装问题

【关键字】 AGC、付费下载、应用安装 【问题描述】 有开发者反馈用户下载后无法安装&#xff0c;采用未接入sdk&#xff0c;直接勾选付费-产品上架的方案&#xff0c;以前其他产品是能够正常安装的&#xff0c;现在不知道为啥。 报错信息&#xff1a;付费后显示“订单创建失…

对等离子体的认识

认识等离子体等离子体的产生等离子体的定义等离子体并不远 认识等离子体 等离子体的产生 物质由一百多种元素组成&#xff0c;不同元素结合成各种分子。大量的分子又依靠某种作用力结合或凝聚在一起&#xff0c;由于作用力的强弱不等而表现为各种不同的存在状态。 物质的存在状…

【数学基础】矩阵行列式

行列式意义是什么&#xff1f; 行列式等于它的各个列对应的向量张成的平行2n面体的体积&#xff0c;这是因为行列式是一个交替多重线性形式&#xff0c;而我们通常理解的欧式空间中的体积也是这样一个函数&#xff08;单位立方体体积为1&#xff0c;沿某条边扩大c倍体积就扩大…

利用openTCS实现车辆调度系统(六)openTCS订单的使用

运输订单 由类的实例表示&#xff0c;描述了由车辆执行的进程。 通常&#xff0c;此过程是货物从一个地点到另一个地点的实际运输。 然而&#xff0c;A也可以只描述车辆到目的地位置的运动以及要执行的可选车辆操作。TransportOrderTransportOrder 以下所有内容都是 openTCS …

从源码层面深度剖析Spring循环依赖 | 京东云技术团队

以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean&#xff1f; 对于单例Bean来说&#xff0c;在Spring容器整个生命周期内&#xff0c;有且只有一个对象。 Spring 在创建 Bean 过程中&#xff0…

DT昆虫绑定学习(没蒙皮)

SelectEdgeLoopSp; ConvertSelectionToVertices;selectType -ocm -alc false; selectType -ocm -polymeshVertex true; CreateCluster; 连接到物体 global proc matchTrns() { string $mtr[] ls -sl; if (size($mtr) < 2){ warning "MUST select 2 objects!"…

【C++】开源:ceres和g2o非线性优化库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍ceres和g2o非线性优化库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…

抖音里面怎么把图片做成动态图片?在线gif生成工具分享

刷抖音的时候&#xff0c;很多人在制作一些老照片&#xff0c;一些静态的照片经过制作能变成动态的照片&#xff0c;许多朋友都不知道怎么将图片做成gif&#xff0c;下面就来为大家分享一下gif动态图片制作的方法&#xff0c;利用在线gif生成&#xff08;https://www.gif.cn&am…

论文分享--On the Difficulty of Evaluating Baselines A Study on Recommender Systems

与基线比较的数值评估在判断推荐系统中的研究时起着核心作用。在本文中,我们证明了正确运行基线是困难的。我们在两个广泛研究的数据集上证明了这个问题。首先,我们表明,在过去五年中,在许多出版物中使用的基线对Movielens 10M基准的结果是次优的。通过仔细设置一个普通矩阵…

Python远程ssh登录机器检查机器信息

文章目录 Python远程ssh登录机器检查机器信息check_env.sh和hosts.yaml文件如下演示 Python远程ssh登录机器检查机器信息 需要在hosts.yaml文件中中输入ssh主机名&#xff0c;端口&#xff0c;用户名&#xff0c;密码使用python3环境&#xff0c;执行python3 check_env.py为了…