답변:
테이블에 자동 조인하면 중복 행을 찾을 수 있습니다. 그와 같은 것이 작동해야합니다.
DELETE t1
FROM mytable t1, mytable t2
WHERE t1.the_geom = t2.the_geom
포인트가 :
DELETE t1
FROM mytable t1, mytable t2
WHERE t1.x = t2.x
AND t1.y > t2.y
(검증되지 않은 .....)
가장 쉬운 방법은 복제물을 절대로 넣지 않는 것입니다. 지오메트리 필드에 고유 제한 조건을 추가하십시오. 공간 공간에서 어떻게 작동하는지 모르겠지만 포스트 지에서는 컨 스트 린트가 경계 상자를 비교하여 포인트의 경우 원하는 효과를 다이빙합니다.
중복 중 하나를 제거하는 것이 중요하지 않으면 하위 쿼리에서 찾을 수없는 id로 모든 행을 삭제하는 쿼리를 작성하여 고유 한 기하학을 선택할 수 있습니다. bbox 만 실제 지오메트리와 비교되지 않기 때문에 포인트와 안전하지만 다른 유형은 안전하지 않습니다 (postgis와 동일한 방식으로 작동하는 경우).
/ 니클라스
필자의 경우 가장 효율적인 방법은 레이어에서 공간 인덱스를 사용하는 것입니다. 이 쿼리를 사용하면 겹치는 각 피쳐마다 하나의 형상 만 유지합니다. TIN을 Linestring으로 변환하여 테스트를 수행했습니다.
delete from tin_line_sp where ogc_fid not in (
select min(s1.rowid) as id_to_keep from
idx_tin_line_sp_geometry as s1,
idx_tin_line_sp_geometry as s2
where
s1.xmin = s2.xmin and
s1.xmax = s2.xmax and
s1.ymin = s2.ymin and
s1.ymax = s2.ymax
group by s1.xmin,s1.xmax,s1.ymin,s1.ymax)
공간 인덱스를 올바르게 이해하기 위해 공간 인덱스를 다각형으로 변환하는 두 가지 쿼리가 있습니다.
create table tin_line_sp_representation as
select PolygonFromText('POLYGON(('||
xmin || ' ' || ymin || ',' ||
xmax || ' ' || ymin || ',' ||
xmax || ' ' || ymax || ',' ||
xmin || ' ' || ymax || ',' ||
xmin || ' ' || ymin || '))',25832) as geometry
from idx_tin_line_sp_geometry;
성공하면 지오메트리 열을 복구하여 즐겨 찾는 뷰어로 시각화 할 수 있습니다.
select RecoverGeometryColumn( 'tin_line_sp_representation','geometry', 25832 , 'POLYGON', 2 )