问题描述
我是Python的新手,因此对我的不了解深表歉意。
我需要读取4列CSV文件的2列(纬度和经度)。 下面的示例。
ShopName其他纬度经度 XXX 3 999999 999999
然后我必须使用我检查过的pyproj转换scrypt更改纬度和经度。然后,我需要将转换后的纬度和经度数据保存到新的csv中,以使列格式与现有csv相同。 下面的示例。
ShopName其他纬度经度 XXX 3 49.12124 -2.32131
我有点迷路,但这就是我要去的地方。预先谢谢你
import csv
from pyproj import Transformer
#2.2 Define function
def transformer = Transformer.from_crs("epsg:12345","epsg:9999")
result = transformer.transform(old_longitude,old_latitude)
return new_longitude,new latitude
#2.3 Set destination file to variable
with open('new.csv','w') as csv_new2:
#2.4 Instruct write method to new file
fileWriter2 = csv.writer(csv_new2)
#2.5 Set existing file to variable
with open('old.csv','r') as csv_old2:
#2.6 Instruct read method to new file
fileReader2 = csv.reader(csv_old2)
for row in fileReader2:
解决方法
以下是您的一些选择。
pandas + pyproj:
大熊猫:
- https://geopandas.org/gallery/create_geopandas_from_pandas.html
- https://geopandas.org/projections.html
from pyproj import Transformer
import pandas
pdf = pandas.read_csv("old.csv")
transformer = Transformer.from_crs("epsg:12345","epsg:9999",always_xy=True)
xx,yy = trans.transform(pdf["longitude"].values,pdf["latitude"].values)
pdf = pdf.assign(longitude=xx,latitude=yy)
pdf.to_csv("new.csv")