当前位置: 首页 > 知识库问答 >
问题:

PostGIS:从其他点查找一定半径内的点

谢学名
2023-03-14

我在PostgreSQL/PostGIS中有一个名为trip的表,其中有两个几何列:源geom)和目的地geom),指示旅程的开始和结束位置。

我还有一个单独的表,名为business,带有几何列office\u geomPOINT),指示办公室的位置。

我的目标是从表trip中选择目标距离任何办公地点1000米以内的记录。

我需要激发什么查询才能获得所需的结果?

共有1个答案

沈运恒
2023-03-14

可以使用子查询或联接来完成。使用子查询的示例

SELECT * FROM business 
WHERE EXISTS(
    SELECT 1 FROM trip
    WHERE ST_Distance_Sphere(trip.destination_geom, business.office_geom) < 1000
)

但是这个查询不会使用索引,并且在大数据集中可能需要很长时间。如果需要,可以从几何创建地理列,在地理列上创建空间索引,并使用ST_DWithin:

select * 
  from business b
  join trip t on ST_DWithin(trip.destination_geogr, business.office_geogr, 1000)
 类似资料:
  • 问题内容: 我有一个表,该表的列包含各个位置的纬度和经度。 然后,我还会从浏览器中的地理位置获得一个用户位置。 我需要做的是从表中找到所有记录,其中的值在10 km半径(或X km半径)内,并按距离最近的顺序排序。 我的表在列上有一个索引。 问题答案: 我目前正在从事一个项目,该项目正在计算多个位置之间的距离。我正在使用以下查询来选择给定半径内的object_id。 我无法解释ACOS公式本身,因

  • 我正在研究一个问题,基本上可以归结为以下几点: 给定: null 对于这样一个位置,有什么算法的想法吗?我最终将使用java实现,但我可以使用PsuedoCode。

  • 问题内容: 我有一个目前约有1万行的数据库。它们都基于邮政编码的中心具有经度/纬度。我发现了一个我正在尝试扩展的查询,但是总的来说它在某种程度上运行良好。但是,在下面的示例中,我试图找到半径25英里以内的事物,这似乎在大多数情况下都是可行的。我的大部分结果都在25英里标准范围内,但是我得到的结果很少,偏离了86英里到800英里。 示例:这是我的中心经度:37.2790669,-121.874722

  • 问题内容: 我有这个脚本,它将在Google地图上显示自定义标记,但是我想包含一个输入文本框,并且能够输入城市/州和邮政编码,并查看其中是否有任何标记(例如400)距该城市/州或邮政编码的英里。如果地图可以是动态的,我会喜欢的,因此当您输入城市/州或邮政编码时,它会摆脱所有其他标记并仅保留该半径范围内的一个标记,从而在地图上显示结果,如果那太难了,那么说一个最接近单位的简单更改框也可以:)我搜索并

  • 我有一个 netCDF 文件,其中包含特定时间南半球的多个气旋位置(纬度、纬度)和气温。 我想要的是提取温度值​​距离每个气旋位置中心10个测地线度(~1110公里)的半径内。想法是确定温度值​​与每个气旋相关(假设与气旋中心的最大径向距离为10º),并绘制一张仅包含这些温度值的全球等值线图。 我在这里搜索了很多,但我只找到了适用于距离一个特定的纬度中心的距离的代码(比如这个:如何从纬度和经度值的

  • 我已经为此挣扎了很长一段时间,似乎找不到正确的说法(即使在谷歌的帮助下!) 我想做的是...(我真的希望这有意义) 从表2中的value1查找表1中的value1(以匹配),然后从第一个值匹配的表2 value2更新表1中的value2 到目前为止我有...