UTM地理经纬度向通用平面直角坐标系的投影

import pandas as pd
import utm
from tqdm import tqdm
import os
import re

f_n = 'BSD'#文件最终目录波士顿(BSD)地理信息文件
f_path = r'.\DATA\{}'.format(f_n)
f_filelist = os.listdir(f_path)
f_file_n = []
print("开始进行os文件夹遍历=====>>")
for f_filename in f_filelist:
    f_filepath = os.path.join(f_path, f_filename)
    f_file_n += [f_filepath]
# 定义正则表达式模式
pattern = r"\\([^\\]+)\.csv"
# 遍历f_file_n列表中的每个元素
f_file_nls=[]
for file_path in f_file_n:
    # 使用re.search()查找匹配项
    match = re.search(pattern, file_path)
    # 如果找到匹配项,输出结果
    if match:
        result = match.group(1)
        f_file_nls+=[result]
    else:
        print("No match found!!")
print("找到文件:", f_file_nls)
print("os路径导入完成=====>>开始批量对地理数据进行投影")
#------------
for f_i in range(len(f_file_nls)):
    file_name="{}".format(f_file_n[f_i])#文件名1
    output_name="{}_utm".format(f_file_nls[f_i])
    "----路径----"
    outputpath=r'.\DATA_UTM\{}.csv'.format(output_name)
    file=r'{}'.format(file_name)
    "-----------"
    gps_data = pd.read_csv(file,encoding='gbk')
    # 删除包含nan值的行
    gps_data =gps_data.dropna(subset=['s_lon', 's_lat', 'e_lon', 'e_lat'])
    lat_slis=list(gps_data['s_lat'])
    lon_slis=list(gps_data['s_lon'])
    lat_elis=list(gps_data['e_lat'])
    lon_elis=list(gps_data['e_lon'])
    if f_i==0:
       base = utm.from_latlon(lat_slis[0], lon_slis[0])
       print("坐标投影基准线:",lat_slis[0],";", lon_slis[0])
    x_data, y_data = [], []
    for i in tqdm(range(0, len(gps_data))):
        tmp = utm.from_latlon(lat_slis[i], lon_slis[i])
        x_data.append(tmp[0] - base[0])
        y_data.append(tmp[1] - base[1])
    gps_data['x_slat'],gps_data['y_slon']=x_data,y_data
    "end"
    x_data_, y_data_ = [], []
    for i in tqdm(range(0, len(gps_data))):
        tmp_ = utm.from_latlon(lat_elis[i], lon_elis[i])
        x_data_.append(tmp_[0] - base[0])
        y_data_.append(tmp_[1] - base[1])
    print("数据量与对称列检验:",len(x_data),len(x_data_))
    gps_data['x_elat'],gps_data['y_elon']=x_data_,y_data_
    gps_data.to_csv(outputpath,sep=',',index=False,header=True)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值