问题标签 [spatial]

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 投票
3 回答
933 浏览

db2 - 空间 SQL:最适合正方形的数据类型?

我有一个启用空间的数据库(在本例中为 DB2)。我需要在表格中存储大量正方形。哪种标准空间 SQL 数据类型最合适?

我想我可以使用ST_polygon,但也许有一种更专业的类型可以提供

  • 更好的性能
  • 更好的数据保证(如果有人在特定列中存储非平方值,我想将其视为错误)

我试图找到ST_rectangleST_square类型,但它们似乎不存在(?)

在我使用 DB2 的同时,我也对不适用于 DB2 的解决方案感兴趣,只要它们符合标准。

0 投票
3 回答
6626 浏览

linq-to-sql - Linq2Sql 或 EF4 中的空间数据类型支持

有谁知道(理想情况下,有参考),LinqToSQL 或 EntityFramework v4 的 VS2010 版本是否支持对 SQL 2008 空间数据类型的查询?

0 投票
6 回答
4393 浏览

data-structures - 哪种数据结构适合查询“距点 p 距离 d 内的所有点”

我有一个 3D 点云,我想有效地查询距任意点 p 距离 d 内的所有点(这不一定是存储的点云的一部分)

查询看起来像

什么加速结构适合这个?范围树似乎只适用于查询矩形体积,而不是球体体积(当然我可以查询球体的边界框,然后整理出所有距离大于 d 的顶点 - 但也许有更好的方法这个??)

谢谢!

根据 Novelocrats 的建议,我尝试定义结构所需的功能:

通常,在 n 次查询之后,这些点会发生位移,并且会进行一些(不是很多!)插入和删除。与所有点的边界框相比,偏移向量非常小

0 投票
4 回答
2464 浏览

performance - SQL Server 2008 空间数据功能对映射查询有用吗?

我有一个应用程序,基本上我有一个巨大的信息表(1 亿条记录),每一行都包含一个纬度/经度值。

我不断查询此表以获取适合某个点周围半径范围内的所有记录。例如,“39.89288,-104.919434 5 英里范围内的所有记录”

为此,我在 Lat/Long 列上有一个索引,我得到了点的“边界正方形”,然后在我的 ASP.Net 应用程序中丢弃了所有落在圆圈之外的点,因为这样更快而不是在 SQL Server 中进行圆计算。
注意:这是关于美国的所有数据,所以我认为地球是平坦的以进行计算,这对于我的需要来说足够精确。

现在,Lat/Long 索引的主要问题是它是点的“正方形”,因为我试图找到“x 和 y 之间的纬度”和“x 和 y 之间的长”,所以它不能真的超级高效地使用索引,就像我在“一行”点上搜索一样。

我一直在阅读 SQL 2008 的空间功能,但我没有找到足够的具体信息来了解这是否对我有用。

所以问题是:SQL 2008 是否有某种不同类型的索引可以使这种特定类型的查询比使用 SQL 2005 更快?

0 投票
1 回答
1065 浏览

sql-server-2008 - 我可以在 SQL Server 2008 中创建“覆盖、空间”索引吗?

我目前有一个站点,其中包含一个包含 Lat/Long 浮点列的表,以及这 2 列以及我需要检索的另一列的索引。

我一直在查询这个表以获取从某个点开始落在一个半径内的行(我实际上是为了速度而得到一个正方形),但我只需要已经索引的字段,所以这个索引实际上是覆盖,而执行计划只有两个步骤:

现在,我正在尝试利用 SQL 2008 的空间特性。我已经创建了 Geography 列,填充了它,创建了空间索引,工作正常。

一切正常,除了执行计划有一百万个步骤,74% 的时间花在聚集索引搜索上,它将在空间索引中找到的行连接到实际表中,以获取其余的数据...
(空间索引搜索占执行计划成本的 1%)

因此,显然,它正在适当地使用空间索引,并且通过 Lat/Long 上的“常规”索引比以前更快地找到我需要的记录,但是加入主表是在杀死我,空间查询需要 7 倍只要是我的旧的。

有没有办法向空间索引添加更多列,以便它可以覆盖并且可以一步完成,就像以前一样?
我还能做些什么来改善这种情况吗?


更新:我发现“常规”索引可以使用 INCLUDE 关键字“包含”其他列(我不知道,我曾经只是将列包含在索引本身中)
根据此处的文档,该子句不是空间索引的一个选项......有什么想法吗?

谢谢!
丹尼尔

0 投票
2 回答
814 浏览

mysql - 使用空间 MySQL 功能加快文本比较(特征向量)

我有一个函数,它接受两个包含两个文本的标记/单词的数组,并给出显示两个文本之间关系的余弦相似度值。

