首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >哪种空间数据结构(算法)最适合(搜索)一组区域(空间数据)?

哪种空间数据结构(算法)最适合(搜索)一组区域(空间数据)?
EN

Stack Overflow用户
提问于 2011-11-08 11:29:07
回答 2查看 1.5K关注 0票数 5

我有一组区域(地理栅栏),它们是多边形。这组数据是固定的,因此不需要插入和删除数据。哪种数据结构可用于搜索查询点(经度、纬度)所在的区域?

注意:我已经成功地为一组点实现了KD-Tree (实际上是2D-Tree)。但它对这个问题不起作用。我已经实现了一个R-Tree,它解决了这个问题,但速度很慢(或者我的实现很糟糕)。

谢谢

注意:我一直致力于R-Tree的实现,现在它工作得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-16 22:21:38

可以使用R-Tree数据结构来解决此问题。

票数 2
EN

Stack Overflow用户

发布于 2011-11-08 17:25:10

由于您不会插入/删除数据,并且可能有足够的时间对数据进行预处理,因此可以使用一些额外的内存来加快计算速度。预处理的基本思想:

  1. 获取所有多边形点并确定包含它们的最小轴对齐边界矩形;基本上,这是X和Y的最小值和最大值。
  2. 选择一个划分因子dX和dY,您将使用该因子创建搜索网格。为划分因子选择2的幂可以使多边形数据的计算速度稍快一些,以便它们的边界矩形最小值与(0,0)重合,并扩展矩形,以便它是每个dimension.
  3. Consider每个栅格正方形中划分因子的整数倍,并生成与正方形相交的多边形的列表。为每个网格方块存储此列表。根据数据的性质(可以期望与正方形相交的多边形的数量),有多种方法可以针对存储空间或速度对其进行优化。

现在,当您想要查找包含点的区域时:

  1. 使用我们之前定义的原点平移点,并确定包含该点的网格正方形(如果您使用2的幂,这是一个移位操作;否则它在网格正方形的列表中为division.)
  2. Look。如果为空,则没有包含多边形。如果不是,则必须考虑列表中的每个面并搜索intersection.

这对于分散且大多数不相交的多边形很有效,特别是如果您可以选择足够精细的栅格大小,以便每个正方形只有几个多边形。当你击中有许多相交多边形的正方形时,它将变得很慢。一种额外的优化是在正方形处为每个列出的多边形设置一个标志,以指示该正方形完全包含在多边形内;这允许您在许多情况下避免缓慢的包含测试,代价是每个多边形条目只有一位。如果栅格间距与多边形大小相比是很好的,这是特别有价值的,因为大多数正方形不会位于交叉点或边上。

如果需要更快的速度,可以开始在具有多边形引用的每个方块中存储边信息。您只需要针对实际与正方形区域相交的多边形边进行测试。这可以将工作量减少到每个多边形仅进行少量的边缘测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8049693

复制
相关文章
Android Studio 项目断开SVN连接
Android Studio 忽略文件及关联SVN:http://blog.csdn.net/yechaoa/article/details/65443003
yechaoa
2022/06/10
3.2K0
Android Studio 项目断开SVN连接
浅谈TCP协议(建立与断开连接)
TCP是面向连接的,可靠的进程到进程通信的协议。 TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据。 TCP将若干个字节构成一个分组,成为报文段(segment) TCP报文段封装在IP数据报中:
小手冰凉
2019/09/10
2.7K0
浅谈TCP协议(建立与断开连接)
rabbitMQ连接断开问题
按这样说法,应该还是没有把心跳值给设置好。上面的程序期望是10秒发一次心跳,但是理论上发送心跳的间隔会比10秒多一点。所以艾玛,我应该是把heartbeat_interval的作用搞错了, 它是指超过这个时间间隔不发心跳或不给server任何信息,server就会断开连接, 而不是说pika会按这个间隔来发心跳。 结果我把heartbeat_interval值设置高一点(比实际发送心跳/信息的间隔更长),比如上面设置成60秒,就正常运行了。
周小董
2019/03/25
6.3K0
连接断开的线
前一段参加安图举办的用户大会,其中讲了一个案例:连接断开的线。今天将这个整理下分享给大家。魔板整体截图
数据处理与分析
2019/07/31
2.4K0
连接断开的线
PHP主动断开与浏览器的连接
曾经整理过一篇《关于PHP连接处理中set_time_limit()、connection_status()和ignore_user_abort()深入解析》
后端技术探索
2018/08/09
1.8K0
iOS开发之BLE(二)——外设连接与断开
在iOS开发之BLE(一)——理论知识一文中,主要对iOS开发中BLE的基本理论知识进行了介绍,本文以中心模式为例讲解蓝牙的连接过程,并进行案例实践。
YungFan
2019/03/22
3.1K0
iOS开发之BLE(二)——外设连接与断开
wifi连接android设备进行调试
                    # setprop service.abd.tcp.port 5555
