shapely 笔记:STR TREE

数据结构笔记:R树-CSDN博客

1 基本介绍

  • 使用Sort-Tile-Recursive (STR)  算法创建的仅查询的R-tree空间索引
  • 该树索引每个几何图形的边界框。树在初始化时直接构建,且一旦创建后不能添加或移除节点
  • 所有操作返回输入几何图形的索引
  • 边界框限于二维并且是轴对齐的
    • 几何图形中存在的任何Z值在树内索引时都会被忽略

2 创建R树

STRtree(geoms, node_capacity)
geoms几何对象序列
node_capacity树中每个父节点的最大子节点数,默认为10

3 属性

3.1 geometries

  • 以用于构建树的顺序存储在树中的几何图形
from shapely import *
tree = STRtree([Point(i, i) for i in range(10)])
tree.geometries
'''
array([<POINT (0 0)>, <POINT (1 1)>, <POINT (2 2)>, <POINT (3 3)>,<POINT (4 4)>, <POINT (5 5)>, <POINT (6 6)>, <POINT (7 7)>,<POINT (8 8)>, <POINT (9 9)>], dtype=object)
'''

4 方法

4.1 nearest

  • 基于二维笛卡尔空间中的距离,返回树中每个输入几何图形的最近几何图形的索引
  • 当输入几何图形与树几何图形相交时,此距离将为0
  • 如果树中存在多个等距离或相交的几何图形,每个输入几何图形只返回一个结果,基于访问树几何图形的顺序;
    • 此顺序可能是不确定的
