0

Python とプログラミングの初心者 - WGS84 DD 緯度経度値を inputfile.txt から読み取り、それらを新しい座標系 N/E に変換し、N/E 出力を「outputfile.txt」に書き込みたいと考えています。入力ファイルには他のデータ列があり、それを新しいファイルにも書き込んで、変換されていない座標を除外しています。各行から一度に 1 つずつ数式に緯度/経度を取得する方法がわからないファイルの最後まで 1 行ずつ。入力データと数式をテストし、機能することを確認しました。簡潔にするために入力のリストを省略し、式を示しています。このブログを読んで、YouTube を見て理解したところで、クラスに含まれる入力値と数式に基づいて txt ファイルからデータを処理するメソッドを指定するクラスを作成する必要があります。

import math
class Coordtrans
    def__init__(self, long, lat):
        self.long = long
        self.lat = lat
f = open('inputfile.txt')
for col in row[6:]

# how do input lat into formula?
# do I try all lats first, then longs (col by col), or one lat/long pair row by row?
# do I need a separate 'for' loop for lat and long?


#formulas

DB =Lat-Bo                           #lat from input file
u =DB*(L1+DB*(L2+DB*(L3+L4*DB)))
R =Ro-u
Y =(Lo-Long)*SinBo                   #long from input file
northing = No+u+R*math.sin(Y*math.pi/180)*math.tan(Y*math.pi/360) 
#write this output to ('outputfile.txt')
easting = Eo + R*math.sin(Y*math.pi/180)
#write to ('outputfile.txt')
4

2 に答える 2

1

数式から関数を作成できます。

import csv

def latlong_to_ne(Lat, Long):
    DB =Lat-Bo                           #lat from input file
    u =DB*(L1+DB*(L2+DB*(L3+L4*DB)))
    R =Ro-u
    Y =(Lo-Long)*SinBo                   #long from input file
    northing = No+u+R*math.sin(Y*math.pi/180)*math.tan(Y*math.pi/360) 
    easting = Eo + R*math.sin(Y*math.pi/180)
    return northing, easting

with open('inputfile.txt', 'rb') as f1, open('outputfile.txt', 'wb') as f2:
    w = csv.writer(f2)
    for row in csv.reader(f):
        lat = float(row[7])
        long = float(row[8])
        N, E = latlong_to_ne(lat, long)
        newrow = row[:7] + [N, E, row[9]]
        w.writerow(newrow)
于 2012-06-06T06:31:31.570 に答える
0

これは、入力テキストファイルでlat/lansがどのように表現されているかによって異なります。

Formualtion NANDEのセットとしてlatsとlansを一緒に試すのは良い考えです。

正規表現を使用して、文字で区切られている場合はlat/lansを識別できます。

于 2012-06-06T06:09:17.780 に答える