Verbreiten Sie die Kartenkacheln des Geographical Institute mit Python

Hintergrund

Wenn Sie eine Routenkarte vor dem Hintergrund einer Karte erstellen möchten, haben Sie sie selbst kopiert und in das Excel-Rasterpapier des Geographical Institute-Kartenkachels eingefügt. Dies ist jedoch eine sehr mühsame Aufgabe. Lassen Sie Python dies tun. Ich habe es gemacht.

Was ist eine geografische Vermessungskarte?

Details sind in hier beschrieben, aber kurz gesagt, die vom National Land Research Institute erstellte topografische Karte kann als Kachelbild verwendet werden. Das ist. Das Kachelbild hat Koordinatenwerte, und dieses Mal erhalte ich eine Karte des gewünschten Gebiets, indem ich es spezifiziere. Bitte überprüfen Sie die Koordinatenwerte auf der Seite zur Bestätigung der Kachelkoordinaten des National Land Research Institute.

Holen Sie sich ein Kachelbild

Importieren Sie zunächst die erforderlichen Bibliotheken. Bitte installieren Sie es bei Bedarf. (zB pip install request)

chiriinMap.py


import cv2
import numpy as np
import os
import requests

Definieren Sie die Funktion zum Abrufen und Speichern des Kachelbilds wie folgt: Unten wird ein Ordner namens "Kachel" vorbereitet und im aktuellen Verzeichnis gespeichert. Übrigens ist es nur für ein Blatt 15_28250_13142.jpg Es ist so.

chiriinMap.py


def get_tile(z, x, y):
    """
Geben Sie dieses Mal die URL an, um die Standardkarte abzurufen.
Speichern Sie das Kartenkachelbild des Geographical Institute entsprechend den angegebenen Koordinaten.
    """
    url = "https://cyberjapandata.gsi.go.jp/xyz/std/{}/{}/{}.png ".format(z, x, y)
    file_name = "tile/{}_{}_{}.jpg ".format(z, x, y)
    
    response = requests.get(url)
    image = response.content
    
    with open(file_name, "wb") as aaa:
        aaa.write(image)

Holen Sie sich ein Kachelbild, indem Sie den Bereich angeben

Die vorherige Funktion "get_tile" kann nur eine Kartenkachel abrufen. Versuchen Sie daher, den gesamten Bereich abzurufen. Wenn das gewünschte Bild für die Zukunft bereits vorhanden ist, wird es übersprungen. Wenn jedoch seit der letzten Erfassung zu viel Zeit vergangen ist, wurde die Karte möglicherweise aktualisiert. In diesem Fall ist es besser, das Bild zu löschen. Im nächsten Abschnitt werden wir mehrere Kachelbilder zu einem kombinieren, sodass Sie möglicherweise jedes Mal einzelne Bilder löschen möchten. Das überlasse ich dir.

chiriinMap.py


def get_tile_area(north_west, south_east):
    """
Erhalten Sie das Kachelbild, nachdem Sie die Kachelkoordinaten des nordwestlichen Endes und des südöstlichen Endes angegeben haben.
    """
    assert north_west[0] == south_east[0], "Überprüfen Sie die Zoomstufe z."
    zoom = north_west[0]
    im_v_lst = []
    for i in range(south_east[1]-north_west[1]+1):
        for j in range(south_east[2]-north_west[2]+1):
            filepath = path = "tile/{}_{}_{}.jpg ".format(zoom, i+north_west[1], j+north_west[2])
            if os.path.exists(filepath) == True:
                continue
            get_tile(zoom, i+north_west[1], j+north_west[2])

Kombinieren Sie Kachelbilder im Bereich zu einem Bild

Die Verlegearbeiten, die viel Zeit in Anspruch genommen haben, können wie folgt überwunden werden. Fühlen Sie sich frei, das letzte Bild umzubenennen.

chiriinMap.py


