Linee aggregate basate sulla distanza tra i segmenti


12

Ho una mappa di base VectorTile che sto ottimizzando (lavorando sulla riduzione delle dimensioni delle singole tessere), la maggior parte delle dimensioni delle tessere sono i dati stradali (geometria e attributi). Sto lavorando per semplificare le singole geometrie stradali basate sul livello di zoom e aggregare anche le strade in base ai livelli di zoom.

Le strade sono memorizzate in una tabella Postgis (tabella individuale per ciascun livello di zoom) e desidero aggregare le strade in base al livello di zoom in cui verranno visualizzate. Ad esempio, nella tabella Livello di zoom 5 voglio aggregare le strade che si trovano a una certa distanza l'una dall'altra e creare una singola linea per i segmenti di strada: inserisci qui la descrizione dell'immagine

Dal momento che non è possibile distinguere le singole strade a quel livello di zoom: inserisci qui la descrizione dell'immagine

Come posso aggregare le geometrie delle strade in base alla distanza tra i segmenti di strada?

PS: sto lavorando su PostGIS e QGIS su Linux, ma sono aperto a soluzioni che utilizzano qualsiasi piattaforma o tecnologia Open Source


Le strade hanno un ID comune, ad es. Due corsie al livello di zoom 5 sulla A50 sono rappresentate da due linee, ma al livello 4 di una linea e hanno tutte "A50" come attributo?
AnserGIS,

Sono rappresentati da due linee a tutti i livelli di zoom. Le autostrade e le autostrade avranno l'attributo comune come "M-2" per le autostrade.
Hasan Mustafa,

Risposte:


5

Potresti provare a cercare questa opzione del sistema operativo, Skeletron :

generalizza le raccolte di linee su uno specifico livello di zoom del mercatore sferico e sulla precisione dei pixel, usando un buffer poligonale e un diagramma di voronoi

Si basa su un articolo del 1996 di Alnoor Ladak e Roberto B. Martinez, "Derivazione automatizzata di centinati stradali ad alta precisione Tecnica dei poligoni di Thiessen"

Sono necessarie alcune dipendenze:

Dipendenze richieste:
- qhull binary ( http://www.qhull.org )
- shapely 1.2+ ( http://pypi.python.org/pypi/Shapely )
- pyproj ( http://code.google.com/p / pyproj )
- networkx 1.5+ ( http://networkx.lanl.gov )
- StreetNames 0.1+ ( https://github.com/nvkelso/map-label-style-manual/tree/master/tools/street_names )

Nota: questo è un modello / strumento precedente che può essere applicato, proprio come riferimento da esplorare.


1
Penso che skeletron potrebbe essere la strada da percorrere, ma la tua risposta è solo una copia del file readme e il link al sito web esri è morto. Ecco un link per mostrare cosa fa per le mappe: kartographie.geo.tu-dresden.de/downloads/ica-gen/workshop2004/… . sembra davvero fantastico ma quando provo ad usarlo non sapevo come usarlo. Non ho trovato una documentazione ad eccezione di alcune bustarelle con il comando use o setup.py --help ... Se qualcuno spiega come usare quella lib, gli do la generosità.
Hugo Roussaffa - GeoDatup,

Inoltre utilizza strade OSM come input per quanto posso vedere, voglio una soluzione che possa funzionare su qualsiasi tipo di linea. Tuttavia, adoro la scienza che sta dietro, mi piacerebbe applicarlo anche ad altri scenari.
Hasan Mustafa,

Ho aggiornato il mio post per riflettere i tuoi commenti, apprezzo il feedback.
whyzar,

4

ArcGIS è il più semplice se è affatto un'opzione. So che l'OP specifica il sistema operativo ma lo menziono poiché le opzioni del sistema operativo non sembrano molto utili rispetto a: http://resources.arcgis.com/en/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /

Le risposte a questa domanda offrono alcune opzioni Open Source: Come posso unire / comprimere le linee stradali vicine e parallele (ad es. Una doppia carreggiata) in un'unica linea?

Se codifichi puoi calcolare la posizione media delle coordinate su base vertice, in caso contrario:

  1. buffer le strade con un'opzione "unisci tutto" sull'output.
  2. Ottieni la linea centrale del poligono
  3. Dividi le linee agli incroci con JUMP Split Lines all'intersezione di altre linee
  4. Spaziale Unisci nuovamente gli attributi

Non sembra esserci nemmeno un buon sistema operativo equivalente allo strumento ArcGIS 'Polygon to Center line'. Potrei suggerire:

un. Crea un diagramma voronoi e prendi lo scheletro.
b. Crea un raster di distanza euclidea ed estrai il valore centrale e converti in una linea

... probabilmente anche altri.

Infine, a seconda della scala e dell'applicazione .. potrebbe valere la pena anche solo cancellare una delle due righe: l'imprecisione avrà importanza?


L'opzione ArcGIS sembra buona, ci proverò, ma preferirei una soluzione OS. Calcolare la posizione media delle coordinate su base vertice è la mia strategia di fallback. Proverò tutti i metodi che hai elencato e vedrò se funzionano per me, grazie!
Hasan Mustafa,

Lo strumento ArcGIS, 'Merge Divided Roads (Cartography)', è esattamente quello che sto cercando, ma tutta l'elaborazione che sto facendo è su Linux, usando Postgres e QGIS, per usare lo strumento che mi servirà per passare a Windows .
Hasan Mustafa,
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.