Координаты округления Geotools GeometryJSON при преобразовании Geometry в GeoJSON

Здесь есть разработчики Geotools? Мы обнаружили следующее странное поведение GeometryJSON:

    Geometry geom = getGeometry();
    System.out.println(geom);

    GeometryJSON g = new GeometryJSON();
    StringWriter sw = new StringWriter();
    try {
        g.write(geom, sw);
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(sw.toString());

выходы:

POLYGON((1.1212121214354352354235235423521 2.1212121121,4.454545454545445 3.454544545454454,10.515545445454 20.1545454654664, 1.1212121214354352354235235423521 2.1212121121))

{"type":"Polygon","coordinates":[[[1.1212,2.1212],[4.4545,3.4545],[10.5155,20.1545],[1.1212,2.1212]]]}

Координаты многоугольника округлены. Это предназначено?


person chris    schedule 08.11.2013    source источник


Ответы (1)


GeometryJSON имеет конструктор, в который можно передать количество десятичных знаков.

public GeometryJSON(int decimals)

Конструктор, который вы используете, создает его экземпляр с 4 десятичными знаками. Измените свой код на:

GeometryJSON g = new GeometryJSON(15);
person Boj    schedule 09.11.2013
comment
Спасибо за ответ, но почему это реализовано именно так? Почему по умолчанию функция записи не выводит максимально доступную точность? При преобразовании наоборот, из geoJSON String в Geometry, он ведет себя наоборот (как я и ожидал): Geometry geo = g2.read (geoJSONString); выводит геометрию со всеми включенными десятичными знаками без необходимости указывать точки точности в конструкторе. - person chris; 09.11.2013
comment
Предположительно, значение по умолчанию направлено на создание меньшего размера GeoJSON. - person Boj; 10.11.2013
comment
Возможно, для меня все еще не имеет смысла, например, WKTWriter / WKTReader от vividsolutions по умолчанию имеет точность 16 знаков после запятой (полная двойная точность). - person chris; 11.11.2013
comment
16dp в градусах - это субнанометровая точность, которой, как я подозреваю, у вашего источника данных нет. - person Ian Turton; 29.02.2016