Respuestas:
Unir automáticamente la tabla le permitiría encontrar filas duplicadas. Algo así debería funcionar:
DELETE t1
FROM mytable t1, mytable t2
WHERE t1.the_geom = t2.the_geom
si puntos:
DELETE t1
FROM mytable t1, mytable t2
WHERE t1.x = t2.x
AND t1.y > t2.y
(no probado .....)
Creo que lo más fácil es nunca dejar entrar el duplicado. Agregar una restricción única en el campo de geometría. No sé cómo funcionará eso en spaceiallite, pero en postgis la restricción compararía los cuadros delimitadores que sumergirán el efecto deseado en el caso de los puntos.
si no importa cuál de los duplicados eliminar, puede crear una consulta que elimine todas las filas con una identificación que no se encuentra en una subconsulta que selecciona las geometrías distintas. lo mismo aquí, seguro con puntos pero no con otros tipos, ya que solo se comparará el bbox, no la geometría real (si funciona de la misma manera que postgis).
/ Nicklas
DELETE FROM foo
WHERE pkuid NOT IN (SELECT min(pkuid) --or max(pkuid)
FROM foo
GROUP BY geometry)
(tomado de la respuesta de Denis Valeev aquí: /programming/3777633/delete-duplicate-rows-dont-delete-all-duplicate )
En mi caso, la forma más eficiente es usar el índice espacial de la capa. Con esta consulta, mantengo solo 1 geometría para cada entidad superpuesta. He realizado la prueba con un TIN convertido en Cadena de líneas.
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)
Para comprender correctamente los índices espaciales, aquí hay dos consultas para convertir el índice espacial en polígonos.
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;
En caso de éxito, recupere la columna de geometría para poder visualizar en su visor favorito:
select RecoverGeometryColumn( 'tin_line_sp_representation','geometry', 25832 , 'POLYGON', 2 )