from shapely import *
tree = STRtree([Point(i, i) for i in range(10)])'''
查询单个几何形状
'''
tree.nearest(Point(2.2,2.2))
#2
print(tree.geometries[2])
#POINT (2 2)'''
查询多个几何形状
'''
tree.nearest([Point(2.2, 2.2), Point(4.4, 4.4)])
#array([2, 4], dtype=int64)'''
如果存在等距的情况,只返回一个
'''
tree.nearest(Point(2.5,2.5))
#2

4.2 query

query(geometry, predicate=None, distance=None)
  • 返回每个输入几何图形与树几何图形的所有组合的整数索引
    • 如果输入几何图形是标量,则返回形状为(n, )的数组,包含匹配树几何图形的索引
    • 如果输入几何图形是array_like,则返回形状为(2,n)的数组,其中子数组对应于输入几何图形的索引和与每个相关联的树几何图形的索引
  • 如果提供了谓词,则首先基于输入几何图形的边界框查询树几何图形,然后进一步过滤满足当比较输入几何图形与树几何图形时的谓词的那些几何图形
geometry入查询树的几何图形
predicate

用于测试来自树的在输入几何图形的边界框内的几何图形的谓词

当你要查询一个形状与哪些其他形状有特定空间关系时,STRtree会先找出所有可能与之有关系的形状(通过比较边界框来快速筛选),然后根据你指定的具体条件(即这里predicate 设置的条件),进一步筛选出满足条件的形状

4.2.1 举例

  • 单个几何形状
from shapely import *
points = [Point(0, 0), Point(1, 1), Point(2,2), Point(3, 3)]
tree = STRtree(points)tree.query(box(0, 0, 1, 1))
#array([0, 1], dtype=int64)
'''
表示查询几何体和创建R树的几何体中索引0,1的点有交集
'''
  • 多个几何形状
tree.query([box(0, 0, 1, 1), box(2, 2, 3, 3)])
'''
array([[0, 0, 1, 1],[0, 1, 2, 3]], dtype=int64)第一行表示 第几个查询几何体
第二行表示对应的查询几何体和创建R树的几何体的哪个索引有交集
'''tree.query([box(0, 0, 1, 1), box(2, 2, 3, 3)]).T
'''
array([[0, 0],[0, 1],[1, 2],[1, 3]], dtype=int64)这样每一行就是第几个查询集合体,对应创建R树的第几个几何体
'''
  • 带predicate
None不应用任何特定的空间关系过滤,只考虑边界框的相交性
intersects相交
within如果查询的几何形状完全位于树中某个几何形状的内部,则返回True
containswithin相反,如果树中的几何形状完全包含于查询的几何形状,则返回True
overlaps

如果查询的几何形状与树中的几何形状部分重叠,则返回True

用于面与面或线与线的关系判断

crosses

两个几何形状相交在某种程度上“穿过”对方,但不完全包含对方

通常用于不同维度的几何形状,如一条线穿过一个多边形,或者一条线与另一条线在某一点相交

touches如果查询的几何形状与树中的几何形状仅在边界上有接触,而内部没有任何共享点,则返回True
covers

如果查询的几何形状的边界和内部的所有点都包含在树中的几何形状的边界和内部,则返回True

【within 不允许在边界,covers可以】

covered_bycovers相反
tree.query(box(0, 0, 1, 1),predicate='contains')
#array([], dtype=int64)

4.3 query_nearest 最近几何图形的索引

基于二维笛卡尔空间中的距离,返回树中每个输入几何图形的最近几何图形的索引

【个人感觉,相当于nearest promax?】

query_nearest(geometry, max_distance=None, return_distance=False, exclusive=False, all_matches=True)

4.3.1 主要参数

geometry输入查询树的几何图形
max_distance查询树中最近项目的最大距离。必须大于0
return_distance如果为True,除了索引外还会返回距离
exclusive如果为True,等于输入几何图形的最近树几何图形将不会被返回
all_matches如果为True,每个输入几何图形的所有等距和相交几何图形都将被返回。如果为False,只返回第一个最近几何图形

4.3.2 举例

from shapely import *
points = [Point(0, 0), Point(1, 1), Point(2,2), Point(3, 3)]
tree = STRtree(points)
  • 单个点
tree.query_nearest(Point(0.25, 0.25))
#array([0], dtype=int64)
  • 多个点

返回的内容和query是一样的解释方法

tree.query_nearest([Point(2.5, 2.5), Point(1, 1)])
'''
array([[0, 0, 1],[2, 3, 1]], dtype=int64)
'''
  •  all_matches

即使all_matches为False,返回的内容和nearest还是不一样;nearest返回的是一维数组,这边还是二维

tree.query_nearest([Point(2.5, 2.5), Point(1, 1)],all_matches=False)
'''
array([[0, 1],[2, 1]], dtype=int64)
'''
  • return_distance
tree.query_nearest(Point(0.25, 0.25),return_distance=True)
#(array([0], dtype=int64), array([0.35355339]))

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

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

相关文章

前端常见面试题之vue2

文章目录 一、vue2中父子组件嵌套时的生命周期执行顺序是怎样的1. 挂载阶段2. 更新阶段3. 销毁阶段 二、vue组件通讯方式有哪些1. 父子组件通讯方式(1). Props 和 Events&#xff1a;父组件通过props向子组件传递数据&#xff0c;子组件通过事件向父组件传递数据。(2). $parent…

[word] word定时自动保存功能的作用是什么 #知识分享#学习方法#媒体

word定时自动保存功能的作用是什么 word定时自动保存功能的作用是什么 这是word提供的一个保护用户文档的功能&#xff0c;一般情况下是为了预防在未知原因的情况下&#xff0c;用户电脑关闭&#xff0c;或者不小关掉Word&#xff0c;导致正在使用的文档丢失&#xff0c;给用户…

nginx的功能以及运用

nginx与apache的对比 nginx优点 nginx使用场景 编译安装nginx过程 1.先清空opt文件夹 2.关闭防火墙&#xff0c;关闭防护 3 安装依赖包&#xff0c;可以通过本地yum去安装 首先就是挂载&#xff0c;随后切换到配置文件中修改 4本地配置文件配置内容 5 随后安装环境包 yum -y …

洛谷 P1241 括号序列 (Java)

洛谷 P1241 括号序列 (Java) 传送门&#xff1a;P1241 括号序列 题目&#xff1a; 括号序列 题目描述 定义如下规则&#xff1a; 空串是「平衡括号序列」若字符串 S S S 是「平衡括号序列」&#xff0c;那么 [ S ] \texttt{[}S\texttt] [S] 和 ( S ) \texttt{(}S\textt…

uniapp运动课程健身打卡系统微信小程序

考虑到实际生活中在我来运动管理方面的需要以及对该系统认真的分析,将系统分为小程序端模块和后台管理员模块&#xff0c;权限按管理员和用户这两类涉及用户划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;首页、个人中心、用户管理、课程类别管理…

Python爬虫之图形验证码的识别

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx 前言 目前&#xff0c;许多网站采取各种各样的措施来反爬虫&#xff0c;其中一个措施便是使用验证码。随着技术的发展&#xff0c;验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码&#xff0c;后来加入了英…

Java学习25--自定义异常

自定义异常class 自定义异常通常要配合 override “toString”命令&#xff0c;其实质是一个会报错的method,像一个交通违章通报LED&#xff0c;但何时被触发&#xff0c;如何算是违反交通&#xff0c;并不会在此class定义。 自定义异常class的步骤&#xff1a; 自建个异常类…

机械臂目标抓捕学习笔记【1】

基于概率量度的机械臂视觉伺服目标捕获运动规划方法 目录 基于概率量度的机械臂视觉伺服目标捕获运动规划方法期望轨迹序列状态转移函数系统测量值模型线性化卡尔曼滤波状态估计代价函数-闭环反馈轨迹误差方差误差几何化表示到达概率计算 参考文献&#xff1a;《[1]祁若龙,邵健…

直接查看电脑几核芯几线程的方法

之前查看电脑几核芯几线程时都是点击 此电脑->属性->设备管理器->处理器 但是这样并不能判断是否有多线程 譬如这里&#xff0c;是2核芯2线程还是4核芯&#xff1f; 实际上&#xff0c;打开任务管理器后点击性能查看核芯线程数即可 所以示例这台电脑是4核芯而不是2…

鸿蒙实战:ArkTs 开发一个鸿蒙应用

学习过的 ArkTs 知识点&#xff0c;一步一步开发一个小的鸿蒙应用示例&#xff0c;涉及到 ArkTs 语法、注解 Entry 、 Component、state、路由、生命周期、Prop、 Link 、常用组件的使用等等知识点。 要开发一个鸿蒙应用&#xff0c;首先我们需要知道 系统是如何找到页面的启…

仪表板展示|DataEase看中国:历年研究生报考数据分析

背景介绍 在信息时代的浪潮中&#xff0c;研究生教育作为培养高层次专业人才的重要通道&#xff0c;不断吸引着广大毕业生和在职人士的关注。今天我们结合2018年&#xff5e;2024年的研究生报考数据&#xff0c;以数字为镜&#xff0c;深入了解近年来研究生培养态势。 本文将…

YOLOv8改进 | 进阶实战篇 | 利用辅助超推理算法SAHI推理让小目标无所谓遁形(支持视频和图片)

欢迎大家订阅我的专栏一起学习YOLO! 一、本文介绍 本文给大家带来的是进阶实战篇,利用辅助超推理算法SAHI进行推理,同时官方提供的版本中支持视频,我将其进行改造后不仅支持视频同时支持图片的推理方式,SAHI主要的推理场景是针对于小目标检测(检测物体较大的不适用,…

IP详细地理位置查询:技术原理与应用实践

IP地址是互联网上设备的唯一标识&#xff0c;在网络安全、个性化服务等领域具有重要意义。通过IP详细地理位置查询&#xff0c;可以获取到IP地址所在地的具体信息&#xff0c;为网络管理、定位服务等提供支持。IP数据云将深入探讨IP详细地理位置查询的技术原理、应用实践以及相…

Linux——进程替换

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、进程程序替换1、替换原理2、替换函数3、函数解释4、命名理解 二、用例测试1、execl测试2、…

Hive中几种常见的表

Hive的表类型主要有&#xff1a;内部表&#xff08;受控表/管理表&#xff09;、外部表、临时表、分区表、分桶表。 1. 内部表&#xff08;管理表&#xff09; 默认创建的表都是管理表/内部表&#xff0c;表数据默认存储在warehouse目录中&#xff0c;在加载数据的过程中&…

GB 23864-2023 防火封堵材料检测

防火封堵材料是指具有防火&#xff0c;防烟功能&#xff0c;用于密封或填塞建筑物、构筑物以及各类设施中的贯穿孔洞、环形缝隙及建筑缝隙&#xff0c;便于更换且符合有关性能要求的材料。 GB 23864-2023 柔性有机堵料等防火封堵料的理化性能&#xff1a; 测试项目 测试方法 …

【PX4-AutoPilot教程-TIPS】Gazebo仿真环境昏暗的解决办法即Ubuntu系统安装NVIDIA显卡驱动方法

Gazebo仿真环境昏暗的解决办法即Ubuntu系统安装NVIDIA显卡驱动方法 分析原因手动安装方法&#xff08;推荐&#xff09;自动安装方法检查是否安装成功Gazebo仿真环境前后对比 分析原因 具体原因为&#xff1a;大多数情况是因为显卡性能不足&#xff0c;Gazebo自动关闭了灯光和…

说一下JVM创建对象的流程?

一、类加载检查。 在实例化一个对象的时候&#xff0c;JVM 首先会去检查目标对象是否已经被加载并初始化了。如果没有&#xff0c;JVM 需要立刻去加载目标类&#xff0c;然后调用目标类的构造器完成初始化。然后初始化的过程&#xff0c;主要是对目标类里面的静态变量、成员变…

【CANoe示例分析】EthernetTC8Test

1、工程路径 C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 15.3.89\Ethernet\Test\EthernetTC8Test 在CANoe软件上也可以打开此工程:File|Help|Sample Configurations|Ethernet Testing|TC8Test(Ethernet) 2、示例目的 TC8示例是作者本人使用最多的CANo…

三、滑动窗口问题

3、无重复字符的最长子串&#xff08;中等&#xff09; 题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输…