Python x GIS-Grundlagen (3)

Der erste ist hier Teil 2 ist hier Lehrmaterialien der Universität Helsinki Wir werden die Antworten und Ergänzungen für Woche 5 bis Woche 6 zusammenfassen.

Week5

5-1 Erstellen einer statischen Karte

In Woche 5 ist das ursprüngliche Notizbuch nicht vorhanden, und Sie müssen die README-Datei auf Github lesen, das entsprechende Material selbst auswählen und die Karte visualisieren.

5-2 Erstellen einer dynamischen Karte

Week6

6-1 Erraten Sie den Standort des Geschäfts

In der ersten Hälfte der Woche 6 werden wir OSM (Open Street Map) verwenden, um die Abfahrts- und Ankunftspunkte der im Voraus angegebenen Bewegungsdaten zu schätzen. Mit der Bibliothek "mplleaflet" können Sie mit "matplotlib" erstellte Figuren auf einer interaktiven Karte darstellen. (Informationen zu "mplleaflet" finden Sie unter Dieser Artikel .) Mplleaflet kann keine Bilder selbst speichern. Es ist notwendig, das Bild mit einem Screenshot oder ähnlichem zu speichern.

#Daten lesen
origin = pd.read_csv('data/origins.csv') #Abfahrtsort
dest = pd.read_csv('data/destinations.csv') #Ankunftsort
#Zeigen
make_point = lambda row:Point(row['x'], row['y'])
origin['geometry'] = origin.apply(make_point, axis=1)
dest['geometry'] = dest.apply(make_point, axis=1)
origin_geo = gpd.GeoDataFrame(origin, geometry='geometry')
dest_geo = gpd.GeoDataFrame(dest, geometry='geometry')
#Systemdefinition und -transformation koordinieren
rigin_geo.crs = CRS.from_epsg(3857)
dest_geo.crs = CRS.from_epsg(3857)
origin_geo = origin_geo.to_crs(CRS.from_epsg(3857))
dest_geo = dest_geo.to_crs(CRS.from_epsg(3857))
#Handlung
fig, ax = plt.subplots(figsize=(12,8))
origin_geo.plot(ax=ax)
dest_geo.plot(ax=ax)
mplleaflet.show() #Mit Karte kombinieren

Sie können sehen, dass die Punkte in der Nähe von Tarin, der Hauptstadt von Estland, gesammelt werden. Lassen Sie uns durch Geokodierung überprüfen.

6-2 Tarins Netzwerkanalyse

Das Ziel ist es, die Route / Entfernung zwischen dem Startpunkt und dem in 6-1 erhaltenen Ankunftspunkt zu finden. (1) Konvertieren Sie mithilfe der OSM-Bibliothek basierend auf OSM-Straßendaten in ein Diagramm ② Annähern Sie den Startpunkt / Ankunftsspeicher an den nächsten Knoten in der Grafik ③ Erstellen Sie mit networkx die kürzeste Route zwischen Knoten und ermitteln Sie deren Länge Arbeiten Sie in dieser Reihenfolge.

#Erstellen eines konvexen Pakets, das alle Punkte enthält
merged = pd.concat([origin, dest])
make_p = lambda row: (row['geometry'].x, row['geometry'].y)
merged['p'] = merged.apply(make_p, axis=1)
list_point = merged['p'].values.tolist()
multi = MultiPoint(list_point)
extent = multi.convex_hull
#Diagrammextraktion
import osmnx as ox
graph = ox.graph_from_polygon(extent, network_type='drive')
#Erstellen Sie Knoten und Links aus Diagrammen
nodes_proj, edges_proj = ox.graph_to_gdfs(graph_proj, nodes=True, edges=True)
#Ungefährer Punkt zum Knoten
graph_proj = ox.project_graph(graph)
orig_nodes = []
for orig in origin_geo['geometry']:
    orig_xy = (orig.y, orig.x)
    orig_node = ox.get_nearest_node(graph, orig_xy)
    orig_nodes.append(orig_node)
dest_nodes = []
for des in dest_geo['geometry']:
    dest_xy = (des.y, des.x)
    dest_node = ox.get_nearest_node(graph, dest_xy)
    dest_nodes.append(dest_node)