2018/09/03
8290
CDC和CDZ与腾讯云断开连接的情况
但请注意,您将无法创建,读取,刷新或者删除本地的资源。CDC或者CDZ上的CVM实例和云硬盘(CBS)卷将继续正常操作。然而,API可用性将会降低,例如,运行/启动/停止/终止。实例指标和日志将继续在本地缓存一段时间,并且将在连接返回时推送到腾讯公有云区域。对于腾讯云对象存储在分布式云上的部署,如果与CDZ或者CDC的网络连接丢失,您将无法访问您的对象。系统使用主Region腾讯云访问管理(CAM)服务来验证对象存储和检索请求,如果CDZ或者CDC无法连接到主腾讯云区域,您就不能访问您的数据。在连接断开期间,您的数据仍然安全地存储在CDC或者CDZ,在连接恢复后,身份验证和请求便会恢复。
腾讯云计算产品团队
2023/06/25
3570
Android 调试之无线连接设备
在用 Mac Pro 开发时,Mac 上面的 USB 插槽就两个,一个接了鼠标,一个接了键盘,然后,然后就没了,那我真机调试时肿么办?
AndroidTraveler
2018/08/31
8880
Android 调试之无线连接设备
mysql数据库(1):连接与断开服务器
(1)登录:mysql -h localhost -u root -p  回车,然后输入密码,回车
川川菜鸟
2021/10/18
8.2K0
振弦采集模块参数配置工具的连接与断开
在指令区的【 COM 端口】组合框内操作完成。【端口】 下拉框:列出了本计算机当前已经存在的所有 COM 端口名称,若与模块连接的端口名称未在下拉框中列出,还可通过手工输入端口名的方法自由输入。
河北稳控科技
2023/01/12
7810
振弦采集模块参数配置工具的连接与断开
WebSocket断开原因、心跳机制防止自动断开连接
WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。
安德玛
2022/03/09
17.1K0
Netty是如何断开连接的?
多路复用器(Selector) 接收到OP_READ事件: 处理OP_READ事件: NioSocketChannel.NioSocketChannelUnsafe.read()
JavaEdge
2021/02/22
2K0
Android ADB调试之无线连接设备
一、数据线连接手机和电脑(首次设置需数据线连接),开启开发者模式和USB调试,确保手机和电脑已连接
王大力测试进阶之路
2019/10/25
5.7K1
Android ADB调试之无线连接设备
SecureCRT 设置超时自动断开连接时长
中文:选项->编辑默认会话->如下图。 English:Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP
全栈程序员站长
2022/08/09
4.9K0
SecureCRT 设置超时自动断开连接时长
TCP连接建立、断开过程详解
TCP连接建立过程需要经过三次握,断开过程需要经过四次挥手,为什么? 有没有其他的连接建立、断开方式?
coderhuo
2018/08/29
12.1K0
TCP连接建立、断开过程详解
【TKE】设置 Websocket 空闲连接断开时间
通过 Ingress-nginx(TKE 组件) 代理 ws 连接成功后, 空闲连接会在默认 60s 后 断开,有时业务中想要配置空闲连接更长时间再断开。
Jokey
2023/09/22
2.2K0
点击加载更多

相似问题

用R求有向图中两个顶点之间的时间

10

找到有向图中任意两个顶点之间的所有边。

10

求有向无环图中两个节点之间的路径数

219

有向图中两个顶点之间的圈

35

求有向图中的所有根

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文