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 | 用于测试来自树的在输入几何图形的边界框内的几何图形的谓词 当你要查询一个形状与哪些其他形状有特定空间关系时, |
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 |
contains | 与within 相反,如果树中的几何形状完全包含于查询的几何形状,则返回True |
overlaps | 如果查询的几何形状与树中的几何形状部分重叠,则返回True 用于面与面或线与线的关系判断 |
crosses | 两个几何形状相交在某种程度上“穿过”对方,但不完全包含对方 通常用于不同维度的几何形状,如一条线穿过一个多边形,或者一条线与另一条线在某一点相交 |
touches | 如果查询的几何形状与树中的几何形状仅在边界上有接触,而内部没有任何共享点,则返回True |
covers | 如果查询的几何形状的边界和内部的所有点都包含在树中的几何形状的边界和内部,则返回True 【within 不允许在边界,covers可以】 |
covered_by | 与covers 相反 |
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]))
相关文章:
shapely 笔记:STR TREE
数据结构笔记:R树-CSDN博客 1 基本介绍 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引该树索引每个几何图形的边界框。树在初始化时直接构建,且一旦创建后不能添加或移除节点所有操作返回输入几何图形的索引边界框限于二维并且是轴…...
neo4j常用代码
1】查版本: CALL dbms.components() YIELD name, versions RETURN name, versions; 2】清数据: MATCH ()-[r]->() DELETE r; MATCH (n) DETACH DELETE n; 3】NEO4J 操作入门_neo4j查看历史执行命令-CSDN博客 :play --首页 :help match/keys/com…...

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(五)
Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型,由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”(そら sora),即天空之意,以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模型DALL-E基础上开发而成的。模型的训练数据既包含公开…...

Less预处理器教程
学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈 一、Less介绍 less官方文档 lesscss.org/ less中文文档 less.bootcss.com/ less是一种css预处理器,它扩展了css语言,…...

PCL 计算点云AABB包围盒的体积
目录 一、AABB包围盒二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。爬虫自重,把自己当个人。 一、AABB包围盒 AABB包围盒又称了 轴对齐包围盒,是点云包围盒里最简单的一种,其计算方法也极其简单。获取包围盒之后,根据包围盒的长宽高进行体积计算即…...

论软件测试工程师 重要性!
在生活中,我们常常会遇到以下几种窘迫时刻: 准备骑共享单车出行,却发现扫码开锁半天,车子都没有反应;手机导航打车,却发现地图定位偏差很大,司机总是跑错地方;买个水,却…...

防御第六次作业-防火墙综合实验(av、url过滤、dns过滤)
目录 拓扑图: 要求: 8 9 10 11 拓扑图 要求 前7个要求在上一篇博客; 8.分公司内部的客户端可以通过域名访问到内部的服务器 9.假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件,内网的FTP服务器也需要…...

打码半年,开源一款自定义大屏设计软件!
hi,大家好,我是Tduck马马。 最近我们开源了一款大屏软件-TReport,与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统,支持静态、动态api等数据源;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…...

云计算基础-大页内存
大页内存功能概述 什么是大页内存 简单来说,就是通过增大操作系统页的大小来减小页表,从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机,比如对于运行数据库系统的虚拟机,采用HugePages(大页)后,可…...

数据结构-邻接链表
介绍 邻接矩阵是运用较多的一种储存图的方法,但如果一张网图边数较少,就会出现二维矩阵中大部分数据为0的情况,浪费储存空间 为了避免空间浪费,也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…...

十三、集合进阶——单列集合 及 数据结构
单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3)数组4)链表小结5&…...

Android | ArcGIS入门
一、概述 ArcGIS是由Esri开发的地理信息系统(GIS)软件。它用于制图、空间分析和数据可视化。ArcGIS允许用户以各种格式创建、管理、分析和共享地理信息。它通常用于城市规划、环境管理和应急响应等领域。该软件包括一系列工具,用于创建地图、…...

dockerfile文件书写
1.dockerfile构建nginx镜像 1.1书写dockerfile文件 mkdir nginx #创建nginx目录 cd nginx vim dockerfile # 修改文件FROM centos # 基础镜像,默认最新的centos8操作系统 MAINTAINER xianchao # 指定镜像的作者信息 RUN rm -rf /etc/yum.repos.d/* # centos8默认…...
蓝桥杯-整数删除
给定一个长度为 N 的整数数列:A1, A2, ... , AN。你要重复以下操作 K 次: 每次选择数列中最小的整数(如果最小值不止一个,选择最靠前的),将其删除。 并把与它相邻的整数加上被删除的数值。 输出 K 次操作后…...

以程序员的视角,看前后端分离的是否必要?
Hello,我是贝格前端工场,本篇分享一个老生常谈的话题,前后端分离是必然趋势,但也是要区分具体的场景,欢迎探讨,关注,有前端开发需求可以私信我,上车了。 一、什么是前后端分离和不分…...

Linux:sed进阶(12)
Linux:shell脚本:基础使用(5)《正则表达式-sed工具》_linux脚本表达式s-CSDN博客https://blog.csdn.net/w14768855/article/details/132347574?ops_request_misc%257B%2522request%255Fid%2522%253A%252217084222871680019707523…...
Linux命令-builtin命令(执行bash内建命令)
说明 用于执行指定的bash内建命令。builtin 命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。 语法 builtin [shell-builtin [arg ...]]参数 shell-builtin(可选):要调用的bash内建命令。 arg(可选)…...

HTML的特殊字符
HTML的特殊字符 有些特殊的字符在 html 文件中是不能直接表示的,例如: 空格,小于号(<),大于号(>),按位与(&)。 空格 示例代码: 运行结果: 由于html 标签就是用 < > 表示的࿰…...

内核移植学习
内核移植 内核移植就是指将RT-Thread内核在不同的芯片架构、不同的板卡上运行起来。 移植可分为CPU架构移植和BSP板级支持包移植两部分。 CPU架构移植 在嵌入式领域有多种不同CPU架构,例如Cortex-M、ARM920T、MIPS32、RISC-V等等。 为了使RT-Thread能够在不同C…...

Mysql 两个日期相减得到指定的格式数据
首先避坑: Mysql 中两个日期直接相减,若在同一天则得到的是秒,否则相减得到的并不是秒,一定要注意。 函数 TIMESTAMPDIFF(unit,begin,end); 函数返回 begin - end 的结果。 其中 begin 和 end 是 DATE 或 DATETIME 表达式。 …...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...