问题标签 [spatial-query]

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 回答
239 浏览

python - 距离内的所有点

我真的很绝望。我想做的是:我有一个二维点列表

(我的列表有 30000 个元组(xn,yn))。现在我想要距离 dmax 内的所有点(从每个点)。因此我使用了 scipy.spatial.KDTree() 和 query_ball_point。

对于我的第一点,我得到

为什么会有这些“L”?我怎样才能删除这些?

感谢帮助!

0 投票
2 回答
588 浏览

sql - Sql Server 几何列导致查询需要很长时间才能运行

我编写了一个查询来从 Sql 数据库中获取多边形数据。

我有以下查询来获取结果。

在这张表上,我已经添加了一个空间索引,如下所示

但是获取 2483 条记录需要 38 秒。谁能帮我优化这个查询

0 投票
1 回答
180 浏览

php - 无法使用 mysql 点类型查询检索所有点

我遇到了在 mysql 中使用空间数据类型点的问题。我在 mysql 中有一张名为“tasks”的表,我在其中存储以下信息。

以下是示例数据。

我们在 iPhone 中有一个应用程序,它向我发送了 2 个不同的 lat、lng 值,我们需要传递介于该 lat、long 之间的所有位置。例如。它们传递了 2 个 lat,lng 值,我需要导出它之间的所有位置。A 点:22.327847、73.172894 B 点:22.272259、73.227825

附上谷歌地图的屏幕截图。

在此处输入图像描述

现在为了获取我正在编写以下查询的数据。

我无法获得给定点 A 和点 B 之间的所有点。我可以看到我存储的点在这些点之间,但无法获得所有值。我在结果中只得到一个值。我的查询有什么问题还是我应用了错误的逻辑?

任何人都可以帮助我吗?

0 投票
1 回答
975 浏览

solr - Solr 4.5:到路由的距离:排序或过滤

使用 Solr 4.5 和用例是我需要按到给定路线的距离对结果进行排序。使用包含 1 个地理坐标作为 rpt 字段geo(兴趣点的位置)的文档。

这是我的目标的说明:http: //i.imgur.com/lGgMEal.jpg。我想计算从文档到给定路线的最短距离并将其用作提升组件。

当前的尝试是{!score=recipDistance}在模式中使用函数edismax并在 WKT 中将路线描述作为 LineString 发送。这是现在发送的查询:

并以 URI 形式:

我对这种方法的问题是:

  • 距离似乎是从形状(路线)的中心计算的。这意味着我们获得的距离不是到线路,而是到现场。有了这个查询Pt(x=60.027965,y=11.512795)
  • 距离计算的结果似乎是错误的。索引中有 4 个文档,它们按以下顺序排列:

    • (1) 59.7333、7.61283
    • (2) 59.6236、10.7263
    • (3) 59.6238、10.7385
    • (4) 64.12379、22.14029

    当订单应该是:

    • (3) 59.6238、10.7385
    • (2) 59.6236、10.7263
    • (1) 59.7333、7.61283
    • (4) 64.12379、22.14029

您可以在此处查看带有 boost calc 调试的完整结果:pastebin.com/5tvCb0Cf

