MathTransform не работает в проекте Android: тип java.awt.geom.Point2D$Double не может быть разрешен.

Мне нужно преобразовать координаты с помощью GeoTools. Мой код отлично работает в проекте Java, но когда я помещаю его в Android, я получаю сообщение об ошибке в строке mathTransform.transform(...): «Тип java.awt.geom.Point2D$Double не может быть разрешен. косвенно упоминается из необходимых файлов .class". Вот мой код:

CoordinateReferenceSystem sourceCrs = CRS.decode("EPSG:3765");
    CoordinateReferenceSystem targetCrs = CRS.decode("EPSG:4326");
    boolean lenient = true;
    double x, y;
    MathTransform mathTransform = CRS.findMathTransform(sourceCrs, targetCrs, lenient);

    parts = result.split(" ");
    String coors = "";
    for (int i = 0; i < parts.length; i += 2) {
        x = Double.parseDouble(parts[i]);
        y = Double.parseDouble(parts[i+1]);

        DirectPosition2D srcDirectPosition2D = new DirectPosition2D(sourceCrs, x, y);
        DirectPosition2D destDirectPosition2D = new DirectPosition2D();

        mathTransform.transform(srcDirectPosition2D, destDirectPosition2D);

        x = destDirectPosition2D.x;
        y = destDirectPosition2D.y;

        coors += x + " " + y + " ";
    }

    System.out.println(coors + ";");

Теперь я нашел этот вопрос, который объясняет причины этого: Не удается импортировать Java awt в Eclipse, но какое решение?


person user1418018    schedule 28.05.2014    source источник


Ответы (1)


какое будет решение?

Вы можете не использовать этот JAR, а вместо этого найти какую-нибудь другую подобную библиотеку, готовую для Android.

Или вы можете ознакомиться с предыдущими попытками заставить GeoTools работать на Android.

Или вы можете внести в проект изменения кода, которые исключат ссылки на java.awt классы, заменив этот код алгоритмами, реализованными в самой библиотеке.

person CommonsWare    schedule 28.05.2014
comment
Могу ли я преобразовать координаты по-другому, не используя GeoTools? - person user1418018; 28.05.2014
comment
@ user1418018: Да, по определению. В конце концов, GeoTools состоит из кода Java. Вы можете написать код Java. Другие люди могут писать код Java. В GeoTools нет ничего, что не могло бы быть написано вами или другими. Как вы пишете такой код, я не могу сказать, так как я специалист по Android, а не по геоинформационным системам. Тем не менее, GeoTools является открытым исходным кодом, и доступны реализации ava.awt.geom.Point2D с открытым исходным кодом, поэтому у вас есть весь код, который вам нужен. - person CommonsWare; 28.05.2014
comment
У меня тоже такая же проблема. Я пытаюсь использовать зависимость org.apache.sis.core:sis-reference:1.0 для некоторого преобразования. Но я получаю сообщение об ошибке: Супертипы следующих классов не могут быть разрешены. Убедитесь, что в пути к классам есть необходимые зависимости: класс org.apache.sis.geometry.DirectPosition2D, неразрешенные супертипы: java.awt.geom.Point2D.Double. Я также пробовал использовать geoTools. Но безрезультатно. можешь сказать чего не хватает? - person RUBY KUMARI; 15.10.2019
comment
@RUBYKUMARI: Как указывает ошибка, отсутствует java.awt.geom.Point2D.Double. У андроида такого нет. Apache SIS несовместим с Android. - person CommonsWare; 15.10.2019
comment
@CommonsWare: я пытаюсь использовать инструменты для преобразования epsg. Я получил latLon с карты и хочу преобразовать его в формат EPSG 32644. Чтобы я мог получить данные объектов с карты. Пожалуйста, предложите мне, какой инструмент я должен использовать для моего вышеуказанного требования? - person RUBY KUMARI; 16.10.2019
comment
@RUBYKUMARI: Пожалуйста, предложите мне, какой инструмент я должен использовать для моего вышеуказанного требования? -- это не моя компетенция, извините. gis.stackexchange.com может помочь. - person CommonsWare; 16.10.2019