当前位置: 首页 > 面试题库 >

如何查询座标5英里半径内的所有行?

陆畅
2023-03-14
问题内容

这是CSV格式的PostgreSQL示例。

row,latitude,longitude
1,42.082513,-72.621498
2,42.058588,-72.633386
3,42.061118,-72.631541
4,42.06035,-72.634145

我在世界各地有成千上万行这样的跨越坐标。

我只想查询表中特定半径内的坐标。如何使用PostGIS和PostgreSQL做到这一点?


问题答案:

我结合了欧文(Erwin)和帕特里克(Patrick)的答案。

-- Add geography column
ALTER TABLE googleplaces ADD COLUMN gps geography;
UPDATE googleplaces SET gps = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);
CREATE INDEX googleplaces_gps ON googleplaces USING gist(gps);

SELECT *
FROM my_table
WHERE ST_DWithin(gps, ST_SetSRID(ST_MakePoint(-72.657, 42.0657), 4326), 5 * 1609);


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

  • 问题内容: 我是Hibernate Spatial的新手,正在尝试对给定半径内的对象执行简单查询。我已经使用来自Google Maps和其他来源的数据在数据库中创建了许多条目,这些条目的属性分别对应于经度和纬度。此属性在我的Entity类中定义如下: 我现在正在尝试找出如何搜索所有坐标位于距给定点 x 公里半径内的实体对象的方法。例如,我想找到落在该点半径50公里以内的对象(12.34567,-7

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

  • 这是我的代码,我将标记添加到半径内的位置 我想数一数半径内的标记

  • 我正在使用meanstack应用程序。所以我有mongodb系列,其中包含全球各地的位置。模式loook如下所示。 选择圆内所有点(预定义点和预定义半径)的有效方法是什么。。?? 使用SQL查询也可以做到这一点。但我想要一种有效的方法,不需要逐个迭代,检查它是否在该半径内。

  • 我想知道位置是否在我的半径范围内。例如,我有我当前位置的“latlng”物体和我有一个更多的“latlng”物体,我想检查这两个物体是否在1km范围内?我该如何实现呢?