Я понимаю, что это было почти 8 лет назад, но, возможно, это поможет другому бесстрашному путешественнику.
Нам пришлось отказаться от GeoTools, потому что это LGPL, что запрещено нашими юристами.
Я просто переместил наш код на proj4j (https://trac.osgeo.org/proj4j/ ). Не похоже, что он активно разрабатывается, но он работает для наших простых нужд. Кроме того, лицензия - Apache 2.0, что гораздо более либерально.
Он доступен через Maven, что упрощает работу: http://search.maven.org/#artifactdetails%7Corg.osgeo%7Cproj4j%7C0.1.0%7Cjar.
Он не поддерживает напрямую EPSG: 900913, поскольку на самом деле это не официальный стандарт. Он поддерживает EPSG: 3857, что одно и то же.
Вот фрагмент, который делает то, что вы ищете:
public Point2D.Double transform(Point2D.Double point, String sourceCRS, String targetCRS) {
Point2D.Double destPosition = new Point2D.Double();
CRSFactory factory = new CRSFactory();
CoordinateReferenceSystem srcCrs = factory.createFromName(sourceCRS); // Use "EPSG:3857" here instead of 900913.
CoordinateReferenceSystem destCrs = factory.createFromName(targetCRS); // Use "EPSG:4326 here.
CoordinateTransform transform = new CoordinateTransformFactory().createTransform(srcCrs, destCrs);
ProjCoordinate srcCoord = new ProjCoordinate(point.getX(), point.getY());
ProjCoordinate destCoord = new ProjCoordinate();
transform.transform(srcCoord, destCoord);
destPosition.setLocation(destCoord.x, destCoord.y);
return destPosition;
}
person
Jamie
schedule
12.01.2018