[PYTHON] Faites une liste de latitude et de longitude et convertissez les coordonnées UTM à la fois → Sortie du fichier

De la liste EQA à la conversion par lots à la création de liste UTM

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.

Exemple d'application

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.

(Bonus) Effectuez la conversion EQA2UTM de manière interactive

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.

Recommended Posts

Faites une liste de latitude et de longitude et convertissez les coordonnées UTM à la fois → Sortie du fichier
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
Comment assembler de nombreux pipelines et les ranger en même temps
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Recevez de nombreux tweets Twitter à la fois
Coordonnées de latitude et de longitude ↔ Conversion de coordonnées UTM avec python
Afficher la sortie d'une liste de nombres à virgule flottante
Copiez la liste en Python
Convertir un objet de tranche en liste de numéros d'index
Faire une copie d'un fichier Google Drive à partir de Python
Prenez note de la liste des utilisations de base de Pandas
Afficher le résultat de sortie de sklearn.metrics.classification_report sous forme de fichier CSV
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
Convertir la latitude, la longitude et l'altitude GPS en coordonnées orthogonales tridimensionnelles
Crache une liste de noms de fichiers, de dates de dernière modification et de codes de caractères en python3
Extraire uniquement le son d'un instrument spécifique du fichier MIDI et en faire un fichier séparé
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois