首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArcMap Union的PostGIS等效项

ArcMap Union的PostGIS等效项
EN

Stack Overflow用户
提问于 2018-11-13 22:54:08
回答 2查看 556关注 0票数 2

在PostGIS / PostgreSQL中,与ArcMap中的"Union"操作等效的是什么?

假设您有两个shapefile,每个shapefile有两个功能。(等同于PostGIS:包含两行的两个表,其中包含多边形几何图形)

那么结果将是具有7个特征的1个shapefile。(PostGIS等效项:包含7行几何图形的表)

我看过ST_Intersect、ST_Union和ST_Collect,但找不到正确的组合。非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-11-14 06:05:04

下面是一个基于gis.stackexchange回答的有效查询

从a)读到d):

代码语言:javascript
复制
-- d) Extract the path number and the geom from the geometry dump
SELECT
  (dump).path[1] id,
  (dump).geom
FROM
(
  -- c) Polygonize the unioned rings (returns a GEOMETRYCOLLECTION)
  --    Dump them to return individual geometries
  SELECT
    ST_Dump(ST_Polygonize(geom)) dump
  FROM
  (
    -- b) Union all rings in one big geometry
    SELECT
      ST_Union(geom) geom
    FROM
    (
      -- a) First get the exterior ring from all geoms
      SELECT
        ST_ExteriorRing(geom) geom
      FROM
        rectangles
    ) a
  ) b
) c

结果:

票数 1
EN

Stack Overflow用户

发布于 2018-11-15 19:45:38

非常感谢Michael Entin

代码语言:javascript
复制
-- input data
with polys1 AS (
  SELECT 1 df1, ST_GeogFromText('Polygon((0 0, 2 0, 2 2, 0 2, 0 0))') g
  UNION ALL
  SELECT 2, ST_GeogFromText('Polygon((2 2, 4 2, 4 4, 2 4, 2 2))')
),
polys2 AS (
  SELECT 1 df2, ST_GeogFromText('Polygon((1 1, 3 1, 3 3, 1 3, 1 1))') g
  UNION ALL
  SELECT 2, ST_GeogFromText('Polygon((3 3, 5 3, 5 5, 3 5, 3 3))')
),
-- left and right unions
union1 AS (
  SELECT ST_UNION_AGG(g) FROM polys1
),
union2 AS (
  SELECT ST_UNION_AGG(g) FROM polys2
),
-- various combinations of intersections
pairs AS (
  SELECT df1, df2, ST_INTERSECTION(a.g, b.g) g FROM polys1 a, polys2 b WHERE ST_INTERSECTS(a.g, b.g)
  UNION ALL
  SELECT df1, NULL, ST_DIFFERENCE(g, (SELECT * FROM union2)) g FROM polys1
  UNION ALL 
  SELECT NULL, df2, ST_DIFFERENCE(g, (SELECT * FROM union1)) g FROM polys2
)
SELECT * FROM pairs WHERE NOT ST_IsEmpty(g)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53283714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档