#Erstellen Sie einen minimalen Pfad
route_lines = []
route_lengths=[]
for i in orig_nodes:
    for j in dest_nodes:
        if i==j: #Ausgeschlossen, wenn der Start- und der Ankunftspunkt nahe am selben Punkt liegen
            continue
        route = nx.shortest_path(G=graph, source=i, target=j, weight='length')
        route_nodes = nodes_proj.loc[route]
        route_line = LineString(list(route_nodes.geometry.values))
        route_lines.append(route_line)
        route_lengths.append(route_line.length)
route_geom = pd.DataFrame([route_lines, route_lengths]).T
route_geom.columns = ['geometry', 'route_dist']
route_geom = gpd.GeoDataFrame(route_geom,geometry='geometry', crs=edges_proj.crs)
#Kürzeste Entfernung und längste Entfernung
mini = route_geom['route_dist'].min()
maxx = route_geom['route_dist'].max()
#Visualisierung
fig, ax = plt.subplots(figsize=(12,8))
route_geom.plot(ax=ax, color='red')
edges_proj.plot(ax=ax, color='gray', alpha=0.5, linewidth=0.7)
fig.savefig('network.png')

network.png Wenn Sie alle Routen malen, sieht es wie in der Abbildung oben aus. Bei der Netzwerkanalyse können Sie anscheinend verschiedene Dinge mit Python ausprobieren, anstatt GIS zu verwenden.

Recommended Posts

Python x GIS-Grundlagen (3)
Grundlagen von Python x GIS (Teil 2)
Python x GIS-Grundlagen (1)
Python-Grundlagen ①
Grundlagen von Python ①
Grundlagen der Python-Scraping-Grundlagen
# 4 [Python] Grundlagen der Funktionen
Grundlagen von Python: Ausgabe
Python: Grundlagen der Verwendung von Scikit-Learn ①
2.x, 3.x Serienzeichencode von Python
Python-Grundlagen ⑤
Paiza Python Primer 5: Grundlagen von Wörterbüchern
[Für Anfänger] Grundlagen von Python erklärt durch Java Gold Teil 2
Python-Grundlagen
Python-Grundlagen ④
Erste Schritte mit Python Grundlagen von Python
Python-Grundlagen ③
Python-Grundlagen
Überprüfung der Grundlagen von Python (FizzBuzz)
Python-Grundlagen
Python-Grundlagen
Python-Grundlagen ③
Python-Grundlagen ②
Python-Grundlagen ②
[Für Anfänger] Grundlagen von Python erklärt durch Java Gold Teil 1
Informationen zur Grundlagenliste der Python-Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
[Algorithmus x Python] Berechnung der Basisstatistik Teil2 (Mittelwert, Median, am häufigsten)
Grundlagen der binärisierten Bildverarbeitung durch Python
Python: Grundlagen der Bilderkennung mit CNN
[Lernnotiz] Grundlagen des Unterrichts mit Python
[Python3] Verstehe die Grundlagen von Beautiful Soup
Ich kannte die Grundlagen von Python nicht
Grundlagen zum Ausführen von NoxPlayer in Python
[Grundlagen der Python-Grundlagen] Warum __name__ == "__main__"
[Python] Kapitel 02-04 Grundlagen des Python-Programms (Informationen zu Kommentaren)
[Python] Kapitel 02-03 Grundlagen von Python-Programmen (Eingabe / Ausgabe)
[Einführung in Data Scientist] Grundlagen von Python ♬
[Python3] Grundlegendes zu Dateivorgängen
QGIS + Python Teil 2
Python-Grundlagen: Liste
Python-Grundmemorandum
QGIS + Python Teil 1
# Python-Grundlagen (#matplotlib)
Python CGI-Grundlagen
Python-Grundlagen: Wörterbuch
Python Slice Grundlagen
# Python-Grundlagen (Umfang)
# Python-Grundlagen (#Numpy 1/2)
Kopie von Python
# Python-Grundlagen (#Numpy 2/2)
# Python-Grundlagen (Funktionen)
Python: Scraping Teil 1
Grundlagen des Python-Arrays
Grundlagen der Python-Profilerstellung
Python #Numpy Basics
Python-Grundlagen: Funktionen
# Python-Grundlagen (Klasse)
Zusammenfassung der Python-Grundlagen