Зажечь JTS WGS84 - PullRequest
       38

Зажечь JTS WGS84

0 голосов
/ 29 августа 2018

Я пытался использовать JTS в Apache Ignite в соответствии с GPS-координатами. Пока я не уверен, как или если они могли бы взаимодействовать. Например, если я вычислю расстояние между двумя геометриями, у меня будет плоское расстояние, но как бы я преобразовал его обратно в расстояние на поверхности Земли?

Для справки вот код, который я использовал, хотя я не уверен, что преобразования верны, но это не является корнем проблемы:

Coordinate coord1 = convertToRect(resultCoord.y, resultCoord.x, 0.0);
Coordinate coord2 = convertToRect(latitude, longitude, 0.0);
double dist = new GeometryFactory().createPoint(coord1).distance(new GeometryFactory().createPoint(coord2));

...

private Coordinate convertToRect(Double lat, Double lon, Double alt) {
    MathTransform ecefTransform =  org.geotools.referencing.CRS.findMathTransform(DefaultGeographicCRS.WGS84_3D, DefaultGeocentricCRS.CARTESIAN);           

    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);
    Point p = geometryFactory.createPoint(new Coordinate(lat, lon, alt));

    Geometry tp = JTS.transform(p, ecefTransform);
    return tp.getCoordinate();
}

Так, может, JTS не предназначен для геолокации на земле? В противном случае вы знаете, где я могу найти ссылки на такое использование?

Для справки используемые библиотеки:

compile 'org.opengis:geoapi:3.0.1'
compile 'org.geotools:gt-api:2.7.5'
compile 'org.geotools:gt-shapefile:2.7.5'
compile group: 'org.apache.ignite', name: 'ignite-geospatial', version: '2.5.2'

Спасибо

1 Ответ

0 голосов
/ 29 августа 2018

Если вы ищете расстояние в метрах, вы можете использовать библиотеки GeoTools GeodeticCalculator. В качестве краткости, JTS обрабатывает геометрию, а GeoTools (и другие библиотеки) предназначены для помощи в географии.

http://docs.geotools.org/stable/userguide/library/referencing/calculator.html http://docs.geotools.org/stable/javadocs/org/geotools/referencing/GeodeticCalculator.html

...