问题标签 [spatial-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
217 浏览

sql-server - 查询空间索引无响应

我有一个位于 SQL Server 2008 上的数据库,其中包含约 120 亿行,所有行都包含纬度、经度和相应的地理字段。我最近需要添加对地理字段的查询功能。我添加了空间索引,处理超过 4TB 的数据需要 6 天。

使用这样的查询添加预期......

这是估计的执行计划......

执行计划

我在 100 个轧机行的样本集上测试了这个查询,它工作得非常好。但是在 12 个账单行上,查询在约 4 小时后没有响应,最后由于磁盘写入错误而失败,这很奇怪,因为磁盘有 5TB 未使用。

希望有人可能会看到我的明显疏忽。非常感谢!

0 投票
1 回答
970 浏览

php - 具有 MySQL SPATIAL 数据类型的 PropelORM

我正在PropelORM 1.6为一个项目使用和实施某种 GIS 服务。在数据库 ( MySQL ) 中,对于坐标,我使用 POINT 字段类型来存储各种项目的坐标。

schema.xml构建表模型时,我已将此(POINT)字段设置为VARCHAR(255),因为尚不支持 AFAIK 空间数据类型。

使用 组织该字段的选择查询是可以的Criteria::CUSTOM,但是当我想更新这个字段时,使用众所周知GeomFromText的 Propel,我得到下一个错误:

警告:PDOStatement::execute(): SQLSTATE [22003]:数值超出范围:1416 无法从您发送到 /var/www/.../propel/util/BasePeer.php 中的 GEOMETRY 字段的数据中获取几何对象在线 425

我正在使用设置字段值

$object->setGeo("GeomFromText( 'POINT(48.211055 16.383728)' )");

我想这个字符串被 ORM 视为一个字符串值,而GeomFromText不是像它应该的那样被视为一个函数。

不幸的是,没有Criteria::CUSTOM设置字段值。

如何使用 PropelORM 更新这些字段?

更新:对于这类任务,PropelORM 中可能有类似的东西吗ZendFrameworkZend_Db_Expr

0 投票
1 回答
991 浏览

c++ - 使用 SpatialIndex 库为 R* 树选择参数

我正在使用来自http://libspatialindex.github.com/的空间索引库

我正在主内存中创建一个 R* 树:

然后我插入了大量的边界框,目前大约 250 万(德国巴伐利亚州的道路网络)。稍后我的目标是插入欧洲的所有道路。

存储管理器和 rtree 的参数有哪些好的选择?大多数情况下,我使用 rtree 来查找到给定查询(bbox 交叉点)的最近道路。

0 投票
1 回答
1577 浏览

postgresql - 哪个 PostGIS SRID 对空间索引最有效?

我有一个启用 PostGIS 的数据库,其中一个名为的表locations将经纬度点 (SRID 4326) 存储在名为coordinates. 但是,我对该表的所有查找都将这些点转换为度量投影(SRID 26986),主要是为了进行距离比较。

显然我想在coordinates列上创建一个空间索引。我的问题是,在这种情况下,哪个是空间索引中使用的最佳(计算效率最高)SRID ?coordinates

我可以使用 SRID 4326 进行索引...

或使用 SRID 26986...

0 投票
1 回答
1763 浏览

azure-sql-database - SQL 空间索引和聚集索引

我正在 SQL Server Azure Server 中的地理列上创建空间索引,如下所示。

使用 GEOGRAPHY_GRID WITH (GRIDS = (LEVEL_1 = LOW, LEVEL_2 = LOW, LEVEL_3 = HIGH, LEVEL_4 = HIGH), CELLS_PER_OBJECT = 16, DROP_EXISTING = ON) 在 TableA(GeographyAreaCode) 上创建空间索引 sp_idx

现在我观察到正在创建两个具有给定名称 sp_idx 的索引 - 一个是空间索引,另一个是聚集索引。

SQL Server 是否使用空间索引创建强制聚集索引?

另外,如果我必须删除此索引,它是否也会删除关联的聚集索引?

提前谢谢了,

0 投票
2 回答
1607 浏览

mysql - Mysql 空间扩展。如何检查线串是否包含点?

我正在尝试确定 Linestring 是否有 Point.... fe

如果我这样做,CONTAINS(ls,p)我有真实的。但是没有点(2 0)在行

我需要完全包含。它有什么功能吗?

0 投票
1 回答
464 浏览

c# - 在 R* 树中插入新叶子

R* Tree的插入算法的步骤是什么?

注意:我希望能够通过插入来构造树。无论我选择什么条件来选择最佳叶子,它总是给我具有最大重叠和最大面积覆盖的垃圾树(在树的每一级添加后测试最小重叠区域,在树的每一级的最小扩展率等) .

现在这个 R* 树是如何通过如此精美的插入构建的(来自Wikipedia):

在此处输入图像描述

0 投票
2 回答
131 浏览

mysql - MySql 性能查找 1 公里内的所有用户

我有 mysql 表,需要找到彼此相距 1 公里以内的所有用户表:

可以解决:

  1. 由用户迭代 i ... n
  2. 对于每个选择特定多边形内的所有用户,使用索引
  3. 互相发信息

所以复杂性将是〜O(n)或更多(取决于索引),还有其他性能更好的解决方案吗?

0 投票
8 回答
541 浏览

algorithm - 快速找到远离牛群的动物的算法

我正在开发一个模拟程序。有成群的动物(角马),在那个畜群中,我需要能够找到一种远离畜群的动物。

在下图中,绿点远离牛群。我希望能够快速找到这些点。

绿点远离牛群

当然,有一个简单的算法可以解决这个问题。计算每个点的邻域中的点数,然后如果该邻域为空(其中为 0 点),则我们知道该点远离牛群。

问题是这个算法根本没有效率。我有一百万个点,在每一百万个点上应用这个算法非常慢

有什么东西会更快吗?也许使用树木?

编辑@amit:我们想避免这种情况。左角的一组绿点会被选中,尽管它们不应该被选中,因为远离牛群的不是单一的动物,而是一群动物。我们只是在寻找远离牛群(而不是一群)的单一动物。

一群远离牛群的绿点

0 投票
0 回答
293 浏览

c# - RavenDB 2.0:使用 SpatialGenerate 进行索引会占用所有内存

问题:在提供的代码中,我试图索引~26000 个地理围栏(多边形)。我尝试了许多组合 1)插入数据和 2)为简洁起见,为代码中未显示的数据编制索引。我已经使用预建索引导入了所有数据;导入数据然后制作索引并制作索引并部分导入数据并等待非陈旧索引。在所有情况下,它都会耗尽所有内存并失败(失败是指我等待 30 分钟以完成索引过程)。一个有趣的观察发生在带有预建索引的部分插入中:它总是开始消耗大约 1790 个条目的所有内存。

环境:我在 2 台机器上测试过:1) 4 GB Ram,双核 2.56 CUP 2) 12 GB Ram,i7 CPU。我使用 Visual Studio 2012(这应该不重要)针对 .NET 4.0 和 RavenDB build 2230。这里使用的唯一外部库(RavenDB 客户端库除外)是 NetTopologySuite (NuGet)。

旁注和背景:我正在使用 2 个内存数据结构进行空间计算:一个 KD-Tree 和一个带有静态数据的 R-Tree(无插入/删除/更新)。现在我的项目中添加了一个新步骤,需要每天两次更新/插入一些数据;因此,我寻找替代品以消除这部分的内务负担,并提出了 SQLite R-Tree 模块。它足够快(使用一些并行编程+它是一个主要是只读数据库)。到目前为止,RavenDB 的选择并不多(战略决策等),但我喜欢玩它,结果令人失望。准确地说,我喜欢 RavenDB 960,我真的对 RavenDB 2230 很生气。

我使用了内存树并使用约 3,000,000 个多边形(再次准确地说是“边界框”)测试了 SQLite,但未能将 RavenDB 用于约 26,000 个多边形。我真的希望我做错了什么。

编码: