我在PostgreSQL中构造了一个postgis表,它包含一组多边形,这些多边形是连接许多较小多边形的结果。连接的结果是具有外部边界的多边形,其中一些具有内部边界(内部多边形)。我喜欢去掉内心的界限。
新桌子的构造包括:

insert into dl_table
    select 1 as id_level, 18 as id_sublevel,
        ST_snaptogrid(ST_Union(geom),0.0001) as geom
    from small_polygons_table
    where id_sp in
          (select id_sp from cdl where id_level=1 and id_sublevel=18);

geom的结果是:
<Polygon>
  <outerBoundaryIs>
    <LinearRing>
      <coordinates>
         ...points...
      </coordinates>
    </LinearRing>
  </outerBoundaryIs>
  <innerBoundaryIs>
    <LinearRing>
       <coordinates>
         ...points...
       </coordinates>
    </LinearRing>
  </innerBoundaryIs>
  <innerBoundaryIs>
    <LinearRing>
      <coordinates>
         ...points...
      </coordinates>
    </LinearRing>
  </innerBoundaryIs>
</Polygon>

现在我想去掉那些内在的界限。

最佳答案

ST_Union()将消除内部边界,因此您确定所有坐标完全相同吗?
您的查询通常使用如下JOIN来编写:

insert into dl_table
  select id_level, id_sublevel, ST_snaptogrid(ST_Union(geom),0.0001) as geom
  from small_polygons_table
  join cdl using (id_sp)
  where id_level = 1 and id_sublevel = 18;

07-25 23:30