gpt4 book ai didi

sql - 使用 PostGIS 按给定的纬度和经度查找在 2 英里半径内相交和环绕的记录?

转载 作者:行者123 更新时间:2023-12-05 04:26:44 24 4
gpt4 key购买 nike

我有一个 Postgres 表,其中包含一些使用 shapefile 创建的数据。我需要找到与给定经纬度 2 英里半径范围内相交的所有记录。我使用了一些查询,包括以下查询。

SELECT * FROM us_census_zcta WHERE ST_INTERSECTS(geom,CIRCLE(POINT(40.730610, -73.935242), 2));

但他们都没有工作。我在这里做错了什么?我怎样才能得到我需要的结果?

SRID 是 4269 (NAD 83)。

编辑Mike Organek之后指出我已经在上面的查询中切换了经纬度。然后我尝试了几件事,下面的查询给了我 1 条记录。

SELECT * FROM us_census_zcta WHERE ST_INTERSECTS(geom::geometry,ST_SETSRID(ST_POINT(-73.935242, 40.730610), 4269)::geometry);

但我如何使用 Circle 并找到与给定经纬度 2 英里半径内相交的记录?

最佳答案

您要找的是ST_DWithin ,它将检查记录是否在给定缓冲区内相交。为了将它与英里一起使用,您最好将 geometry 列转换为 geography,因为它随后会计算以 为单位的距离:

For geography: units are in meters and distance measurement defaults to use_spheroid=true. For faster evaluation use use_spheroid=false to measure on the sphere.

SELECT * FROM us_census_zcta 
WHERE
ST_DWithin(
geom::geography,
ST_SetSRID(ST_MakePoint(-73.935242, 40.730610), 4269)::geography,
3218.688); -- ~2 miles

请记住,如果索引设置不当,此转换可能会影响查询性能。

另请参阅:Getting all Buildings in range of 5 miles from specified coordinates

关于sql - 使用 PostGIS 按给定的纬度和经度查找在 2 英里半径内相交和环绕的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72958096/

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