2016-10-19 32 views
1

我有WGS84中經緯度修正的列表,我想在這個列表上計算點,多邊形等距離測量值......爲此,我計劃在使用形狀但是,然後,我需要將其轉換爲笛卡爾空間,這只是在本地準確。得到一個笛卡爾投影準確的左右,lng對

我的問題是我的定位可能來自世界各地,所以如果我使用針對我的區域優化的固定投影,我會在世界其他地方引入錯誤。是否有可能根據當前位置列表的平均位置定義以位置對爲中心的自己的笛卡兒投影?我需要進行計算的位置修復將始終彼此接近,但不同的位置修復列表可以遍佈全球。

例如:說我得到5個修復,我需要做計算。然後,我想定義一個在這些修復附近精確的投影,因爲這些修正總是在彼此的幾公里範圍內。當我得到接下來的5個修補程序(可能位於世界上完全不同的部分)時,我想定義一個針對這些修補程序進行優化的投影。

我該如何解決這個問題?看起來像使用pyproj(如果我理解的很好,使用proj.4)是一個好主意,但我無法理解初始化投影所需的字符串,如下所示。有人能幫我嗎?

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

如何轉換爲本地UTM投影?如果需要,這可以是自動的。 – 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... 

查看計算器此相關的問題:Determining UTM zone (to convert) from longitude/latitude

+0

謝謝,這確實是我需要的! – KarelV

+0

警告,UTM中存在不規則區域:https://gis.stackexchange.com/questions/2561/what-was-the-rationale-for-the-non-standard-utm-zones-near-norway – bugmenot123