Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten

ShapeFile ist ein Datenformat zum Speichern von Informationen über die Position und Form von Geodaten und deren Attributinformationen. Es gilt die Datei mit der Erweiterung .shp, die mit dem Download von den nationalen Landnummerninformationen usw. geliefert wird.

Dieses Mal ist das Ziel, diese ShapeFile mit Python zu lesen und in Spatialite zu speichern.

ShapeFile-Details

ShapeFile besteht aus drei Dateien. Es gibt drei Dateien: Hauptdatei, Indexdatei und Attributdatei. Diese Dateinamen sind bis auf die Erweiterung identisch.

■ Hauptdatei: Counties.shp ■ Indexdatei: Counties.shx ■ Attributdatei: Counties.dbf

Geodaten werden in der Hauptdatei gespeichert. Die Indexdatei ist ein Index, der den Zugriff auf alle räumlichen Daten erleichtert. In der Attributdatei werden die Attributwerte gespeichert.

Die technischen Daten dieser Details finden Sie im Folgenden.

** Technische Informationen zur Formdatei ** http://www.esrij.com/cgi-bin/wp/wp-content/uploads/documents/shapefile_j.pdf

Bearbeiten Sie ShapeFile in Python

Die folgenden Bibliotheken sollten verwendet werden, um ShapeFile in Python zu betreiben.

https://github.com/GeospatialPython/pyshp

** Installationsmethode ** Platzieren Sie shapefile.py in einem beliebigen Ordner und importieren Sie es.

Diese Bibliothek kann mit python2.4-3.x-Serien verwendet werden.

Betriebsbeispiel für nationale numerische Landinformationen

In diesem Beispiel betreiben wir N02-05-g_RailroadSection.shp der Eisenbahnstreckeninformationen der nationalen Landnummerninformationen.

** Nationale Landnummerninformationen Eisenbahndaten ** http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N02-v2_2.html

# -*- coding: utf-8 -*-
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/pyshp')
import shapefile

sf = shapefile.Reader('original_data\\N02-05_GML\\N02-05\\N02-05-g_RailroadSection.shp')
shapeRecs = sf.iterShapeRecords()
for sr in shapeRecs:
  #Enthält Attributwerte
  print ('attribute:' , sr.record)

  #Art des Typs
  #NULL = 0
  #POINT = 1
  #POLYLINE = 3
  #POLYGON = 5
  #MULTIPOINT = 8
  #POINTZ = 11
  #POLYLINEZ = 13
  #POLYGONZ = 15
  #MULTIPOINTZ = 18
  #POINTM = 21
  #POLYLINEM = 23
  #POLYGONM = 25
  #MULTIPOINTM = 28
  #MULTIPATCH = 31
  print ('shapeType:' ,sr.shape.shapeType)

  #Liste der Koordinatenpunkte
  print ('points:', sr.shape.points)

  #Wo kann man Punkte für MultiLing und MultiPolygon teilen?
  print ('parts:' ,sr.shape.parts)

iterShapeRecords () analysiert shp-Dateien von Anfang an. Zu diesem Zeitpunkt wird nur ein Datenbestand im Speicher erweitert, sodass er für die Verarbeitung großer Datenmengen geeignet ist.

IterShapeRecord geht jedoch davon aus, dass sich der nächste Datensatz im nächsten Byte der im Datensatzheader aufgezeichneten Inhaltslänge befindet. In vielen Fällen kann diese Annahme zur Analyse verwendet werden, in einigen Fällen ist diese Annahme jedoch falsch. Das Ausführen der folgenden Datei A31-12_17_GML.shp führt beispielsweise zu einem Fehler.

** Nationale numerische Landinformationen Präfektur Ishikawa des geschätzten Überschwemmungsgebiets ** http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-A31.html

Dies liegt daran, dass sich zwischen den Datensätzen Müll befindet, sodass er nicht allein von der shp-Datei analysiert werden kann und die Indexdatei verwendet werden muss.

In diesem Fall kann es ohne Verwendung von iterShapeRecords implementiert werden, wie unten gezeigt.

# -*- coding: utf-8 -*-
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/pyshp')
import shapefile

