提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
已知点的经纬度坐标txt csv格式均可,将文件内点坐标统一转为CGCS2000 坐标,期间借鉴了https://blog.csdn.net/weixin_40575956/article/details/107288757 里的方法,利用arcgis转了一个点,但是没办法批量处理,所以自己想办法利用Python实现这一功能,最终python处理结果与arcgis基本一样,但可以轻松搞定海量点数据。(这个方法本身可能存在不严谨性,通常情况下涉及到坐标系转换精度要求较高的话还是需要七参数或者四参数)
直接上代码
代码如下(示例):
import pandas as pd
import pyproj
# 定义坐标转换函数
def convert_to_cgcs2000(lat, lon):
transformer = pyproj.Transformer.from_crs("epsg:4326", "epsg:4521", always_xy=True)
cgcs2000_lon, cgcs2000_lat = transformer.transform(lon, lat)
return cgcs2000_lat, cgcs2000_lon
# 读取CSV文件
input_file = '示范段.csv' # 请替换为您的CSV文件路径
df = pd.read_csv(input_file, encoding='GBK')
# 批量转换坐标
df['CGCS2000_Latitude'], df['CGCS2000_Longitude'] = zip(*df.apply(lambda row: convert_to_cgcs2000(row['纬度'], row['经度']), axis=1))
# 选择要保留的列(点标签和新的CGCS2000坐标),并生成新的DataFrame
new_df = df[['点标签', 'CGCS2000_Latitude', 'CGCS2000_Longitude', '海拔']]
# 保存新的DataFrame到CSV文件,不包含原始经纬度信息
output_file = 'output.csv' # 请替换为输出文件路径
new_df.to_csv(output_file, index=False, encoding='GBK', float_format='%.15f')
WKID可以参考这里
地理坐标系WKID:地理坐标系
投影坐标系WKID:投影坐标系
对比下结果
小数点后面第四位才有变化基本是毫米的偏差。
参考
https://blog.csdn.net/sinat_28797501/article/details/75635439
https://blog.csdn.net/weixin_40575956/article/details/107288757