Eliminar polígonos duplicados con herramientas de código abierto

13

Tengo un archivo de formas que contiene entidades con geometrías duplicadas, pero diferentes atributos (por ejemplo, un polígono con atributo XX y un polígono idéntico con atributo XY). Quiero identificar los duplicados, luego elegir uno con los atributos correctos, eliminando el otro.

He probado herramientas de topología en OpenJump / Kosmo, pero sin éxito. Tienen una herramienta para 'eliminar duplicados' que hace lo que quiero, excepto que parece eliminar arbitrariamente una de las características en lugar de permitirme elegir cuál conservar.

Tengo acceso a QGIS, OpenJUMP, Kosmo, etc. y puedo instalar otras herramientas de código abierto / gratuitas si es necesario.

Pensamientos?

Darren Cope
fuente

Respuestas:

7

Además de PostGIS, también puede utilizar un SIG topológico de código abierto (GRASS):

  1. Descargar e instalar
  2. Inicie y seleccione el Administrador de ubicaciones, use la herramienta para generar una nueva base de datos de proyectos a partir de su archivo SHAPE (llamado "Ubicación de GRASS"), consulte aquí para obtener una guía paso a paso
  3. Importar el archivo SHAPE
  4. Use la herramienta "v.clean" que ofrece una serie de opciones
  5. Exporte el mapa nuevamente al formato de archivo SHAPE con "v.out.ogr"

Nota al margen: estamos planeando ofrecer un WPS para que pueda pulir sus datos a través de nuestro portal web.

markusN
fuente
No creo que v.clean permita a los usuarios identificar y corregir 'interactivamente' los errores de topología uno por uno. Por favor, corríjame si estoy equivocado.
Darren Cope
Extrañaba que quisieras hacerlo interactivamente. Entonces, el digitalizador v.digit es la herramienta a usar.
markusN
Markus, un giro rápido a través de v.digit no parece que haga lo que quiero. ¿Puede darme un ejemplo de cómo cumpliría mi tarea usando v.digit?
Darren Cope
1
En realidad, solo importando el archivo de forma a GRASS se crea una capa de polígonos superpuestos como la capa 2_polygon. ¡Creo que esto debería ser suficiente para continuar!
Darren Cope
3

Esto es lo que suelo hacer en esos casos. Según tengo entendido, tendrá que hacer una verificación manual para decidir cuál tiene el atributo correcto. Luego suelo hacerlo en dos pasos. Primero hago una tabla o una vista en PostGIS con los polígonos duplicados, luego abro esta tabla en un SIG de escritorio junto con la capa original donde quiero eliminar los duplicados. Eso me llevará a los duplicados a través de mi tabla duplicada y puedo eliminarlos en la tabla original o en el archivo de forma o lo que sea.

La consulta para encontrar los duplicados será algo como esto si tiene una identificación única llamada gid y una columna de geometría llamada the_geom:

create table duplicates as
select a.the_geom, a.gid, b.gid from mytable a, mytable b 
where ST_Equals(a.the_geom, b.the_geom) and a.gid!=b.gid;

Hay algunas variantes en ST_Equals, pero creo que ST_Equals es la que deseas. Eso le dará una tabla con las geometrías duplicadas y el gid (id) de la primera y la segunda ocasión del polígono. Sin embargo, obtendrás el mismo par de duplicados dos veces, pero eso no debería importar porque solo quieres que te muestren dónde están.

HTH Nicklas

Nicklas Avén
fuente
3

Si está utilizando PostGIS 1.5.x, consulte la función ST_HausdorffDistance ().
Las geometrías duplicadas producirán un valor de 0. Úselo como las autouniones mencionadas. Bastante ordenado para comparar formas poligonales.

eprand
fuente
0

Una forma más sencilla de hacerlo. Calcule el área en su SIG de escritorio y ordene por área ascendente o descendente. Ahora tendrá que verificar cada línea para ver los objetos duplicados en su tabla de atributos. Se basa en una suposición de que nunca tiene exactamente la misma área para objetos no duplicados, aunque a veces puede ser incorrecto.

ThomasG77
fuente