Как преобразовать координаты между различными системами координат с помощью JMapProjLib, Proj4j или Proj4js?

Я создаю приложение для Android (с Java), которое будет считывать координаты SWEREF99 TM из файла и преобразовывать их в координаты WGS84 (long-lat) и в противоположном направлении. Для этого я собираюсь использовать JMapProjLib, Proj4j или Proj4js (библиотека JavaScript, доступ к которой я собираюсь получить с помощью Java. ScriptEngine).

Проблема в том, что я не могу понять, как использовать библиотеки, из-за очень маленькой документации...
Я пробовал JMapProjLib -JavaLibrary, но это не дает мне правильный результат, и я также пытался использовать Proj4js 2.3.3, но я даже не могу заставить работать упомянутый позже...

Код JavaScript (и немного HTML), который я сейчас использую, с Proj4js 2.3.3 (в настоящее время я пробую этот сценарий только в файле HTML, поэтому в браузере должно отображаться всплывающее сообщение "Готово!", Когда преобразование сделано):

<!DOCTYPE html>
<html>
<head>
    <title>Proj4js Testing</title>
</head>
<body onload="convertCoordinates()">
    <script type"text/javascript" src="proj4js.js"></script>
    <script type="text/javascript">
        // Convert coordinates
        function convertCoordinates() 
            // Define the target projection (SWEREF99 TM)
            var targetProjection = "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";

            // Convert the WGS84 coordinates Lon: 15 and Lat: 55 to SWEREF99 TM coordinates
            proj4(targetProjection, [15, 55]);

            // Just show an alert message telling that the code has executed properly
            alert("Done!");
        }
    </script>
</body>
</html>

Java-код, который я пытаюсь (с JMapProjLib):

/**
 * Convert a long-lat coordinate to a SWEREF99 TM coordinate.
 * 
 * @param longLatCoordinate The long-lat coordinate to convert.
 * 
 * @return The converted SWEREF99 TM coordinate.
 */
public static SWEREF99TMCoordinate longLatToSWEREF99TM(LongLatCoordinate longLatCoordinate) {
    // Create a new SWEREF99 TM projection
    Projection projection = ProjectionFactory.fromPROJ4Specification(new String[] {
            "+proj=tmerc",
            "+zone=33",
            "+ellps=GRS80",
            "+towgs84=0,0,0,0,0,0,0",
            "+units=m",
            "+no_defs"
    });

    // Convert the LongLatCoordinate to a Point2D.Double
    Point2D.Double longLatPoint = new Point2D.Double(longLatCoordinate.getLongitude(), longLatCoordinate.getLatitude());
    // Get the location as a SWEREF99 TM Point2D.Double
    Point2D.Double sweref99TMPoint = projection.transform(longLatPoint, new Point2D.Double());
    // COnvert the location to a SWEREF99TMCoordinate
    SWEREF99TMCoordinate sweref99TMCoordinate = new SWEREF99TMCoordinate(sweref99TMPoint.x, sweref99TMPoint.y);

    // Return the projected coordinate
    return sweref99TMCoordinate;
}

Библиотека JMapProjLib, на которую ссылается мой проект Java, состоит из содержимого папки src/com/jhlabs/map а также src/coordsys/ в git-репозитории, скомпилированном в .jar файл, используя Eclipse, мной.

Поскольку библиотека JavaScript Proj4js выглядит для меня более "хорошо сделанной", я бы предпочел использовать ее в сочетании с Java ScriptEngine так что сейчас мне действительно нужна какая-то документация или кто-то, кто может мне это объяснить.

1 ответ

Решение

Вы можете проверить этот репозиторий и извлечь то, что вам нужно:

https://github.com/dsegerss/Sonardrone/tree/master/src/org/sonardrone/proj/positions

Другие вопросы по тегам