Как преобразовать координату из WGS84 в координату в проекции с помощью PROJ.4? - PullRequest
9 голосов
/ 18 марта 2010

У меня есть GPS-координата в WGS84, которую я хочу преобразовать в координату проекции карты в SWEREF99 TM, используя PROJ.4 в Java или Proj4js в JavaScript.

Трудно найти документацию для PROJ.4 и как ее использовать. Если у вас есть хорошая ссылка, пожалуйста, оставьте ее как комментарий.

Параметры PROJ.4 для SWEREF99 TM : +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

Я пытался использовать библиотеку Java PROJ.4 для преобразования Lat: 55° 00’ N, Long: 12° 45’ E и пытался использовать этот код:

String[] proj4_w = new String[] {
 "+proj=utm",
 "+zone=33",
 "+ellps=GRS80",
 "+towgs84=0,0,0,0,0,0,0",
 "+units=m",
 "+no_defs"
};

Projection proj = ProjectionFactory.fromPROJ4Specification(proj4_w);  

Point2D.Double testLatLng = new Point2D.Double(55.0000, 12.7500);
Point2D.Double testProjec = proj.transform(testLatLng, new Point2D.Double());

Это дает мне точку Point2D.Double[5197915.86288144, 1822635.9083898761], но я должен быть N: 6097106.672, E: 356083.438 Что я делаю не так? и какой метод и параметры я должен использовать вместо этого?

Правильные значения взяты из Lantmäteriet .

Я не уверен, что proj.transform(testLatLng, new Point2D.Double()); является правильным методом для использования.

1 Ответ

3 голосов
/ 18 марта 2010

55 - это широта или долгота?

РЕДАКТИРОВАТЬ: кажется, что вы должны просто поменять lat и long параметры.

EDIT2: т.е.

 Point2D.Double testLatLng = new Point2D.Double(12.7500, 55.0000); 
...