PostGIS St_Contains不返回数据
我编写了下面的示例来确定一个点是否在多边形内PostGIS St_Contains不返回数据,postgis,Postgis,我编写了下面的示例来确定一个点是否在多边形内 CREATE TABLE points_of_interest( id serial NOT NULL, name varchar(50), lat numeric, lon numeric, geom geometry(POINT,4326)); CREATE TABLE papakura_places( id serial NOT NULL, name varchar(50), lat num
CREATE TABLE points_of_interest(
id serial NOT NULL,
name varchar(50),
lat numeric,
lon numeric,
geom geometry(POINT,4326));
CREATE TABLE papakura_places(
id serial NOT NULL,
name varchar(50),
lat numeric,
lon numeric,geom geometry(POINT,4326));
insert into papakura_places(name, lat, lon) values ('a', -37.066337, 174.940995);
insert into papakura_places(name, lat, lon) values ('b',-37.067518, 174.940872);
insert into papakura_places(name, lat, lon) values ('d',-37.067334, 174.938968);
insert into papakura_places(name, lat, lon) values ('d', -37.066154, 174.939110);
insert into points_of_interest(name, lat, lon) values ('pointOfInterest', -37.066486, 174.939657);
insert into points_of_interest(name, lat, lon) values ('noPointOfInterest', -37.061010, 174.943166);
UPDATE papakura_places SET geom = ST_SetSRID(ST_MakePoint(lon,lat),4326);
UPDATE points_of_interest SET geom = ST_SetSRID(ST_MakePoint(lon,lat),4326);
select * from papakura_places;
select * from points_of_interest where name like 'pointOfInterest';
select distinct * from papakura_places,points_of_interest ;
SELECT points_of_interest.*
FROM points_of_interest, papakura_places
WHERE ST_intersects(points_of_interest.geom, papakura_places.geom);
我已经在谷歌地图上验证了这两点。一个在里面,一个在外面。所以结果应该会返回一些东西。但不知道为什么它不会回来 papakura_位置
表具有点几何<当兴趣点位于表中的四个点内时,代码>ST_Contains
将不会返回true
相反,用papakura_位置
点制作多边形,并将其与ST_包含的点一起使用:
WITH papakura_places_polygon AS (
SELECT
ST_MakePolygon(ST_MakeLine(geom)) AS geom
FROM
((select * from papakura_places) union all (select * from papakura_places limit 1)) a
)
SELECT
*
FROM
points_of_interest poi
JOIN
papakura_places_polygon ppp ON ST_Contains(ppp.geom, poi.geom);