def cat_tile(north_west, south_east):
    zoom = north_west[0]
    im_v_lst = []
    for i in range(south_east[2]-north_west[2]+1):
        im_h_lst = []
        for j in range(south_east[1]-north_west[1]+1):
            path = "tile/{}_{}_{}.jpg ".format(zoom, j+north_west[1], i+north_west[2])
            im1 = cv2.imread(path,-1)
            im_h_lst.append(im1)
        im_h = cv2.hconcat(im_h_lst)
        im_v_lst.append(im_h)
    im_v = cv2.vconcat(im_v_lst)
    cv2.imwrite("tile/tile.png ", im_v)

Versuchen

Ich werde es versuchen.

chiriinMap.py


north_west = (15, 28223, 13124)
south_east = (15, 28244, 13144)
get_tile_area(north_west, south_east)
cat_tile(north_west, south_east)

tile.png

Es ist so. Es ist die Itoshima-Halbinsel in der Präfektur Fukuoka. Wie viele Stunden würde es dauern, um es manuell zu tun ... Sie können es damit genießen. Übrigens ist dieses Bild ungefähr 30 MB groß. Wenn es Ihnen nichts ausmacht, die Bildqualität zu verringern, können Sie die Größe verringern.

Quelle

Kartenbild: Nationales Landforschungsinstitut

Recommended Posts

Verbreiten Sie die Kartenkacheln des Geographical Institute mit Python
Finde Fehler in Python
Abrufen der arXiv-API in Python
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python
Klicken Sie in Python auf die Sesami-API
Holen Sie sich den Desktop-Pfad in Python
Selbstorganisierende Karte in der Python NumPy-Version
Holen Sie sich den Skriptpfad in Python
[Python] Passen Sie den Standard für die Farbkarte an
Klicken Sie auf die Web-API in Python
Ich habe die Warteschlange in Python geschrieben
Berechnen Sie den Vormonat in Python
Untersuchen Sie die Klasse eines Objekts mit Python
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Greifen Sie mit Python auf die Twitter-API zu
Der erste Schritt von Python Matplotlib
Ich habe den Stack in Python geschrieben
Beherrsche das schwache Ref-Modul in Python
Lernen Sie das Entwurfsmuster "Prototype" mit Python
Lernen Sie das Entwurfsmuster "Builder" mit Python
Laden Sie das Remote-Python-SDK mit IntelliJ
Geben Sie die Farbe in der matplotlib 2D-Karte an
Überprüfen Sie das Verhalten des Zerstörers in Python
Lernen Sie das Designmuster "Flyweight" in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Lernen Sie das Entwurfsmuster "Observer" in Python
Lernen Sie das Entwurfsmuster "Memento" mit Python
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Lernen Sie das Entwurfsmuster "Befehl" in Python
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Tweet mit der Twitter-API in Python
Lernen Sie das Entwurfsmuster "Besucher" mit Python
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Lernen Sie das Entwurfsmuster "Bridge" mit Python
Überprüfen Sie, ob die URL in Python vorhanden ist
Lernen Sie das Entwurfsmuster "Mediator" mit Python
Ordnen Sie die in pythons models.py festgelegte Tabelle zu
Lernen Sie das Designmuster "Decorator" mit Python
Führen Sie den Python-Interpreter im Skript aus
Das Ergebnis der Installation von Python auf Anaconda
Was ist "Mahjong" in der Python-Bibliothek? ??
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
MongoDB mit Python zum ersten Mal
Lernen Sie das Entwurfsmuster "Iterator" mit Python
Grundlagen zum Ausführen von NoxPlayer in Python
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
Lernen Sie das Entwurfsmuster "Strategie" mit Python
Lernen Sie das Entwurfsmuster "Composite" mit Python
Lösen Sie das maximale Subarray-Problem in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Lernen Sie das Entwurfsmuster "State" in Python
Ruft die EDINET-Codeliste in Python ab
Lernen Sie das Entwurfsmuster "Adapter" mit Python
Installieren Sie das Python-Modul in einem beliebigen Verzeichnis
[Python] Lesen Sie die angegebene Zeile in der Datei
[Python] Kombinieren Sie alle Elemente in einem Array
Anzeige von Positionsinformationsdaten in Python - Versuchen Sie, mit der Kartenanzeigebibliothek (Folium) zu zeichnen -