проекция преобразования java из EPSG: 900913 в EPSG: 4326

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

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


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


person Community    schedule 07.02.2010    source источник
comment
Какой документ? Можете дать прямую ссылку?   -  person John Feminella    schedule 07.02.2010


Ответы (6)


Восхитительный Globe Applet на платформе Джерри Хакстейбл страница, которую вы процитировали, действительно написана на 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.

person trashgod    schedule 07.02.2010
comment
Не видел раньше апплета Globe - очень приятно. - person geographika; 18.02.2010

Другой вариант - использовать библиотеку OpenSource GIS Java 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/

person geographika    schedule 18.02.2010
comment
Geotools - это сложный, но очень, очень мощный инструмент - мы используем его в моей работе, среди прочего, для преобразования координат и проекций. - person Art Doler; 18.02.2010
comment
GeoTools - это LGPL, что запрещено в моей компании. - person Jamie; 13.01.2018

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 .

person disrvptor    schedule 16.05.2011

Я понимаю, что это было почти 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
comment
спасибо приятель, поискал по всему Интернету, и это мне очень помогло! ваше здоровье - person Rafael Paz; 10.02.2019

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

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

person pxp    schedule 23.04.2012
comment
Некоторый код был бы хорош в том, как его использовать. - person mico; 15.12.2015
comment
Взгляните на этот пример . Простое руководство по javascript можно найти здесь: proj4js - person pxp; 07.01.2016

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

http://sis.apache.org/

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

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

person keesp    schedule 09.07.2018