sf = shapefile.Reader('original_data\\A31-12\\output\\A31-12_17_GML\\old\\A31-12_17.shp')
try:
    #Die shp-Datei der nationalen Landnummerninformationen ist ungültig, und die Inhaltslänge in der shp-Datei stimmt nicht mit der tatsächlichen Länge überein.
    #Es bleibt keine andere Wahl, als jeden Datensatz über eine shx-Datei abzurufen
    i = 0
    while True:
        shape = sf.shape(i)
        rec = sf.record(i)
        #Enthält Attributwerte
        print ('attribute:' , rec)

        #Art des Typs
        #NULL = 0
        #POINT = 1
        #POLYLINE = 3
        #POLYGON = 5
        #MULTIPOINT = 8
        #POINTZ = 11
        #POLYLINEZ = 13
        #POLYGONZ = 15
        #MULTIPOINTZ = 18
        #POINTM = 21
        #POLYLINEM = 23
        #POLYGONM = 25
        #MULTIPOINTM = 28
        #MULTIPATCH = 31
        print ('shapeType:' ,shape.shapeType)

        #Liste der Koordinatenpunkte
        print ('points:', shape.points)

        #Wo kann man Punkte für MultiLing und MultiPolygon teilen?
        print ('parts:' , shape.parts)

        i += 1
except IndexError:
    pass

Auf diese Weise können Sie die Formdatei mit Python analysieren und in Spatialite importieren.

Im folgenden Programm werden Sedimentkatastrophen-Gefahrenpunktdaten, Überschwemmungsgebietsdaten, Böendaten wie Tornados usw. von numerischen Landinformationen in Spatialit aus der Formdatei gespeichert. https://github.com/mima3/kokudo/blob/master/kokudo_db.py

Demo http://needtec.sakura.ne.jp/kokudo/

Informationen zur Verwendung von SPATIALITE finden Sie im folgenden Artikel. http://qiita.com/mima_ita/items/64f6c2b8bb47c4b5b391

Recommended Posts

Versuchen Sie, in die Datenbank zu importieren, indem Sie ShapeFile mit numerischen Informationen zum nationalen Land mit Python bearbeiten
Versuchen Sie, die Eisenbahndaten der nationalen Landnummern in 3D anzuzeigen
Lassen Sie uns die Eisenbahndaten der nationalen Landnummern verwenden
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
[Wissenschaftlich-technische Berechnung von Python] Numerische Berechnung zur Ermittlung des Ableitungswerts (Differential)
Beachten Sie bei der Verwendung von PyQtGraph mit Python Pyside die Reihenfolge des Imports
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
Mit Python + Selenium erhalten Sie Informationen, die der Registerkarte "Netzwerk" der Chrome-Entwicklertools entsprechen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Versuchen Sie, verschiedene Informationen anzuzeigen, die für das Debuggen mit Python nützlich sind
Anhängen an den Python-Prozess des SSH-Ziels und Debuggen
Versuchen Sie, die Nährstoffe von Cornflakes zu visualisieren, die M-1-Champion Milkboy mit Python sagte
Versuchen Sie, die verstümmelten Zeichen im angehängten Dateinamen mit Python zu entschlüsseln
So erhalten Sie Informationen von Organisationen, Cost Explorer eines anderen AWS-Kontos bei Lambda (Python)
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services mit Python zu überprüfen. # 1
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services in Python zu überprüfen. # 2
Versuchen Sie, die Position des Senders aus dem Funkwellenausbreitungsmodell mit Python [Wi-Fi, Beacon] zu berechnen.
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
Versuchen Sie, das N Queen-Problem mit SA von PyQUBO zu lösen
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Der Versuch, Segmentbäume Schritt für Schritt zu implementieren und zu verstehen (Python)
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Versuchen Sie, das Triplett des Bootsrennens vorherzusagen, indem Sie das Lernen bewerten
Versuchen Sie, den kürzesten Weg mit Python + NetworkX + Social Data zu lösen
[Python] Der Stolperstein des Imports
Versuchen Sie, Facebook mit Python zu betreiben
[Abgeschlossene Version] Versuchen Sie, die Anzahl der Einwohner der Stadt anhand der Adressliste mit Python herauszufinden
Ich habe die numerische Berechnung von Python durch Rust ersetzt und die Geschwindigkeit verglichen
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
Ich bin verblüfft über das Verhalten von filter () aufgrund verschiedener Versionen von Python
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Einstellung, um den Inhalt der Bibliothek mit pytest einzugeben und einen Debug-Test durchzuführen
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
[Einführung in Python] Wie wird mit der continue-Anweisung wiederholt?
Versuchen Sie, die aggregierten Ergebnisse der beiden Datensätze per E-Mail mit pykintone zu senden
Versuchen Sie, den Hintergrund und das sich bewegende Objekt des Videos mit OpenCV zu trennen
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Versuchen Sie, sich mit Python bei qiita anzumelden
[Python] Visualisieren Sie die von Wireshark erfassten Informationen