我知道有很多类似的问题,但是经过长时间的搜索,它们都没有为我工作,这就是为什么我要发布信息,
我想从planet_osm_polygon表中获取包含纬度和经度的城市名称,其中存储的多边形包括城市的多边形,这是我的代码:
SELECT name
FROM planet_osm_polygon
where place = 'city'
and ST_CONTAINS(ST_Transform(way,4326), ST_SetSRID(ST_Point(41.693459100461496,44.8014495),4326));
(逻辑是..如果多边形包含给定点,则返回其名称(如果城市))
问题是什么?我将两个几何都转换为4326,但仍然无法正常工作。PS“ way”是一列几何(多边形)。
查询总是返回空结果
编辑
planet_osm_polygon并不缺少City,它的几何列确实是多边形的类型,这是一些查询结果:
我相信您会在坐标对中切换x和y。WGS84
期望longitude, latitude
,而不是相反:
SELECT name
FROM planet_osm_polygon
WHERE place = 'city'
AND ST_Contains(ST_Transform(way,4326), ST_SetSRID(ST_MakePoint(44.80,41.69),4326));
附带说明:考虑降低坐标的精度。有这么多的十进制数字,您正在进入显微镜领域->41.693459100461496
样本数据
CREATE TEMPORARY TABLE planet_osm_polygon (name TEXT, way GEOMETRY,place TEXT);
INSERT INTO planet_osm_polygon
VALUES ('Georgia',ST_SetSRID('POLYGON((43.87 42.22,45.43 42.22,45.43 41.50,43.87 41.50,43.87 42.22))'::GEOMETRY,4289),'city');
坐标对应于SRS中的以下BBOX 4289
:
查询-指向BBOX内,将BBOX和给定点设置为 WGS84
SELECT name
FROM planet_osm_polygon
WHERE place = 'city'
AND ST_Contains(ST_Transform(way,4326), ST_SetSRID(ST_MakePoint(44.80,41.69),4326));
name
---------
Georgia
(1 Zeile)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句