如何解决搜索在哪个多边形行上存在的点?
我在几何列上插入了带有geojson值的多个位置行,并尝试基于点值进行搜索,我是否需要找到该点是否存在于多边形上?我见过这个https://stackoverflow.com/a/38941705/1138192,但是我有geojson值可以按点插入和搜索。
到目前为止,我已经尝试过:
CREATE TABLE areas (
id SERIAL PRIMARY KEY,name VARCHAR(64),the_geom GEOMETRY
);
CREATE INDEX areas_the_geom_idx ON areas USING GIST (the_geom);
INSERT INTO areas (name,the_geom)
VALUES ('Corrected_Shape',ST_TRANSFORM(ST_GeomFromGeoJSON('{
"type":"polygon","coordinates":[[
[-91.23046875,45.460130637921],[-79.8046875,49.837982453085],[-69.08203125,43.452918893555],[-88.2421875,32.694865977875],[-91.23046875,45.460130637921]
]],"crs":{"type":"name","properties":{"name":"epsg:4326"}}
}'),3857));
SELECT name FROM areas WHERE ST_Contains(the_geom,ST_GeomFromText('POINT(43.452918 -69.082031)'));
解决方法
首先,似乎您在创建点时交换了经度和纬度(首先应该是经度)
-> ST_GeomFromText('POINT(-69.082031 43.452918)')
然后,将多边形几何投影到3857,而不是点。两种几何都必须使用相同的CRS。
-> ST_TRANSFORM(ST_GeomFromText('POINT(-69.082031 43.452918)'),3857)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。