¿Eliminando espacios pequeños (astillas) entre polígonos?

47

Tengo un conjunto de polígonos que representan distritos administrativos. Los distritos se digitalizaron a mano, y hay pequeños espacios (astillas) entre polígonos donde los polígonos deben tocarse. ¿Cómo puedo hacer que los polígonos se unan, eliminando los espacios?

Se prefiere QGIS, pero ArcGIS y la programación general también son opciones.

    
pregunta zoo 14.06.2011 - 16:07

10 respuestas

26

Utilice Eliminar (se necesita la licencia ArcInfo)

Elimina polígonos al fusionarlos con polígonos vecinos que tienen el área más grande o el borde compartido más largo. Eliminar se usa a menudo para eliminar polígonos de astillas pequeñas que son el resultado de operaciones de superposición, como Intersect o Union.

enlace

Nota para los usuarios de ArcGIS 10, hay una NUEVA característica en las Opciones para esta herramienta.

Ahora es posible conservar el POLYGON o POLYLINE original con la opción > ex_features (Opcional) Una polilínea o poligonal de entrada de clase o capa que define los límites de los polígonos, o partes de los mismos, que no deben eliminarse.

    
respondido por el Mapperz 14.06.2011 - 16:40
17

Para hacer esto manualmente en QGIS, vaya a Settings|Project Properties... En la pestaña General en la parte inferior está Snapping options... Marque la capa que desea ajustar, configure el modo en to vertex y establezca la tolerancia en algún valor menor que la distancia más corta entre dos puntos que tienes. Si no estás seguro, configura las unidades en pixels y la tolerancia en algo como 5, de modo que si hay algunos detalles complicados, puedas acercarte y asegurarte de que no encajes en el vértice incorrecto.

Luego edite su capa vectorial, seleccione la herramienta de nodo y mueva los puntos errantes a sus contrapartes.

Hacerlo automáticamente es un poco más complicado. AFAIK QGIS no tiene un complemento para automatizarlo y, aunque PostGIS se basa en GEOS que tiene funciones de ajuste, no están expuestos a PostGIS. Podría ser posible escribir una consulta para verificar los puntos de un polígono en busca de vecinos dentro de la distancia de ajuste, pero eso está actualmente más allá de mi ingenio para expandir.

GRASS tiene v.clean.snap al que puede acceder a través de QGIS, pero hay un paso adicional para crear un conjunto de datos de GRASS.

    
respondido por el MerseyViking 14.06.2011 - 16:43
15

Si estás familiarizado con QGIS: En el troncal 1.9 de QGIS (se puede instalar como qgis.dev a través del instalador OSGEO, consulte la página de inicio de qgis) es una nueva función en el menú vectorial llamada "Eliminar polígonos de astilla", que hace exactamente lo que quiere. Puede seleccionar los polígonos problemáticos y fusionarlos en polígonos adyacentes en función de un límite común o un área de área. Pruébalo!

    
respondido por el Curlew 14.11.2012 - 14:20
14

Si usted es un usuario de QGIS, obtiene todo el poder de GRASS, ya que es un GIS completamente topológico. Dentro de QGIS, active el complemento GRASS, cree una ubicación / conjunto de mapas donde importar sus datos.

Abra el conjunto de mapas e importe su capa sucia con v.in.ogr: juegue con los dos parámetros avanzados "umbral de ajuste para límites" y "tamaño mínimo del área a importar".

También puede usar las opciones que proporciona el módulo v.clean.

    
respondido por el Giovanni Manghi 14.06.2011 - 19:34
7

ArcGIS tiene reglas de topología que te ayudarán a identificar y corrija las lagunas en sus datos, como a lo que se refiere. Para crear Reglas de topología, necesitará una licencia de ArcEditor o ArcInfo y almacenará su Clase de entidad en un Dataset de entidades en una geodatabase personal o de archivos.

Lo más probable es que desee implementar el " No debe haber brechas "regla. Una vez que haya creado la base de reglas con todas las reglas que considere necesarias, desearía validar la topología que identificará todos los errores en sus datos.

