之前,我使用函数来查找地图上的点是否在半径内。但是条件已经改变,我需要检查多边形中的入口点。我至少有四个要点-东北/东南/西南/西北,经度和纬度。但是看起来ST_GeogFromText('POLYGON(())')专为完全不同的事物设计,或者我不知道该如何使用它们。
我的距离示例:
create table "Locations"
(
id serial not null constraint "Locations_pkey" primary key,
name varchar(120),
geopin geometry(Point, 4326)
);
select *
from "Locations"
where
ST_DWithin(
"Locations"."geopin",
ST_MakePoint(90.00, 90.00)::geography,
10000
);
我不知道怎么办。
select *
from "Locations"
where
SOME_FUNCTION_TO_SEARCH_IN_POLYGON(
"Locations"."geopin",
SOME_GEOGRAPHY_FROM_POLYGON(0 0,0 180,180 0,180 180)
);
如果能够提供仅NE和SW的纬度和经度,那就更好了。
答案 0 :(得分:0)
您将进行空间相交。由于不再计算距离,因此可以直接使用4326中的几何进行比较,而无需转换为地理。
要构建具有角坐标的多边形,可以构建2D框
WITH src AS (select St_GeomFromText('Point(25 25)',4326) as geopin),
searchArea AS (select ST_SETSRID(
ST_MakeBox2D(
ST_MakePoint(-170, -75),
ST_MakePoint(170, 45)),
4326) as geom)
SELECT ST_Intersects(geopin,geom)
FROM src, searchArea;