多边形的联合(地理类型的ST_UNION)

时间:2010-08-02 14:08:58

标签: postgresql geometry geospatial postgis geography

我正在寻找一个能够返回两个或多个多边形(地理类型)的交集的函数。

我知道ST_UNION,ST_COLLECT但它只适用于几何类型。

任何提示都会非常感激

3 个答案:

答案 0 :(得分:2)

您可以转换为几何体并在那里执行操作。在笛卡尔平面上进行评估时,您必须要小心,您的形状才有意义。他们包裹日期线还是两极?

select geography(st_union(a::geometry, b::geometry))

如果形状有很长的边缘,那么你想要在球体上进行的大圆插值和你在平面上得到的线性插值之间的边缘插值差异就会发挥作用,你必须得到更好的保护边缘通过在适当的地图投影(使用bestsrid函数自动选择)中进行最佳的形状。

select geography(
         st_transform(
           st_union(
             st_transform(a::geometry, _st_bestsrid(a,b)),
             st_transform(b::geometry, _st_bestsrid(a,b))
           ),
           4326
       ))

享受!

答案 1 :(得分:1)

Geography类型仅支持PostGIS函数的一小部分。在这里,您可以检查它们,看看它们是否符合您的需求:

http://postgis.refractions.net/docs/ch08.html#PostGIS_GeographyFunctions

答案 2 :(得分:0)

您是否已将ST_Transform视为嵌套在ST_Union或ST_Collect中的几何类型? PostGIS文档(来自amercader的链接)表示他们在内部使用该功能进行一些地理操作。