Unire i poligoni adiacenti nel file di forma che è stato diviso ai bordi delle piastrelle?


24

Attualmente sto usando i dati di costruzione dal Ordectance Survey Vectormap District e ho notato che molti poligoni di costruzione sono divisi in 2 a causa del modo in cui il sistema operativo ha diviso il file di forma.

Questo è ciò che vedo in QGIS: ho evidenziato alcuni degli edifici divisi al limite delle piastrelle:

inserisci qui la descrizione dell'immagine

Non riesco a unire manualmente gli edifici perché ce ne sono troppi che sono stati divisi ai confini (questo è solo un esempio ingrandito). Sto cercando un modo automatizzato per risolvere questo.

Sfortunatamente, ogni lato degli edifici divisi ha un ID diverso, quindi non posso dissolverli facilmente.

Come suggeriresti che posso unire automaticamente le tessere dell'edificio?

modificare

Ora sto usando PostGIS per unire i poligoni divisi ai confini delle piastrelle. Ecco l'istruzione SQL che fa questo per me: è molte, molte volte più veloce di farlo con QGIS:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();

6
Probabilmente dovresti pubblicare la tua soluzione come risposta e accettarla al posto della mia. Attenersi allo schema di domande e risposte rende molto più facile per gli altri con lo stesso problema trovare la soluzione.
Jake,

Risposte:


18

Se vuoi semplicemente dissolvere i bordi e sei contento di avere una grande funzione multipoligono di tutti gli edifici, puoi semplicemente usare lo strumento "Dissolve" di fTools ("Vector / Geoprocessing / Dissolve").

Se vuoi mantenere gli attributi (nel caso di OS Vector che sarebbe solo l'ID, che sembra essere piuttosto arbitrario), puoi dividere il livello vettoriale dissolto e quindi assegnare gli attributi del livello originale non risolto usando "Unisci attributi per posizione ":

Questo è un sottoinsieme di due shapefile di edifici OS che sono stati uniti in un singolo shapefile usando "Vector / Gestione dati / Unisci shapefile in uno". I colori sono assegnati in modo casuale per mostrare le singole caratteristiche:

Questo è il risultato dello strumento "Dissolve": tutte le funzioni sono state dissolte in una singola funzione con l'ID del primo oggetto, l'interruzione nei tre edifici centrali è sparita:

Dopo aver diviso la funzione usando "Vector / Geometry / Multipart in singleparts", gli edifici sono di nuovo singoli elementi, ma hanno tutti lo stesso ID:

Eseguendo "Strumenti di gestione dati / vettore / Unisci attributi per posizione" con il livello diviso come destinazione e il livello unito originale come livello vettoriale Unisci, agli edifici vengono riassegnati i loro singoli ID:


Penso che il problema potrebbe essere che questo è OSD VMD OpenData (correggimi se sbaglio). Nel qual caso le caratteristiche non hanno attributi che possono essere usati per dissolversi. Quindi potresti anche provare a dissolvere i normali fTools. Buona fortuna con questo, in alcuni vettori OpenData ho poligoni divisi per linee che coincidono con linee della griglia che non si dissolveranno.
Nhopton,

@nhopton: Ma la normale dissolvenza di fTools raggrupperà tutte le funzioni in un'unica funzione (se non ci sono ID che possono essere utilizzati per identificare quali funzioni si uniscono, come nel caso qui), che molto probabilmente non è quello che Rob vuole. Se si utilizza v.dissolvedopo aver assegnato a tutte le funzioni un attributo fittizio identico, solo quelli che condividono un confine verranno uniti.
Jake,

Una singola caratteristica probabilmente non sarebbe un problema per Rob, se tutto ciò che cercava erano le forme. Ma sì, prova entrambi i metodi di dissoluzione. Nick.
nhopton,

Sei sicuro che tutti i poligoni che avrebbero dovuto essere dissolti siano stati effettivamente dissolti? Qui la maggior parte si dissolve, ma non tutti.
nhopton,

Grazie per l'aiuto! Si scopre che @nhopton aveva ragione e che le divisioni di VectorMap District sono in realtà un po 'fuori e quindi non si stanno dissolvendo correttamente. Ora sto sperimentando l'uso di PostGIS per accelerare questo processo.
Robin Hawkes
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.