2016-07-06 7 views
0

Мне нужно преобразовать огромное количество координат в формате ETRS89 в WGS84 Lat Long.Преобразование координат ETRS89/LCC в WGS84 Lat Long

Насколько я знаю, ETRS89 и WGS84 почти одинаковы, но имеют совершенно разные значения.

Мне нужны координаты WGS84 для карт bing.

Было бы здорово, если бы это было простое решение в C# для этой проблемы.

Спасибо большое :)

ответ

0

Первый выбор для такой трансформации является Proj4 проект. Доступно несколько портов, например. на Java (Java Proj.4), JavaScript (Proj4js), .NET (Proj4Net) и т.д.

командной строки инструмент cs2cs.exe используется для преобразования координат, то команда будет выглядеть так:

cs2cs +init=epsg:3034 +to +init=epsg:4326 {name of your text-file containing massive amount of coordinates} 

который эквивалентно

cs2cs +proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
    +to +proj=longlat +datum=WGS84 +no_defs {name of your text-file containing massive amount of coordinates} 

в случае, если вы предпочитаете C# мои личные фавориты DotSpatial.Projections и ProjApi (файл csharp-4.7.0.zip)

Пример DotSpatial:

double[] xy = new double[2]; 
xy[0] = 12345; 
xy[1] = 67890; 
double[] z = new double[1]; 
z[0] = 1; 
ProjectionInfo pStart = KnownCoordinateSystems.Projected.Europe.ETRS1989LCC; 
ProjectionInfo pEnd = KnownCoordinateSystems.Geographic.World.WGS1984; 
Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1); 

Пример с Рго-API:

var src = new Projection(@"+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"), 
var dst = new Projection(@"+proj=longlat +datum=WGS84 +no_defs")) 

double[] x = { -116, -117, -118, -119, -120, -121 }; 
double[] y = { 34, 35, 36, 37, 38, 39 }; 
double[] z = { 0, 10, 20, 30, 40, 50 }; 

Projection.Transform(src, dst, x, y); 

 Смежные вопросы

  • Нет связанных вопросов^_^