该函数接受一个数组 $tokensA (0=>house, 1=>bike, 2=>man) 和一个数组 $tokensB (0=>bike, 1=>house, 2=>car) 并计算相似度,即作为浮点值返回。

如果我想比较 75 个文本,我需要进行 5,625 次单次比较才能将所有文本相互比较。

是否可以使用 MySQL 的空间列来减少比较次数?

我不想谈论我的功能或比较文本的方法。只是减少比较的次数。

MySQL的空间列

  • 您使用以下命令创建空间列:CREATE TABLE abc (clmnName TYPE)
  • 此处列出了可能的类型
  • 是我稍后选择数据的方式[例如 MultiPointFromText() 或 AsText()]
  • 您插入这样的值: INSERT INTO clmnName VALUES (GeomFromText('POINT(1 1)'))

但是你如何用它来解决我的问题?

PS:我正在寻找减少与此问题中算法的比较次数的方法。Vinko Vrsalovic 告诉我,我应该针对空间特征提出另一个问题。

0 投票
3 回答
2122 浏览

ruby-on-rails - 从 Rails 访问 PostGIS 空间数据

我需要使用 Rails 应用程序中现有的 PostGIS 数据库。到目前为止,我能够很好地访问数据库,GeoRuby 很好地将“geom”列转换为一个点对象。

我正在寻找的是一种在这些表上执行类似 ActiveRecord 查询的简单方法,例如

或类似的空间查询,如距离计算等。人。

我尝试了几个 geokit 的组合,附带的 rails 插件,但我很确定在 ruby​​/rails 世界中一定有更好的东西。有什么提示吗?

0 投票
2 回答
7473 浏览

java - 在 Hibernate 中映射计算字段

我不确定这在 Hibernate 中是否可行,但如果可以的话,那就太好了 :) 我实际上并没有通过这个概念阶段,但我会尽我所能解释。

我想利用 Oracle Spatial 功能进行基于邻近的搜索。想象一下,我有一个存储纬度/经度值的 Location 实体。然后想象一下,我想查询用户指定的纬度/经度位置 5 公里内的所有位置。在结果中,我想查看所有匹配的 Locations,但除了 Location 实体上的标准映射字段之外,我还想显示每个 Location 相对于用户指定位置的距离。

Oracle Spatial 允许我将其作为 SQL 中的计算字段执行,但我不明白 Hibernate 如何支持从数据库返回的计算字段。由于计算字段不是表中的列,我无法进行标准映射。

是否有一些特殊功能允许我为 POJO 创建包装器并将 Hibernate 映射到它们以便可以返回额外的计算属性?

0 投票
5 回答
3133 浏览

algorithm - 求解最近邻的最佳性能关键算法

我们有一个 x,y 对的列表。每对代表二维空间上的一个点。我想从这个列表中找到离特定点 xq,yq 最近的点。这个问题的最佳性能关键算法是什么?Lisp of points 不会改变;这意味着我不需要执行插入和删除。我只想找到这个集合中目标 xq,yq 点的最近邻居。

编辑1:谢谢大家!正如 Stephan202 猜对的那样,我想反复这样做;像一个函数。列表不一定是排序的(实际上我不明白它是如何排序的?就像一个具有 2 列 a 和 y 的主键的表?如果这有帮助,那么我会对其进行排序)。

我会根据列表构造一次数据结构,然后我会在函数中使用这个生成的数据结构(如果这个过程本身是相关的)。

谢谢雅各布;KD-Tree 数据结构似乎是一个很好的答案候选者(我觉得确实如此。当我得到一些相关结果时,我会更新)。

编辑2:我发现,这个问题被命名为“最近的邻居”!

编辑 3:第一个标题是“In Search of an Algorithm (for Spatial-Querying and Spatial-Indexing) (Nearest Neighbor)”;我选择了一个新标题:“解决最近邻的最佳性能关键算法”。由于我不想对我的初始数据执行插入和删除操作,而我只想要离它们最近的一个到一个新点(不会被插入),我选择(当前)在 KD-Trees 上工作。谢谢大家!

0 投票
1 回答
2043 浏览

sql - MySQL查询地理中点

我需要一个 MySQL 查询(或函数)来计算任意数量的纬度/经度坐标的地理中点。我想使用此页面http://www.geomidpoint.com/calculation.html中描述的方法 C(平均纬度/经度),但无法弄清楚如何将其转换为 SQL 查询。我正在寻找以下形式的东西:

从点中选择 LATITUDE_AVG_FORMULA(points.latitude),LONGITUDE_AVG_FORMULA(points.longitude);

点表中的每个点都具有十进制格式的相关纬度和经度。我希望有人已经有他们正在使用的 MySQL 查询(或函数),或者在地理空间计算方面比我有更多的经验。在此先感谢您的帮助!