我有一个包含6列坐标对的数据框:度数|分钟|秒(对于经度和纬度)。这就是所谓的NAD83格式。我想将它们转换为仅有2列十进制格式的新数据帧,即NAD27。Python地理空间坐标格式转换
我通常使用的库,geopy几乎支持所有格式,所以实际上并没有专门的转换函数。我在这里查看文档以确保: https://geopy.readthedocs.io/en/1.10.0/
python是否有任何其他方式转换为NAD27?
感谢您阅读
我有一个包含6列坐标对的数据框:度数|分钟|秒(对于经度和纬度)。这就是所谓的NAD83格式。我想将它们转换为仅有2列十进制格式的新数据帧,即NAD27。Python地理空间坐标格式转换
我通常使用的库,geopy几乎支持所有格式,所以实际上并没有专门的转换函数。我在这里查看文档以确保: https://geopy.readthedocs.io/en/1.10.0/
python是否有任何其他方式转换为NAD27?
感谢您阅读
我们假设你的数据帧df
包含列lonD
,lonM
,lonS
,latD
,latM
和latS
。 然后在内部使用geopandas
,shapely
和pyproj
。
import geopandas as gpd
import numpy as np
from shapely.geometry import Point
def dms_to_dec(d, m, s):
sign = np.sign(d)
return d + sign * m/60 + sign * s/3600
points = df.apply(lambda row: Point(dms_to_dec(*row[['lonD', 'lonM', 'lonS']]),
dms_to_dec(*row[['latD', 'latM', 'latS']])),
axis=1)
gdf_nad83 = gpd.GeoDataFrame(df, geometry=points, crs={'init': 'EPSG:4269'})
gdf_nad27 = gdf_nad83.to_crs({'init': 'EPSG:4267'})
哇从头开始转换,你看起来很容易!谢谢,让我试试看。 –
尝试通过pip进行匀称安装时,我总是收到错误。这很奇怪。我将看到关于查找.whl文件并以这种方式进行安装。 –
茶杯,身材匀称,gdal/ogr绝对不是最便利的套餐。使用Anaconda通常使它更容易,我建议尝试一下。 –
您确定要进行NAD83-> NAD27转换,或只是希望将DMS转换为十进制表示吗?一个数据(NAD)确定了坐标应该表示的方式(也就是十进制或DMS)。 –
另外,您确定NAD83或NAD27数据是您想使用的数据吗?更典型的选择是GPS所使用的WGS84。 –
我80%确定我需要NAD27,我必须通过其他几个库检查他们接受的内容。到目前为止,似乎NAD27是要走的路。 –