Неправильная LineString рисуется с помощью Geotools - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь нарисовать линию на земле, используя геоинструменты, но вместо рассмотрения кратчайшего расстояния между двумя точками при рисовании линии, нарисованная линия lineString берет длинный маршрут вокруг Земли и дает неправильные результаты. Когда я рисую та же самая линия на картах Google, полученный маршрут рисуется правильно. Черно-белая карта использует геоинструменты, а другая - из карт Google. Может кто-нибудь указать мне, где я иду неправильно PS: координаты в журнале, широта

 Coordinate[] myLineString = new Coordinate[]{
                new Coordinate( -110.0,20.0),
                new Coordinate( 143.41666666666666,41.583333333333336 ),
                new Coordinate(  140.8,41.65)
        };
    Hints hints = new Hints(Hints.CRS, DefaultGeographicCRS.WGS84);
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(hints);
    LineString lineString = geometryFactory.createLineString(coordinates);

enter image description here

enter image description here

1 Ответ

1 голос
/ 20 марта 2020

Простой ответ заключается в том, что вы используете EPSG: 4326 с разрывом в +/- 180 градусов. Таким образом, ваша линия представлена ​​«очевидным» способом.

Решение состоит в том, чтобы нарисовать вашу карту в другой проекции, такой как PD C Mercator (EPSG: 3832), которая даст вам карта типа:

enter image description here

Как вы можете видеть, есть несколько проблем с фоновой картой, когда Гренландия и Антарктида пересекают новый разрыв на краях карты .

...