Auparavant, j'ai écrit du code python pour convertir les coordonnées EQA (latitude et longitude) en coordonnées UTM (mercatle transverse universel) en utilisant python. ↓ Coordonnées de latitude / longitude ↔ Conversion de coordonnées UTM avec Python https://qiita.com/spicy_HotChicken/items/4cdf303493d73e24dc14
Lors de la conversion des coordonnées une par une, j'ai entré les valeurs de coordonnées dans le script python. Cependant, le nombre de conversions a progressivement augmenté et cela est devenu gênant, j'ai donc pensé que ce serait plus facile si je pouvais créer une liste de latitude et de longitude, les convertir toutes en même temps et les exporter sous forme de fichier texte. La liste latitude / longitude est un script de conversion de coordonnées lorsqu'elle est séparée par des espaces dans l'ordre de latitude et de longitude à partir de la gauche.
$ cat input.dat
139.2341321 35.534243
132.3214315 32.542664
138.4312145 36.534261
Le script de conversion est le suivant. Le nom du fichier d'entrée / sortie est spécifié au début.
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)
Dans mon environnement, lorsque les données textuelles sont lues par python, elles deviennent une liste de type chaîne, donc elles sont divisées par * .read.split ('\ n')
pour faire une liste.
Cette fois, je ne savais lire que ligne par ligne, donc j'ai lu ligne par ligne dans une boucle et répéter la conversion → sortie du fichier.
ʻArdata` fait des coordonnées de latitude / longitude un type flottant nparray.
Après cela, la latitude et la longitude sont définies respectivement et la conversion des coordonnées EQA2UTM est effectuée.
Je vais essayer.
$python eqa2utm_list.py
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EQA2UTM transformation Completed.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
339907.669515 3933725.28372 54
248457.470634 3603752.79472 53
270030.490036 4046278.55358 54
Le fichier d'entrée est répertorié dans l'ordre de latitude et de longitude à partir de la gauche, et la sortie est répertoriée dans l'ordre UTM Est, UTM Northing, UTM Zone à partir de la gauche.
Dans la conversion EQA2UTM introduite précédemment, les coordonnées de latitude et de longitude que vous souhaitez coordonner étaient directement entrées dans le script. C'est gênant. Cette fois, j'ai fait une liste de latitude / longitude et je l'ai convertie en une seule fois. Tout ce que vous avez à faire est de créer une liste des latitudes et longitudes pour lesquelles vous souhaitez convertir les coordonnées. Cependant, si vous ne voulez convertir qu'un seul point mais qu'il ne suffit pas de faire une liste, il s'agit d'un calcul pour entrer les coordonnées de manière interactive et afficher les valeurs de coordonnées UTM sur l'écran du terminal. Y a-t-il une telle personne? .. ..
eqa2utm_int.py
from pyproj import Proj
#J'ai changé seulement les deux lignes du bas ↓
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]
Lorsque vous exécutez le script python, il vous sera demandé la latitude et la longitude, alors entrez-les et appuyez sur Entrée pour afficher les valeurs de coordonnées UTM sur l'écran du terminal. C'est facile.