另一种可行的解决方案可能是按到路线的距离过滤文档(例如:http: //i.imgur.com/EJu8Kcg.jpg)。这可以通过使用似乎在 jTS 和 spatial4j 中都支持的缓冲线来完成。唯一的问题是我如何发送缓冲行作为Intersect函数的输入(像这样:)geo:"Intersects(LINESTRING (59.79619 11.38690, 60.25974 11.63869) d=1)"

这里的解决方案是创建一个自定义搜索组件,该组件将接受作为 LineString 的路由,并将进一步作为 Polygon 或 MuliPolygon 转发查询,但除非必要,否则我宁愿避免开发自定义组件。

我的问题是:

  • 在 Solr 4.5 中是否有可能获得到 LineString 的距离,而不是到形状的中心?
  • 我们可以发送一个缓冲的行作为Intersect函数的输入吗(像这样:)geo:"Intersects(LINESTRING (59.79619 11.38690, 60.25974 11.63869) d=1)"

PS:索引中的字段说明:

字段类型定义:

0 投票
1 回答
2819 浏览

sql - 如何从 sql 凸包获取 (x, y) 坐标

如何从该查询的结果中提取 x,y 坐标?我尝试了很多变体,但没有一个能正常工作。

错误的结果:

应该是这样的:

0 投票
1 回答
580 浏览

postgresql - postgresql 将 WKB 转换为 utm

我将 PostgreSQL 与 postgis 一起使用,几何图形在 UTM 中并存储为具有多种形状类型(点、多边形、线串......)的 WKB。有没有办法将 wkb 转换为弧度或 utm 的点列表?没有形状类型和每个点的字符串解析?谢谢

0 投票
1 回答
1118 浏览

collections - Apache Solr - Lucene - Zip Code Radius Search

I have an existing collection of PERSON's records already loaded to my Solr Server. Each record has a field for a ZIPCODE. I know that Solr now supports spatial search with the geodist() function, the problem is that I do not have the lat and long for each person.

Can I add another collection to Solr mapping the ZipCodes to LATs and LONGs then JOIN them like you would with SQL? Is this even possible with Solr?

0 投票
1 回答
775 浏览

mysql - 在 MySQL 中对空间表执行子查询

我有一个空间表polygons。我正在尝试有效地查找polygonMySQLlat/lng point空间表中的内容。

我知道ST_Within可以使用,MySQL 5.6但是我的版本早于这个版本,所以我将我可以使用的两个功能组合成比单独的更有效/更准确的东西。

这些是 MySQL 论坛帖子中的本机MBRWITHIN函数和自定义GISWithin。MBRWITHIN 通常给我大约 2 行,一个点应该只有一个但很快,GISWithin 给出正确的行,但是很慢。

所以我正在尝试编写一个查询:

最初使用快速 MBRWITHIN 功能选择可能包含该点的几行。

然后使用较慢的 GISWithin 将此列表细化为单个正确的行,该 GISWithin 现在在大约 2 行而不是 9000 行上运行。

我尝试过各种子查询,例如

只是为了得到错误信息

有谁知道我如何编写这样的查询或函数?

我的表中的多边形字段被调用geometry并且是Geometry从 ogr2ogr 导入的类型,供那些知道这一点的人使用。

0 投票
3 回答
778 浏览

r - rgeos gIntersection in loop 需要太长时间来裁剪路径网络

我正在使用 gIntersection 从 SpatialPolygonsDataFrame 中一次一个地裁剪一个全国性的路径网络。我正在遍历每个多边形,剪裁路径网络,计算剪裁路径的长度,并将其保存到名为 path.lgth 的数据帧中:

vid 行只是提取多边形 ID 以保存在具有路径长度的数据帧中。

我的问题是做第一个多边形需要太长时间(大约 12 分钟!)。有没有办法加快这个速度?我不确定 gIntersection 在数学上做了什么(它是否检查所有路径以查看它们是否与多边形重叠?)。我已经简化了我的路径,所以它们只是一个功能。

谢谢你的帮助。

0 投票
1 回答
2539 浏览

c++ - 为什么我的空间哈希这么慢?

为什么我的空间哈希这么慢?我正在编写一个使用平滑粒子流体动力学来模拟滑坡运动的代码。在光滑粒子流体动力学中,每个粒子都会影响 3 个“光滑长度”距离内的粒子。我正在尝试实现空间散列函数,以便快速查找相邻粒子。

对于我的实现,我使用了 stl 中的“set”数据类型。在每个时间步,使用下面的函数将粒子散列到它们的桶中。“bucket”是一个集合向量,每个网格单元有一个集合(空间域是有限的)。每个粒子由一个整数标识。

为了寻找碰撞,使用下面标题为“getSurroundingParticles”的函数,它接受一个整数(对应于一个粒子)并返回一个集合,该集合包含粒子的 3 个支撑长度内的所有网格单元。

问题是,当粒子数为 2000 时,这个实现真的很慢,甚至比检查每个粒子与其他粒子还要慢。我希望有人能在我的实现中发现一个我没有看到的明显问题。

看起来调用 getSurroundingParticles 的代码:

非常感谢!