我正在寻找一个函数,它将返回 2 个或更多多边形(地理类型)的交集。
我知道 ST_UNION、ST_COLLECT 但它仅适用于几何类型。
任何提示将不胜感激
我正在寻找一个函数,它将返回 2 个或更多多边形(地理类型)的交集。
我知道 ST_UNION、ST_COLLECT 但它仅适用于几何类型。
任何提示将不胜感激
您可以转换为几何图形并在那里执行操作。在笛卡尔平面上评估时,您只需要注意您的形状是否有意义。他们会包裹日期变更线或电线杆吗?
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
))
享受!
Geography 类型仅支持 PostGIS 函数的一小部分。在这里,您可以检查所有这些,看看它们中的任何一个是否适合您的需求:
http://postgis.refractions.net/docs/ch08.html#PostGIS_GeographyFunctions
您是否考虑过将 ST_Transform 转换为嵌套在 ST_Union 或 ST_Collect 中的几何类型?PostGIS 文档(来自 amercader 的链接)说他们在内部使用该功能进行某些地理操作。