2017-01-24 19 views
0

私は、座標のペアを6列含むデータフレームを持っています:度|分|秒(緯度と経度の両方)。これはNAD83形式と呼ばれます。私はこれらをNAD27と呼ばれる10進形式の2列のみの新しいデータフレームに変換したいと考えています。Python地理空間座標フォーマット変換

私が通常使用するライブラリであるgeopyは実質的にあらゆるフォーマットをサポートしているので、実際には専用の変換機能はありません。私はここに書かれていることを確認しました。 https://geopy.readthedocs.io/en/1.10.0/

pythonにはNAD27に変換する手段がありますか?

+0

NAD83 - > NAD27変換を実行するか、DMSを10進表現に変換したいですか?データム(NAD)は、座標の表現方法(つまり、10進数または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

Teah、shapelyとgdal/ogrは間違いなく設定するのに最も便利なパッケージではありません。 Anacondaを使用すると、通常はもっと簡単になります。試してみることをおすすめします。 –

関連する問題