gpt4 book ai didi

sql - 如何按纬度和经度(Postgis)从表中选择多边形

转载 作者:行者123 更新时间:2023-11-29 14:27:36 26 4
gpt4 key购买 nike

有多边形表。我需要从表中找到一条记录,其中包含区域内的一些点(纬度/经度)。

坐标示例:149.14668176, -35.32202098

你能帮我写一个选择字符串来找到包含我的点的区域吗?

 SELECT PostGIS_full_version();
postgis_full_version
POSTGIS="2.5.2 r17328" [EXTENSION] PGSQL="96" GEOS="3.5.1-CAPI-1.9.1 r4246" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.1.2, released 2016/10/24" LIBXML="2.9.4" LIBJSON="0.12.1" LIBPROTOBUF="1.2.1" RASTER

类似的东西:

SELECT id,name FROM area_polygon WHERE ST_Within('149.14668176, -35.32202098', geog);
bounds=# \d bounds.area_polygon;
id | integer | | not null |
geog | geography(Polygon,4283) | | |
name | text | | |

我预计:

  id  | name
------+--------
1 | Alabama

最佳答案

st_within仅支持几何类型,这就是为什么您会在较早的答案中收到错误,因为您有地理列类型。

您可以转换为几何体:

SELECT id,name 
FROM area_polygon
WHERE ST_Within(ST_SetSRID(ST_POINT(149.14668176,-35.32202098),4283), geog::geometry);

或者您可以使用 st_dwithin ,距离设置为零:

SELECT id,name 
FROM area_polygon
WHERE ST_DWithin(ST_SetSRID(ST_POINT(149.14668176,-35.32202098),4283)::geography, geog,0);

请注意,坐标的顺序必须是经/纬度(而不是纬度/经度),我假设这些坐标在您的 SRID 4283 中。它们必须匹配 geog SRID 或转换为它...

参见 here获取哪些函数支持哪些参数的列表。

关于sql - 如何按纬度和经度(Postgis)从表中选择多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147096/

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