繁体   English   中英

如何从特定区域内的数据库中获取所有纬度和经度的列表?

[英]How do i get a list of all the latitudes and longitudes from a database within a specific area?

我在 Postgres 数据库中有一个表,其中包含地点及其相应的纬度和经度值。

Places (id, name, lat, lng)  # primary-key(id)

我将得到一对形成一个矩形的纬度和经度的输入。

{
  "long_ne": 12.34, 
  "lat_ne": 34.45, 
  "long_sw": 15.34, 
  "lat_sw": 35.56
}

我想获取落在矩形内的所有行。

无法根据它们的 lat-lng 值对行进行排序,因为这会在插入新值时造成麻烦。

go 关于解决此问题以优化查询以获得结果的最佳方法是什么?

我显然可以使用WHERE子句来做到这一点,但它会是最优化的解决方案吗? 表中会有大量的行,有没有办法可以优化这个查询来加快结果?

这是你想要的吗?

select *
from places
where 
    lat between :lat_no and :lat_sw
    and lng between :long_no and :long_sw

其中:lat_no:lat_ws :long_no:long_sw是查询的输入参数。

这将为您提供纬度和经度在正方形边界之间的所有行。 请注意, between考虑了包含它们两端的边界的 inteval。 您可以根据需要使用不等式条件更改此设置,例如,这使得匹配在下限上包含而在上限上排除:

where
    lat >= :lat_no and lat < :lat_sw
    and lng >= :long_no and lng < :long_sw

一个简单的 SQL 查询在这里不够吗?

SELECT *
FROM Places
WHERE   (lat > lat_sw) 
    AND (long > long_sw)
    AND (lat < lat_ne)
    AND (long < long_ne)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM