postgresql - Postgis - 一个圆圈包含另一个

标签 postgresql postgis coordinate-systems

我正在使用带有 GPS 数据的 postgis,并试图弄清楚一个具有 GPS 坐标和半径(以米为单位)的圆是否包含另一个圆。

如果我不使用 GPS 坐标,我可以做到这一点,而只是图表上的点,但如果我用纬度和经度点代替,这将不起作用:

-- 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;

想法?

最佳答案

我的方法是:

  1. 通过 SRID(ST_SetSRID(your_geom, 4326) 执行此操作)将 CRS(坐标引用系统)分配给 gps 数据(我假设它们在 WGS84 中,因此 srid 4326)
  2. 然后(仅当您分配了 srid 4326 时才有可能)将它们转换为地理(::geography 执行此操作)以启用以米为单位的缓冲区半径设置,
  3. 并将它们转换回几何(::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

关于postgresql - Postgis - 一个圆圈包含另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040377/

相关文章:

c - 用C画一个游戏板

sql - postgresql 不返回特定数字标准的值

postgresql - 如何通过 Kotlin Exposed ORM 使用 Postgresql 枚举类型?

sql - 如何在两个自连接列中选择不同的记录?

sql - 触发器postgresql中的距离计算

postgresql - Yii 与 PostGis,选择经度和纬度

sql - 索引 ORDER BY 与 LIMIT 1

node.js - 'GeometryDataType' 类型中不存在坐标

iphone - 将 GPS 坐标转换为坐标平面

python - GeoPandas .to_crs() 方法未转换