基于python shapely的几何集合操作

news2024/9/19 22:17:16

前言

shapely是基于笛卡尔坐标的几何对象操作和分析Python库。底层基于GEOS和JTS库。shapely无法读取和写数据文件,但可以基于应用广泛的一些格式和协议进行序列化(serialize)和去序列化(deserialize)操作。而且shapely不关注数据格式和坐标系统,但shapely的整合性很强,可以和GIS之类的工具协同工作。这种黏性类似python。

1、安装

(1)基于构建的发行版

windows

  • conda install shapely

  • 基于 wheels 安装 (http://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely)

Mac OS和Linux

  • pip install shapely,如果需要针对向量化加速版本可通过pip install shapely[vectorized]安装

  • 通过系统包管理器,比如 aptyumHomebrew等。

  • 也可以通过Canopy和Anaconda等Python发行版工具安装,比如Anaconda,conda install shapely

(2)基于源码

当需要兼容基于GEOS的更多模块,或者想要使用不同的GEOS版本,可以基于源码进行安装:

pip install shapely --no-binary shapely

如果使用自定义GEOS版本进行安装时,可能需要指定geos-config程序的路径,

GEOS_CONFIG=/path/to/geos-config pip install shapely

2、基本操作

(1)创建点

from shapely.geometry import Point
  
point = Point(0, 0) # Point((0, 0))
  
point.area    # 获取点的面积
point.length  # 获取点的长度
point.bounds  # 获取点的边界

(2)创建圆

In [20]: circle = Point(0, 0).buffer(10) # 创建以(0, 0)为圆心,10为半径的圆
  
In [25]: circle.area  # 获取创建的圆的面积
Out[25]: 313.6548490545939

从上述结果可以看出,所创建的圆的面积小于 ,这是因为buffer方法默认参数resolution为16,resolution 的值越大圆越完整。

In [30]: circle = Point(0, 0).buffer(10, resolution=1000)
  
In [31]: circle.area
Out[31]: 314.15913616617644
      
In [32]: circle = Point(0, 0).buffer(10, resolution=1000000)
  
In [33]: circle.area
Out[33]: 314.1592653588436

(3)创建多边形

from shapely.geometry import Polygon
  
polygon = Polygon([(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3), (0, 3)])

Polygon 函数仅能基于有序的点创建多边形,且点的集合必须要是闭合的。使用MultiPoint 函数创建,并使用 convex_hull 方法创建多边形。

from shapely.geometry import MultiPoint
  
coords = [(0, 1), (1, 2), (1, 4), (2, 0), (3, 2)]  # coords不一定要是闭合点集合
poly = MultiPoint(coords).convex_hull

3、集合操作

(1)判断点是否在多边形

In [50]: p1 = Point(24.952242, 60.1696017)
In [51]: p2 = Point(24.976567, 60.1612500)
In [52]: coords = [(24.950899, 60.169158), (24.953492, 60.169158), (24.953510, 60.170104), (24.950958, 60.169990)]
In [53]: poly = Polygon(coords)

In [54]: poly.contains(p1)
Out[54]: True

In [55]: p1.within(poly)
Out[55]: True

In [56]: poly.contains(p2)
Out[56]: False

(2)判断多边形的集合操作

In [57]: poly2 = Polygon([(23.2154, 59.1156), (24.83151, 59.41516), (25.11667, 60.311561), (24.16178, 60.13315)] )
    
In [58]: poly2.intersects(poly)
Out[58]: True
    
In [59]: poly2.contains(poly)
Out[59]: True
    
In [60]: poly.contains(poly2)
Out[60]: False
  • .contains:判断polygon1是否包含polygon2

  • .intersects:判断polygon1和polygon2是否重叠

  • .intersections :返回两个polygon重叠的部分

(3)引申

在这里我有个疑问,还请大家一起讨论:

  • 如何判断一个多边形与其他多边形的关系?类似像arcgis的拓扑检查。如果要用(2)中实现的话,只能进行循环判断。问一下有没有更简便的方法。

  • 两个多边形“挨着”,共用一条边,那么这两个多边形是相较吗?(是否.intersects

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

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

相关文章

05 react img css修改svg图片样式

react img css修改svg图片样式svg图片的相关理论定义优点前端引入svg图片的方式方式一&#xff1a;<svg>标签引入&#xff0c;内嵌到 HTML 中方式二&#xff0c;修改svg的颜色方式三&#xff1a;<img>标签引入1、元素模糊2、元素亮度3、元素投影4、元素的灰色程度5…

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一&#xff0c;支持开发人员通过远程更新固件&#xff0c;以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序&#xff1a;受保护的应用程序 (protected_app) 和用户应用程序 (user_app) &#xff0c;这…

互联网舆情监测系统的发展阶段,TOOM互联网舆情监测系统有哪些?

互联网舆情监测系统是一种利用计算机技术对互联网上的大量信息进行实时监测、分析和评估的工具&#xff0c;旨在了解公众对某一事件、话题或品牌等的态度、情感倾向和影响力等。通过对社交媒体、论坛、新闻媒体等多个渠道的数据采集和处理&#xff0c;系统能够实现舆情事件的追…

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…

【Hello Linux】Linux工具介绍 (yum vim)

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍Linux的常用工具 yum和vim Linux工具介绍Linux中的软件管理工具 -- yum在windows下安装软件的方式在Linux下安装软件的方式认识yum…

安警官的IP地址是怎样定位到莽村附近的?

要说最近大火的电视剧非《狂飙》莫属。电视剧《狂飙》自开播以来&#xff0c;一举超过《三体》《去有风的地方》等先播电视剧&#xff0c;收视率一路“狂飙”&#xff0c;牢牢占据近期的收视冠军。 在剧中&#xff0c;张译扮演一名坚持公平、正义与理想的人民警察“安欣”&…

20230210组会总结

文章目录Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based MethodShuffleMixer: An Efficient ConvNet for Image Super-ResolutionA Close Look at Spatial Modeling: From Attention to ConvolutionDEA-Net: Single image dehazing ba…

关于国外服务器租用疑问大全解答

很多人对于租用国外服务器还是有些疑虑的&#xff0c;比如是否违法、价格、是否需要备案等等一系列问题&#xff0c;直接导致了很多有疑虑的用户放弃了使用&#xff0c;那么下面我们就来解答关于这些租用国外服务器的疑问&#xff0c;打消用户的疑虑。 1、租用国外服务器违法吗…

量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)

文章目录动量因子与行业轮动概述动量因子的理解投资视角下的行业轮动现象投资者视角与奈特不确定性动量因子在行业风格上的效果测算动量因子效果测算流程概述1. 行业选择&#xff1a;申万一级行业2. 动量因子选择&#xff1a;阿隆指标&#xff08;Aroon&#xff09;3. 测算方法…

java中字符串首字母变大写的两种方法

public class 快速排序 {public static void main(String[] args) {int[] arr new int[]{5, 2, 9, 6, 22, 21};//System.out.println(Arrays.toString(kuaiPai(arr)));// System.out.println(Arrays.asList("dada", "dda", "ddd"));//System.o…

VR全景带你浪漫“狂飙”情人节,见证甜蜜心动

当情人节遇上VR&#xff0c;足以让情侣过一个难忘的情人节。马上情人节就要到了&#xff0c;大家是不是还在绞尽脑汁的想着&#xff0c;如何和另一半过一个浪漫的情人节呢&#xff1f;老套的剧情已经不能吸引人了&#xff0c;让我们看看VR全景给情人节带来了哪些不同的体验吧&a…

喜欢大屏电视?那就选择酷开系统,实现智能生活享受

随着科技的发展和我们生活水平的提高&#xff0c;越来越多的消费者开始认可并习惯使用各种高质量的科技产品&#xff0c;比如喜欢玩游戏的消费者&#xff0c;他们往往会追求流畅性更强、刷新率更快的大显示屏&#xff0c;以此获得更真实刺激的游戏体验&#xff0c;而喜欢追剧的…

面对“开门红”,跨境支付如何寻求新增长曲线?

易观&#xff1a;2022年是第三方支付行业洗牌加剧的一年&#xff0c;在部分机构选择退出的过程中&#xff0c;也有机构开始瞄准跨境业务&#xff0c;成为了支付机构转型的重要方向之一。跨境支付是指两个或及其以上的国家或地区进行国际贸易、国际投资或其他经济活动&#xff0…

基于乐鑫 ESP32 的智能手表

拥有一块自己制作的智能手表是不是听起来就很酷&#xff1f;工程师 Pcadic 基于乐鑫 ESP32-PICO-D4 实现了这个想法&#xff01;他开发了一款能够与我们的手机或任何其他设备互联的智能手表 ESP32-Pico-Watch。 ESP32-Pico-Watch 支持 Wi-Fi、蓝牙、Mesh&#xff0c;拥有 1 个振…

EMX,PROC文件与电感的简单仿真

How To Write EMX PROC File 编写EMX工艺文件需要2方面的信息&#xff1a; GDSII layer number and type 映射到 layer name。 这个信息可以从layermap文件中获取&#xff1b;EMX的manual有相应的介绍&#xff0c;这个过程十分基础且简单容易&#xff0c;简单说就是把GDSII中…

Vue3 中 axios 的安装及使用

目录前言&#xff1a;一、什么是 axios &#xff1f;二、Axios 的配置项三、Axios 的请求方式四、自定义创建实例五、Axios 请求错误处理六、Axios 解决跨域问题七、Axios 请求案例随机笑话大全总结&#xff1a;前言&#xff1a; 在编写vue里的项目时&#xff0c;必须要用和后台…

微信小程序 java springboot招聘求职应聘简历系统

应聘系统是基于微信小程序&#xff0c;java编程语言&#xff0c;mysql数据库&#xff0c;springboot框架&#xff0c;idea工具开发&#xff0c;本系统主要分为用户&#xff0c;企业&#xff0c;管理员三个角色&#xff0c;用户注册登陆小程序&#xff0c;查看应聘分类&#xff…

C语言经典编程题100例(41~60)

目录41、习题4-4 特殊a串数列求和42、习题4-6 水仙花数43、习题4-7 最大公约数和最小公倍数44、习题7-5 找鞍点45、练习5-1 求m到n之和46、练习5-2 找两个数中最大者47、练习5-3 数字金字塔48、习题5-1 符号函数49、习题5-2 使用函数求奇数和50、习题5-3 使用函数计算两点间的距…

低代码开发平台让数据应用不再复杂

当前&#xff0c;数据已成为实现经济高质量增长的关键要素&#xff0c;最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展&#xff0c;已成为数字经济时代企业塑造核心竞争力的关键。随着人机协同程度的日益提高&#xff0c;数据不再只是用来被动支持决…

没有设置密码,每次打开RAR文件却都要输密码?

有小伙伴说遇到这种情况&#xff1a;用WinRAR软件压缩RAR文件后&#xff0c;再次打开时显示需要输入密码&#xff0c;但自己压缩文件时并没有设置密码&#xff0c;后续不管几次压缩文件都需要密码&#xff0c;这是怎么回事呢&#xff1f; 其实&#xff0c;这很可能是之前设置压…