2016-10-19 16 views
1

WGS84にlat、lngフィックスのリストがあります。ポイント、ポリゴンなどの距離測定のような計算をしたいと思います。洗練された使い方で、それからそれを局所的に正確なデカルト空間に変換する必要があります。緯度、経度のペアで正確なデカルト投影を取得する

私の問題は、私の場所の修正が世界中から来る可能性があるため、私の地域に最適化された固定投影を使用すると、世界の他の地域でエラーが発生します。現在の位置リストの平均位置に応じて、位置ペアを中心とした私自身のデカルト投影を定義することは可能ですか?計算を行うために必要なロケーションフィックスは常に互いに近いものになりますが、ロケーションフィックスのさまざまなリストを世界中に広めることができます。

たとえば、計算が必要な5つの修正があるとします。そして、これらの修正が常に数km以内にあるので、これらの修正の近傍で正確な予測を定義したいと思います。私が次の5つの修正を得たとき、これは世界の全く異なる部分にある可能性があります。これらの位置修正に最適化された投影を定義したいと思います。

私はこれにどのように対処しますか? pyproj(私がよく理解していればproj.4を使用しています)を使うのは良い考えですが、以下のように投影を初期化するのに必要な文字列を理解できません。誰か助けてくれますか?

local_proj = pyproj.Proj(r'+proj=tmerc +lat_0=51.178425 +lon_0=3.561298 +ellps=GRS80 +units=meters') 
+1

方法を? req'dなら自動化することができます。 – shongololo

答えて

2

デカルトシステムの代わりにローカルUTMゾーンを使用することを検討してください。 UTMゾーンはすっきりとpyproj経由で簡単に動作し、あなたの距離クエリのために動作しますローカルで正確な投影システムを提供します:

def convert_wgs_to_utm(lon, lat): 
    utm_band = str((math.floor((lon + 180)/6) % 60) + 1) 
    if len(utm_band) == 1: 
     utm_band = '0'+utm_band 
    if lat >= 0: 
     epsg_code = '326' + utm_band 
    else: 
     epsg_code = '327' + utm_band 
    return epsg_code 

# setup your projections 
utm_code = convert_wgs_to_utm(input_lon, input_lat) 
crs_wgs = proj.Proj(init='epsg:4326') # assuming you're using WGS84 geographic 
crs_utm = proj.Proj(init='epsg:{0}'.format(utm_code)) 

# then cast your geographic coordinates to the projected system, e.g. 
x, y = proj.transform(crs_wgs, crs_utm, input_lon, input_lat) 

# proceed with your calculations using shapely... 

stackoverflowの上でこの関連の質問を参照してください:ローカルUTM投影への変換についてDetermining UTM zone (to convert) from longitude/latitude

+0

ありがとう、それは確かに私が必要なものです! – KarelV

+0

警告、UTMには不規則なゾーンがあります:https://gis.stackexchange.com/questions/2561/what-was-the-rationale-for-the-onon-standard-utm-zones-near-norway – bugmenot123

関連する問題