Generalizzare il file poligonale mantenendo la topologia in QGIS?


35

Ho un poligono Shapefile, che devo generalizzare. Come posso generalizzare i poligoni e garantire che non ci siano errori topologici come "scaglie".

Ho già provato:

  1. Vettore -> Strumenti geometria -> poligoni alle linee
  2. Vector -> Geometry Tools -> semplifica le geometrie ... qui posso già vedere sullo schermo che sto producendo sovrapposizioni e lacune, tuttavia ora provo
  3. Vettore -> Strumenti geometria -> linee alle poligoni

e qui il programma mostra un errore e si blocca

inserisci qui la descrizione dell'immagine


Ci sono novità su questo problema?
Oystein,

purtroppo: no
Kurt

Risposte:


16

GRASS è consapevole della topologia. È possibile utilizzare v.generalize dalla casella degli strumenti Elaborazione per semplificare i poligoni e se i dati di input sono topologicamente corretti, lo sarà anche l'output.

inserisci qui la descrizione dell'immagine


usando Windows Installer ricevo un errore (dipendenza mancante), quando provo a eseguire v.generalize. Hai bisogno di una confessione speciale?
Kurt,

@Kurt: l'installer autonomo? Non sono sicuro di quale versione di GRASS sia inclusa. Nelle impostazioni di elaborazione è possibile specificare se GRASS 6.xo 7.x e dove è installato. Prova ad adattare queste configurazioni alla tua configurazione.
underdark

si, uso il programma di installazione stanalone. Seguendo il tuo consiglio, ho disattivato grass 7 tramite le opzioni di elaborazione e configurato correttamente il percorso per qrass 6. questo percorso non era corretto, rimanendo da un vecchio qgis. Ora posso eseguire v.generalize, ma alla fine ricevo un nuovo errore: impossibile aprire il livello di output e infine il messaggio dice che l'erba sembra essere installato e configurato correttamente. potresti per favore darmi qualche suggerimento o suggerimento?
Kurt,

Di solito questo errore significa che il geoprocessing è fallito ad un certo punto. Devi esaminare il registro che viene generato mentre gli strumenti vengono eseguiti per vedere dove si verifica l'errore.
underdark

7

Questo può essere visto come un preliminare alla risposta di @ Underdark per cui è possibile pulire la topologia del livello vettoriale prima di generalizzare. GRASS ha una funzione v.clean che contiene una serie di strumenti per riparare il layer come:

  • aggancia quale "aggancia" le linee al vertice più vicino
  • rmdangle che rimuove eventuali fastidiosi ciondoli
  • rmdupl che rimuove le geometrie duplicate

e vari altri mostrati nell'immagine qui sotto:

v.clean

È inoltre possibile impostare la soglia in base alla sensibilità che si desidera eseguire gli strumenti. Personalmente, tendo a utilizzare la funzione Verifica validità geometria in QGIS ( Vettore > Strumenti geometria > Verifica validità geometria ) per verificare eventuali errori e, se presenti, utilizzare lo strumento appropriato in v.clean . Una volta rimossi gli errori, dovresti essere in una posizione migliore per generalizzare.

Spero che sia di aiuto!


3
E se è sufficiente una semplice riduzione del vertice, v.generalize non è necessario, poiché lo strumento prugna può farlo.
Gabor Farkas,

grazie per il tuo preliminare alla risposta di @ Underdark, che contiene informazioni preziose. anche se non l'ho detto esplicitamente, ovviamente il file poligonale, che volevo generalizzare, è topologicamente pulito [perché; spazzatura - spazzatura fuori :-)]
Kurt

@Kurt, ha un senso :)
Joseph

2

Hai provato a usare MapShaper ? Ho trovato che questo è un buon modo di generalizzare i poligoni; c'è anche una versione offline se vuoi scaricare il codice.

Un'alternativa potrebbe essere quella di convertire questo in GeoJson e quindi TopoJson che supporta la "semplificazione della forma che preserva la topologia" https://github.com/mbostock/topojson


Ho provato Mapshaper, è davvero un ottimo strumento
Kurt

1
un altro commento: come dice il titolo: sto cercando una soluzione con qgis. Mapshaper non rispetta la topologia (prova per te facendo una generalizzazione molto forte!). Topojson: questo è un mucchio di codice sorgente javascript, che è utile solo per i programmatori
Kurt,

oops, mancava l'unico aspetto di QGIS. QGIS gestisce geojson però; Mi chiedo se avrebbe senso lavorare con la funzionalità di semplificazione di topojson in un plug-in QGIS per renderlo accessibile ai non programmatori
djq

Continuo la linea off-topic: OpenJUMP ha uno strumento "Semplifica la copertura poligonale" per questo scopo.
user30184

0

Ho appena fatto un test rapido e lo strumento "Semplifica geometrie nel menu Vettore sembra rispettare la topologia. Ho provato con e senza" Abilita modifica topologica "spuntato in Opzioni di aggancio. Hai provato?

EDIT: Questo è stato fatto direttamente sul file poligonale - perché prima dovresti convertirlo in linee?


Ciao Darren, grazie per il suggerimento lo proverò con abilitazione dell'editing topologico
Kurt

1
Ciao Darren, non rispetta la topologia. non vi è alcuna differenza con "abilita modifica topologica". Suppongo, questo perché il generalizzare genera un nuovo livello, mentre "abilita la modifica topologica" sembra funzionare solo con i livelli selezionati. Potresti per favore eseguire una gerneralizzazione molto molto forte e ricontrollare, se hai una topologia corretta ora? grazie
Kurt

1
Kurt; Interessante. Sembra che tu abbia ragione quando fai una forte generalizzazione! Scusate!
Darren Cope,

1
Questa casella di controllo è disattivata in QGIS 2.2 (forse prima) nel caso in cui qualcuno cercherà.
lynxlynxlynx

0

C'è la stessa discussione qui , la mia risposta finale è che SAGA fa il lavoro per te.


A seguito della risposta in quella discussione, sembra che SAGA non preservi la topologia. Almeno non più.
Oystein,
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.