我尝试使用的库具有给定的纬度和经度,并且对表中的条目进行计算后得出的纬度/经度在此范围内。生成的SQL查询适用于MySQL,但不适用于PostgreSQL。
这是我的server.log
文件中详细说明错误psql
和完整查询的条目:
ERROR: column "distance" does not exist at character 507
STATEMENT: select *, ( '3959' * acos( cos( radians('53.49') ) * cos( radians( places.lat ) ) * cos( radians( places.lng ) - radians('-2.38') ) + sin( radians('53.49') ) * sin( radians( places.lat ) ) ) ) AS distance from (
Select *
From places
Where places.lat Between 53.475527714192 And 53.504472285808
And places.lng Between -2.4043246788967 And -2.3556753211033
) As places where "places"."deleted_at" is null having "distance" <= $1 order by "distance" asc
知道了什么是SQL之后,我可以编辑生成SQL的PHP代码,并将PR发送回库。
该查询使用特定于MySql的语法。在Postgres(以及我所知的所有其他RDBMS)中,应使用派生表:
select *
from (
select *,
(3959 * acos( cos( radians(53.49) ) * cos( radians( places.lat ) )
* cos( radians( places.lng ) - radians(-2.38) )
+ sin( radians(53.49) ) * sin( radians( places.lat ) ) ) ) AS distance
from (
select *
from places
where places.lat between 53.475527714192 and 53.504472285808
and places.lng between -2.4043246788967 and -2.3556753211033
) as places
where places.deleted_at is null
) sub
where distance <= $1
order by distance asc
我还从数字常量中删除了引号。
距离查询 距离查询,是指查询指定几何对象一定距离范围内的地物。对于点几何对象,则查询以该点为圆心,以距离为半径画圆,落在该圆形范围内的地物;对于线和面几何对象,则查询距离对象边界一定范围内的地物。 以 World 数据服务为例。使用接口 ol.supermap.QueryService 在图层 “Capitals@World.1” 中查找距离指定点为10度(地图坐标单位)的矢量要素。 // 添加查
我在一个csv文件中有很多纬度/经度点,我创建了一个表,其中包含4326投影中的一个点(表邮政编码,字段位置) 我正在构建这样的数据:- 并将p存储在位置字段中。 问题是,我想找到一个给定点的“接近”记录。我在以下位置看到了一些有前途的代码:- https://github.com/rgeo/activerecord-postgis-adapter/blob/master/test/spatial
问题内容: 选项 询问 我有一个包含4列的数据库表: 唯一身份 城市名 纬度(纬度) 经度(lng) 我在顶部使用查询返回距指定坐标距离指定英里数内的位置。它似乎可行,但我不确定它的准确性如何。我很想知道查询是否很好,或者您是否有更好的解决方案。 问题答案: 看起来像是正确的大圆距查询。 您对WRT的准确性有何看法?
问题内容: 今天,我遇到了一个有趣的SQL问题,尽管我想出了一个行之有效的解决方案,但我怀疑这是最佳还是最有效的答案。在这里,我请专家- 帮助我学习一些知识并改善查询条件!RDBMS是SQL Server 2008 R2,查询是SSRS报告的一部分,该报告将针对约100,000行运行。 本质上,我有一个ID列表,该ID可能具有多个与之关联的值,这些值是Yes,No或其他字符串。对于ID x,如果任
问题内容: 我有一个不支持三角函数的SQLite数据库。我想按距离对桌中的一组经纬度进行排序,而不是第二对经纬度对。我熟悉用于按距离对经纬度对进行排序的标准Haversine距离公式。 在这种情况下,我并不特别在意精度,因为我的点之间相隔很远,所以我不介意通过将曲线视为直线来舍入距离。 我的问题是,这种查询是否有公认的公式?记住没有触发功能! 问题答案: 如果您的点彼此之间的距离在合理范围内(即,
我创建了一个表,其中包含位置及其空间坐标(纬度、经度(度数)),以postgres表示。我用于相同用途的命令有: 我在postgres中插入了空间坐标(经度、纬度) 我创建了一个表,其中包含位置及其空间坐标(纬度、经度(度数)),以postgres表示。我用于相同用途的命令有: testSpatial。csv包含以下值: 现在,我想找到彼此距离在50公里以内的所有空间位置。为此,我使用了以下命令: