gpt4 book ai didi

postgresql - 如何从postGIS中的给定gps坐标获取范围内的所有建筑物名称?

转载 作者:行者123 更新时间:2023-11-29 12:33:53 26 4
gpt4 key购买 nike

我正在制作一个全景查看器,连接到一个 postgres 数据库,我需要下载给定范围内的建筑物名称、街道名称、兴趣点。如果您能对此事有所了解,我将不胜感激。

问候,

最佳答案

由于您没有给我们一些表格规范,因此必须使用人工示例。

WITH yourpoint AS (
SELECT
st_transform(st_setsrid(st_makepoint(yourlon, yourlat), 4326), yourgeomsrid) AS point
)
SELECT
building.name
FROM
building, yourpoint
WHERE
ST_Dwithin(building.the_geom, yourpoint.point, 400)

现在,让我们来看看有趣的部分。首先,我们需要一个几何体来将您给定的点容纳在正确的坐标系中。我创建了一个生成这样一个点的子语句 (CTE)。不过,也许重点在您的数据库中。

重要提示:为了计算距离,您指定的点和几何图形必须位于同一坐标系中。因此,我用st_setsrid封装了st_makepoint,为point添加了坐标系信息。 GPS 通常采用具有 SRID 4326 的 WGS84 格式。现在,我们必须将该点转换为您的点数据的坐标系 - 因此您必须知道 SRID。

查找附近建筑物的所有魔法都发生在 WHERE 子句中。 ST_Dwithin 查找彼此距离小于 400(以坐标系单位测量)的所有几何图形。

参见 the postgis manual了解详情。


编辑

如果您的坐标采用 WGS84 格式,则应使用地理数据类型:

WITH yourpoint AS (
SELECT
geography(st_setsrid(st_makepoint(yourlon, yourlat), 4326)) AS point
)
SELECT
building.name
FROM
building, yourpoint
WHERE
ST_Dwithin(Geography(building.the_geom), yourpoint.point, 400)

关于postgresql - 如何从postGIS中的给定gps坐标获取范围内的所有建筑物名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com