Ich bin ziemlich neu in QGIS und versuche herauszufinden, wie ich das folgende Problem analysieren kann.
Ich habe drei Schichten:
- Siedlungen Punktschicht mit 253 Einträgen
- Punktschicht der Abfallbehandlungsanlagen mit 24 Einträgen
- Straßen Polylinie Schicht
Mein Problem besteht darin, den Abstand zwischen jeder Siedlung von Schicht (1) zu jeder Behandlungseinrichtung in Schicht (2) zu ermitteln. Sie muss jedoch Straßen (Schicht 3) ausgesetzt werden, anstatt eine von mir gesuchte Luftentfernungsmatrix zu erhalten die Matrix, die die tatsächliche Fahrstrecke beschreibt.
Ich bitte Sie um Ihre Hilfe mit Vorschlägen zur Durchführung dieser Analyse mit QGIS 1.7 (beachten Sie, dass ich nicht weiß, wie PostGIS-Ebenen verwendet werden, falls relevant).
- Welches Plugin kann oder soll ich verwenden?
- Sollten die Polylinien mit den Punkten in beiden Schichten verbunden werden?
Antworten:
Eine kurze Beschreibung des Arbeitsprozesses (GRASS-GIS) als @gmacfalane gefragt.
Ich habe die Analyse wie in GRASS-GIS 7.0 svn beschrieben durchgeführt. Verwenden von Linux-Mint 14 als Betriebssystem. Das liegt daran, dass ich Schwierigkeiten hatte, die angeforderten Funktionen unter Windows auszuführen.
Ich habe .shp-Dateien, die in Q-GIS erstellt wurden, in das GRASS importiert. Es war für mich einfacher, Daten zu Q-GIS zu erstellen, aber Gras verfügt zu diesem Zweck über alle erforderlichen Funktionen.
Ich habe v.build und v.clean verwendet , um eine Topologie für mein Netzwerk zu erstellen (Road-Shp-Datei).
Ich habe alle Knoten (Siedlungen und Abfallbehandlungsstellen) in einer SHP-Datei zusammengefasst. Es wurde eine Spalte hinzugefügt, die jeden Knotentyp von den anderen unterscheidet - und Daten mit dem Taschenrechner eingespeist. zB new_col = 10000 + ID für alle Siedlungen, 20000 + ID für alle Recyclingstandorte usw. Dann habe ich diese Spalte der neuen ID (Kategoriespalte) zugewiesen - v.reclass kann hier verwendet werden.
Verwenden Sie v.net (operation = connect), um alle Knoten mit Ihrem Netzwerk zu verbinden. Ich habe die Schwelle von ca. 4.500 Meter.
Verwenden Sie v.net.allpairs , um den Abstand zwischen jeweils zwei Punktpaaren in Ihrem Netzwerk zu berechnen.
Ich habe die Daten mit v.db.select in eine CSV-Datei exportiert und in Excel geladen. Datenformulare in einer Zelle für jede Zeile, getrennt durch |. Wenn ich mich nicht irre, habe ich alle Quellpunkte (Spalte from_cat) als Siedlungen gefiltert und somit einen from_cat zwischen 10000 und 19999.
Dann habe ich eine Tabelle erhalten, die Folgendes enthält: from_cat, to_cat, distance / cost
Ich habe den Datensatz nach Quelle (to_cat) getrennt und für jeden Behandlungstyp eine Matrix erstellt. Dann habe ich eine weitere Analyse erstellt, um sie in eine Kostenmatrix umzuwandeln und den günstigsten Weg von jeder Siedlung zu jeder Art von Behandlungsstelle zu finden.
Erklärungen zu den Funktionen (kursiv) finden Sie im Gras-Handbuch . Es wird auch empfohlen, in der Gras-Mailingliste zu suchen und sich anzumelden. Es war sehr hilfreich.
Hoffe ich konnte allgemeine Richtung geben.
quelle
Es ist eine Weile her und obwohl es irgendwo in der Geschichte von gis Q & A Antworten dazu gibt, habe ich beschlossen, meine Frage zu nutzen, um einige meiner Erkenntnisse zur QGIS-Netzwerkanalyse zu teilen.
Wie @simplexio freundlicherweise vorgeschlagen hat, ist PostGIS mit PgRouting eine Option, wenn auch zu kompliziert für mich . Ich fand heraus, dass mit QGIS 1.8 das GRASS 6.4.2-Plugin völlig ausreicht, um bei der Netzwerkanalyse zu helfen. Es ist einfach zu bedienen (da das Plugin die QGIS-GUI und einige Befehle verwendet), das Handbuch ist einfach zu navigieren und das Importieren von QGIS-Dateien oder anderen ist recht einfach.
Ich hoffe, meine Arbeit bald zu beenden (einige technische Probleme im Zusammenhang mit dem PC zu überwinden) und meinen Arbeitsprozess hochzuladen, da es für mich als Anfänger am schwierigsten war, ein ausreichendes Dokument oder Handbuch zu finden, das mich durch den Prozess führt.
quelle