[PYTHON] Erstellen Sie eine Liste mit Längen- und Breitengraden und konvertieren Sie die UTM-Koordinaten sofort → Dateiausgabe

Von der EQA-Liste zur Stapelkonvertierung zur Erstellung von UTM-Listen

Zuvor habe ich Python-Code geschrieben, um mithilfe von Python von EQA-Koordinaten (Breiten- und Längengrad) in UTM-Koordinaten (Universal Transverse Mercatle) zu konvertieren. ↓ Längen- / Breitengradkoordinaten ↔ UTM-Koordinatenkonvertierung mit Python https://qiita.com/spicy_HotChicken/items/4cdf303493d73e24dc14

Bei der Konvertierung der Koordinaten nacheinander habe ich die Koordinatenwerte in das Python-Skript eingegeben. Die Anzahl der Konvertierungen hat jedoch allmählich zugenommen und ist problematisch geworden. Daher dachte ich, es wäre einfacher, wenn ich eine Liste mit Längen- und Breitengraden erstellen, alle auf einmal konvertieren und als Textdatei ausgeben könnte. Die Breiten- / Längengradliste ist ein Koordinatenkonvertierungsskript, wenn Breiten- und Längengrad in der Reihenfolge von links getrennt sind.

$ cat input.dat
139.2341321 35.534243
132.3214315 32.542664
138.4312145 36.534261

Das Konvertierungsskript lautet wie folgt. Der Name der Eingabe- / Ausgabedatei wird am Anfang angegeben.

eqa2utm_list.py


import numpy as np
import os 
from pyproj import Proj

inpf='input.dat' #Define input file name.
outf='output.dat' #Define output file name.
#Check existence of output file.
#If output file exists, remove it.
if os.path.isfile(outf):
    os.remove(outf)

tmpdata=open(inpf, "r")
data=tmpdata.read().split('\n')
for a in range(len(data)-1):
    ardata=np.array(data[a].split(), float)
    #datastr=data[a]
    lon=ardata[0]
    lat=ardata[1]
    #print lon, lat
    
    #eqa2utm.py
    e2u_zone=int(divmod(lon, 6)[0])+31
    e2u_conv=Proj(proj='utm', zone=e2u_zone, ellps='WGS84')
    utmx, utmy=e2u_conv(lon, lat)
    if lat<0:
        utmy=utmy+10000000
    
    with open(outf, 'a') as f:
        outp=str(utmx)+str(' ')+str(utmy)+str(' ')+str(e2u_zone)
        f.write("%s\n" % outp)
        
print '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n',\
 ' EQA2UTM transformation Completed. \n',\
 '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n'

#Show output file on a screen
f=open(outf, 'r')
data=f.read()
print(data)

Wenn in meiner Umgebung Textdaten von Python gelesen werden, werden sie zu einer Liste mit Zeichenfolgentypen, sodass sie durch "* .read.split (" \ n ")" geteilt werden, um eine Liste zu erstellen. Dieses Mal wusste ich nur, wie man Zeile für Zeile liest, also las ich Zeile für Zeile in einer Schleife und wiederholte die Konvertierung → Dateiausgabe. ardata macht die Längen- und Breitengradkoordinaten zu einem Float-Typ-Nparray. Danach werden Längen- und Breitengrad definiert und die EQA2UTM-Koordinatenkonvertierung durchgeführt.

Anwendungsbeispiel

Ich werde es versuchen.

$python eqa2utm_list.py
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 EQA2UTM transformation Completed. 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

339907.669515 3933725.28372 54
248457.470634 3603752.79472 53
270030.490036 4046278.55358 54

Die Eingabedatei wird in der Reihenfolge von Breite und Länge von links aufgelistet, und die Ausgabe wird in der Reihenfolge von UTM Easting, UTM Northing und UTM Zone von links aufgelistet.

(Bonus) Führen Sie interaktiv die EQA2UTM-Konvertierung durch

Bei der zuvor eingeführten EQA2UTM-Konvertierung wurden die zu koordinierenden Breiten- und Längengradkoordinaten direkt in das Skript eingegeben. Das ist mühsam. Dieses Mal habe ich eine Breiten- / Längengradliste erstellt und alles auf einmal konvertiert. Sie müssen lediglich eine Liste der Breiten- und Längengrade erstellen, für die Sie Koordinaten konvertieren möchten. Wenn Sie jedoch nur einen Punkt konvertieren möchten, aber nicht genug, um eine Liste zu erstellen, müssen Sie die Koordinaten interaktiv eingeben und die UTM-Koordinatenwerte auf dem Terminalbildschirm ausgeben. Gibt es so eine Person? .. ..

eqa2utm_int.py


from pyproj import Proj

#Ich habe nur die beiden unteren Zeilen ↓ geändert
lon=float(input('>> Longitude [deg.] >>')) 
lat=float(input('>> Latitude [deg.] >>'))  

e2u_zone=int(divmod(lon, 6)[0])+31
e2u_conv=Proj(proj='utm', zone=e2u_zone, ellps='WGS84')
utmx, utmy=e2u_conv(lon, lat)

if lat<0:
    utmy=utmy+10000000

print "UTM zone is ", e2u_zone, " \n", \
      "UTM Easting is", utmx, "[m]\n",\
      "UTM Northing is ", utmy, "[m]"

#EOF
$ python eqa2utm_int.py
>> Longitude [deg.] >>132.55
>> Latitude [deg.] >>38.222
UTM zone is  53  
UTM Easting is 285531.137964 [m]
UTM Northing is  4233284.85815 [m]

Wenn Sie das Python-Skript ausführen, werden Sie nach dem Breiten- und Längengrad gefragt. Geben Sie ihn ein und drücken Sie die Eingabetaste, um die UTM-Koordinatenwerte auf dem Terminalbildschirm anzuzeigen. Es ist einfach.

Recommended Posts

Erstellen Sie eine Liste mit Längen- und Breitengraden und konvertieren Sie die UTM-Koordinaten sofort → Dateiausgabe
Durchsuchen Sie das Verzeichnis und erstellen Sie eine Liste mit Verzeichnispfaden und Dateinamen
Wie man viele Pipelines zusammenbaut und sofort weglegt
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Holen Sie sich viele Twitter-Tweets auf einmal
Längen- und Breitengradkoordinaten ↔ UTM-Koordinatenkonvertierung mit Python
Anzeige der Ausgabe einer Liste von Gleitkommazahlen
Kopieren Sie die Liste in Python
Konvertieren Sie das Slice-Objekt in eine Liste mit Indexnummern
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Notieren Sie sich die Liste der grundlegenden Verwendungszwecke von Pandas
Geben Sie das Ausgabeergebnis von sklearn.metrics.classification_report als CSV-Datei aus
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Konvertieren Sie Breite, Länge und GPS-Höhe in dreidimensionale orthogonale Koordinaten
Csv spuckte eine Liste mit Dateinamen, zuletzt geänderten Daten und Zeichencodes in Python3 aus
Extrahieren Sie nur den Klang eines bestimmten Instruments aus der MIDI-Datei und machen Sie es zu einer separaten Datei
Ich habe versucht, ein Skript zu erstellen, das die Tweets eines bestimmten Benutzers auf Twitter verfolgt und das veröffentlichte Bild sofort speichert