Come convertire le funzionalità lineari semplici in rete topologica?


12

usando Gdal / OGR c'è un modo per convertire un livello di linea shp, kml o PostGIS in una rete di nodi e segmenti in modo che possa essere utilizzato in pacchetti come networkx?


2
Probabilmente vale la pena notare che mentre OGR e NetworkX affermano entrambi di supportare GML, il primo si riferisce Geography Markup Languagementre il secondo lo è Graph Modelling Language.
fmark

Risposte:



2

A giudicare dall'elenco networkx di formati grafici e formati imponenti supportati da GDAL , dubito che una tale conversione sia possibile.


è un affare schifoso. Quindi, come posso fare l'analisi di rete allora?
Dassouki,

@dassouki - Avvia un progetto open source! È sulla mia lista, ma al momento è molto in basso. Mi piacerebbe l'opportunità di collaborare su questo se altri sono interessati però.
fmark

@fmark ha già transpotools.com
dassouki il

@dassouki - Sembra eccitante! A che punto è il progetto? La homepage dice TranspoTools Will be here shortly. C'è qualche codice nel repository di google-code? Tutto quello che potevo vedere era vuoto.
fmark

@dassouki - Solo per confermare, non so molto sul campo dell'analisi dei trasporti (il mio interesse GIS non si trova molto oltre il calcolo della distanza di rete in questa fase), ma sarei felice di collaborare a uno ogr2networkxstrumento di tipo.
fmark

2

Non hai menzionato specificamente quale tipo di analisi di rete vuoi fare, ma se sei interessato al routing, ci sono un paio di opzioni:

PgRouting http://pgrouting.postlbs.org/ lavora con i dati di PostGIS per eseguire l'analisi del routing. Supporta gli algoritmi Short Path Path Dijkstra, Shortest Path A *, Shortest Path Shooting Star e Traveling Salesperson (TSP). Fa anche calcoli della distanza di guida. Un elenco di app di esempio che utilizzano PgRouting è disponibile su http://pgrouting.postlbs.org/wiki/pgRoutingDemo PgRouting che guida l' http://www.ridethecity.com/app Ride the City .

Il progetto OpenRouter http://wiki.osgeo.org/wiki/OpenRouter. Questo progetto sembra interessante, ma non particolarmente maturo a questo punto.

(Mi scuso per gli URL citati, ma non ho abbastanza credito per pubblicare> 1 URl ...)


+1 per te. Sto cercando di allontanarmi dai dati openstreet e postgis a causa delle limitazioni dei dati e del fatto che stiamo abbandonando i postgis per ora. Di solito forniamo i nostri dati che sono di gran lunga migliori di Openstreet, ma allo stesso tempo non vogliamo essere limitati alla protuberanza. L'altro problema è che si supponga di voler implementare una raccolta dei rifiuti pitonica o compatibile con arcgis o problemi di postino cinese o di vendita dei viaggiatori.
Dassouki,

Hai visto SpatiaLite? Questo ti darebbe un database spaziale OpenSource che, se basato su file e indipendente dalla piattaforma. Non l'ho usato, ma sembra che ci sia una capacità di routing con SpatiaLite < gaia-gis.it/spatialite/spatialite-network-2.3.1.html >
DavidF

Inoltre, grazie per aver portato NetworkX alla mia attenzione. Sembra che siano davvero fantastici moduli Python.
DavidF

2

Penso che la risposta dipenda. La maggior parte dei formati GIS non include esplicitamente informazioni di adiacenza (ad es. Non ci sono indicatori in un file .shp pieno di semplici funzioni di linea per indicare che due funzioni condividono un endpoint comune), che è un punto di rottura per leggerli direttamente in una rete.

Da una rapida occhiata al codice, sembra che il pacchetto utilitynetwork collegato da scw riscoprirà tali informazioni solo se gli endpoint sono identici bit per bit. Questo potrebbe essere abbastanza buono per la maggior parte delle esigenze, incluso il tuo! (Potrei sbagliarmi, dato che era davvero solo una sbirciatina.)

Per qualcosa di più robusto - ad esempio, potresti voler creare nuovi nodi nella rete in cui due bordi si incrociano, o ti piacerebbe gestire le perturbazioni che rendono gli endpoint sovrapposti molto leggermente diversi - dovrai cercare un approccio che ispeziona la geometria più in profondità.

Ho fatto qualcosa di simile con Boundary Generator per recuperare informazioni di adiacenza della rete dai poligoni: piattaforma sbagliata, linguaggio e primitiva geometrica per te, sfortunatamente. Tuttavia, può essere perspicace su come affrontare i problemi di robustezza.


+1 ... Non sono sicuro di cosa intendi con la piattaforma sbagliata? Comprendo la tua spiegazione e mi sembra davvero impossibile non riuscire a convertire i dati in nodi e pesi. gli unici 2 programmi che lo fanno dai file shp sono TransCAD ed EMME2 / 3
dassouki

Per "piattaforma sbagliata" intendevo solo che Boundary Generator era stato scritto per l'ambiente ArcGIS, almeno per ora. :) Avrebbe bisogno di qualche adattamento per lavorare con OGR. (Sarebbe anche necessario un po 'di nuovo codice significativo per scoprire endpoint coincidenti dalle linee, al contrario dei bordi coincidenti dei poligoni. Potrei aggiungere questo alla versione successiva se / quando ho il tempo. Sembra che potrebbe essere molto utile .)
Dan S.

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.