我使用gps数据的postgis,并试图找出一个具有GPS坐标和半径(以米为单位)的圆是否包含另一个。
如果我不使用GPS坐标,而只使用图形上的点,我就能做到这一点,但是如果我用lat和lon点来代替它,这是行不通的:
-- A circle within a circle
SELECT ST_Contains(bigc,smallc) As bigcontainssmall
FROM (SELECT ST_Buffer(ST_MakePoint(21, 38)::geography, 40) As smallc,
ST_Buffer(ST_MakePoint(21, 39)::geography, 400) AS bigc) foo;
有什么想法?
发布于 2015-06-25 02:32:45
我的做法是:
ST_SetSRID(your_geom, 4326)
这样做)::geography
这样做)以允许设置以米为单位的缓冲半径,::geometry
这样做)以使st_contains
函数工作查询:
SELECT ST_Contains(bigc::geometry,smallc::geometry) as bigcontainssmall
from (select
st_buffer(ST_SetSRID(ST_MakePoint(-71.10434, 42.31506),4326)::geography,40) as smallc,
st_buffer(ST_SetSRID(ST_MakePoint(-71.10434, 42.31507),4326)::geography,400) as bigc) foo
https://stackoverflow.com/questions/31040377
复制