Luego, utilice Error Inspector y el < a href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/About_fixing_topology_errors/001t000000ss000000/"> Corregir la herramienta de errores de topología , puede seleccionar individualmente o en grupo errores que desea corregir y cómo desea corregirlos (es decir, crear nuevos polígonos para llenar los vacíos o fusionarlos con polígonos más grandes cercanos).

    
respondido por el RyanDalton 14.06.2011 - 18:55
5

Afortunadamente, hay una función "Eliminar polígonos de astilla" en la Caja de herramientas QGIS 2.12 (Lyon). Estoy seguro de que también está en alguna versión anterior. Buena suerte!

    
respondido por el dnltsk 22.02.2016 - 09:05
2

Bueno, he estado usando una función PostGIS (la uso directamente en mi QGIS) que ejecuta un ajuste recursivo para resolver este problema. Los resultados son bastante buenos, solo exigen una buena cantidad de valores de tolerancia para obtener mejores resultados. Si está dispuesto a intentarlo, verifíquelo (en mi caso, las geometrías son todas múltiples, de ahí el st_multi en mi ejecución):

CREATE OR REPLACE FUNCTION dsgsnap(tabela text, snap float) RETURNS void AS 
        $BODY$
            DECLARE
            id int;
            BEGIN
                FOR id in execute('select id from '||tabela)
                LOOP
                    EXECUTE     
                'update '||tabela||' as classe set geom = st_multi(res.geom) 
                from 
                    (
                        select st_snap(a.geom, st_collect(b.geom), '||snap||') as geom, a.id as id 
                        from '||tabela||' a, '||tabela||' b 
                        where a.id != b.id and a.id = '||id||' 
                        group by a.id, a.geom
                    ) as res 
                where res.id = classe.id';
                END LOOP;
                RETURN;                        
            END
        $BODY$
        LANGUAGE plpgsql;
    
respondido por el lcoandrade 08.07.2016 - 17:16
1

Me enfrenté al mismo problema, que al explorar las herramientas me acomodé con bastante facilidad aunque no conozco la lógica. ! [En las herramientas, vaya al cuadro de herramientas Gestión de datos, vaya a Clase de entidad y ejecute el script Integrar haciendo doble clic] [1]

en la ventana Script, seleccione la clase de entidad que tiene el problema y en la tolerancia XY agregue el valor al medir la distancia con la ayuda de la herramienta de medición en varios puntos y obtenga un valor promedio de ese valor en el entorno de tolerancia y aplique el problema. resuelto No lo sé ahora, pero lo resolví con aproximadamente el 90% de precisión. ! [ingrese la descripción de la imagen aquí] [2]

Intenté todos los otros métodos descritos en las respuestas anteriores, pero fue difícil y engorroso obtener las correcciones automáticas de las brechas entre los polígonos adyacentes.

    
respondido por el S. M. Farooqi 21.11.2012 - 18:01
1

No es una solución perfecta, pero una de estas dos cosas me funciona en la mayoría de los casos:

  1. En QGIS, guarde la capa en formato GEOJSON. Pero antes de guardar, en el cuadro de diálogo "guardar capa como", establezca la precisión de las coordenadas en 3 (el valor predeterminado es 15). Esto tendrá el efecto de unir los vértices que están muy cerca uno del otro.

  2. Vaya a Mapshaper , cargue el archivo y presione "simplificar". En la esquina superior izquierda le dirá cuántas intersecciones de línea encuentra y le dará la opción de corregirlas. Encuentro que esta solución funciona aproximadamente la mitad del tiempo.

respondido por el mgalka 02.05.2016 - 08:04
0

No lo he usado, pero Geowizards ET , que trae muchos procesadores de ArcEditor y ArcInfo solo Las herramientas para la licencia de nivel ArcView (también conocida como ArcGIS Standard) tienen un Asistente de eliminación que " Elimina los polígonos no deseados (astillas) fusionándolos con los polígonos vecinos o eliminándolos ". El kit de herramientas del asistente le costará $ 250 usd ( lista de precios ).

    
respondido por el matt wilkie 09.11.2012 - 18:18

Lea otras preguntas en las etiquetas