2017-01-24 128 views
0

我有一個包含6列座標對的數據框:度數|分鐘|秒(對於經度和緯度)。這就是所謂的NAD83格式。我想將它們轉換爲僅有2列十進制格式的新數據幀,即NAD27。Python地理空間座標格式轉換

我通常使用的庫,geopy幾乎支持所有格式,所以實際上並沒有專門的轉換函數。我在這裏查看文檔以確保: https://geopy.readthedocs.io/en/1.10.0/

python是否有任何其他方式轉換爲NAD27?

感謝您閱讀

+0

您確定要進行NAD83-> NAD27轉換,或只是希望將DMS轉換爲十進制表示嗎?一個數據(NAD)確定了座標應該表示的方式(也就是十進制或DMS)。 –

+0

另外,您確定NAD83或NAD27數據是您想使用的數據嗎?更典型的選擇是GPS所使用的WGS84。 –

+0

我80%確定我需要NAD27,我必須通過其他幾個庫檢查他們接受的內容。到目前爲止,似乎NAD27是要走的路。 –

回答

1

我們假設你的數據幀df包含列lonDlonMlonSlatDlatMlatS。 然後在內部使用geopandas,shapelypyproj

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'}) 
+0

哇從頭開始轉換,你看起來很容易!謝謝,讓我試試看。 –

+0

嘗試通過pip進行勻稱安裝時,我總是收到錯誤。這很奇怪。我將看到關於查找.whl文件並以這種方式進行安裝。 –

+0

茶杯,身材勻稱,gdal/ogr絕對不是最便利的套餐。使用Anaconda通常使它更容易,我建議嘗試一下。 –