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.
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.
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