2016-10-19 2 views
1

Ich habe eine Liste von lat, lng Fixes in WGS84, auf denen ich Berechnungen wie Abstandsmessungen zwischen Punkt, Polygone usw. machen möchte ... Um dies zu tun, plante ich wenn ich formschön benutze, muss ich es in einen kartesischen Raum umwandeln, der nur lokal genau ist.Holen Sie sich eine kartesische Projektion genau um ein lat, lng Paar

Das Problem, das ich habe, ist, dass meine Standortbehebungen aus der ganzen Welt kommen können, also wenn ich eine für meinen Bereich optimierte feste Projektion verwende, werde ich Fehler in anderen Teilen der Welt einführen. Ist es möglich, meine eigene kartesische Projektion um ein Standortpaar herum zu definieren, abhängig von der mittleren Position der aktuellen Standortliste? Die Standortbereinigungen, auf die ich Berechnungen durchführen muss, sind immer nah beieinander, aber verschiedene Listen von Standortkorrekturen können auf der ganzen Welt verteilt werden.

Zum Beispiel: Sagen, ich bekomme 5 Fixes, auf denen ich Berechnungen durchführen muss. Dann möchte ich eine Projektion definieren, die in der Nähe dieser Fixes genau ist, da diese Korrekturen immer nur wenige km voneinander entfernt sind. Wenn ich die nächsten 5 Fixes bekomme, die in einem ganz anderen Teil der Welt sein können, würde ich gerne eine Projektion definieren, die für diese Locationfixes optimiert ist.

Wie würde ich das angehen? Es scheint, als ob pyproj (welches proj.4 verwendet, wenn ich es gut verstanden habe) eine gute Idee ist, aber ich kann den String, der zum Initialisieren einer Projektion benötigt wird, nicht verstehen, wie unten eingefügt. Kann mir jemand helfen?

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

Wie sei es mit einer lokalen UTM-Projektion Umwandlung ? Dies kann automatisiert werden, falls erforderlich. – shongololo

Antwort

2

Betrachten Sie die lokale UTM-Zone statt eines kartesisch-System. Die UTM-Zone funktioniert einfach über formschöne und pyproj und gibt Ihnen ein lokal genaues Projektionssystem, das für die Entfernung von Abfragen arbeiten:

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... 

diese Frage im Zusammenhang Siehe auf Stackoverflow: Determining UTM zone (to convert) from longitude/latitude

+0

Danke, das ist wirklich was ich brauchte! – KarelV

+0

Warnung, es gibt in UTM unregelmäßige Zonen: https://gis.stackexchange.com/questions/2561/what-was-the-rationa-for-the-non-standard-utm-zones-near-norway – bugmenot123

Verwandte Themen