проекция Java преобразования EPSG: 900913 в EPSG: 4326 - PullRequest
2 голосов
/ 07 февраля 2010

в открытых слоях мы можем просто преобразовать EPSG: 900913 в EPSG: 4326
Я ищу Java-библиотеку, которая может это сделать.
здесь я нашел это, http://www.jhlabs.com/java/maps/proj/index.html

но документ находится на с ++
Я не знаю, как его использовать.


Если кто-нибудь знает,
пожалуйста, отправьте простой код

Ответы [ 6 ]

2 голосов
/ 13 января 2018

Я понимаю, что это почти 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;
}
2 голосов
/ 17 мая 2011

Geotools , вероятно, лучшая библиотека для этого. Взглянув на их учебник CRS , он выглядит тривиальным для преобразования из одной системы координат в другую, используя:

CoordinateReferenceSystem dataCRS = schema.getCoordinateReferenceSystem();
CoordinateReferenceSystem worldCRS = map.getCoordinateReferenceSystem();
boolean lenient = true; // allow for some error due to different datums
MathTransform transform = CRS.findMathTransform(dataCRS, worldCRS, lenient);

Ваши ссылки CRS могут быть получены с помощью:

CRS.decode("EPSG:4326")

По Javadoc .

2 голосов
/ 18 февраля 2010

Другой вариант - использовать Java-библиотеку OpenSource ГИС GeoTools:

http://geotools.org/

Подробности о классах проекции здесь:

http://geotools.org/javadocs/org/geotools/referencing/operation/projection/MapProjection.html

Определения проекций во многих различных форматах для всех проекций можно загрузить с:

http://www.spatialreference.org/

например. http://www.spatialreference.org/ref/epsg/4326/

2 голосов
/ 08 февраля 2010

Восхитительный Джерри Хакстейбл Глобус-апплет на указанной вами странице действительно написан на Java, как видно из загрузки . Класс com.jhlabs.map.proj.ProjectionFactory содержит метод с именем fromPROJ4Specification(), который возвращает com.jhlabs.map.proj.Projection. Вы можете использовать параметры EPSG: 900913 , указанные на сайте OpenLayers , для создания желаемой проекции.

900913:
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0
+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs

Вам также следует взглянуть на OpenMap .

1 голос
/ 24 апреля 2012

Также интересно: Proj4j

Proj4J - это библиотека Java для преобразования координат точек из одной географической системы координат в другую, включая преобразования данных. Ядром этой библиотеки является порт библиотеки PROJ.4 C.

0 голосов
/ 09 июля 2018

Похоже, новый проект Apache, который может быть более современной альтернативой для проектов с открытым исходным кодом, упомянутых выше:

http://sis.apache.org/

Представляет собой альтернативу для proj4:

https://sis.apache.org/book/en/developer-guide.html

...