Страница 1 из 1

API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 09:50
presto78
Добрый день!
Если ли у кого нибудь опыт использования Java библиотек opengis (geotools)? Поделитесь, пожалуйста!
Конкретно интересует - возможно ли с помощью этих библиотек производить конвертацию прямоугольных координат в/из географических для разных проекций (в частности для Yandex, Google - WGS84 на Меркатор эллипсоидный и сферический соответственно). Почитал документацию на geotools, но она крайне скудна. Формулы для пересчета для Меркатора нашел, но проблема в том, что проекции и системы координат могут меняться и хотелось бы использовать уже существующие наработки, а не изобретать собственный велосипед.

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 10:16
trir

Код: Выделить всё

import org.geotools.geometry.jts.JTS;
import org.geotools.referencing.CRS;

MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, false);
Geometry targetGeometry = JTS.transform( sourceGeometry, transform);
http://docs.geotools.org/stable/usergui ... g/crs.html
http://docs.geotools.org/stable/usergui ... rycrs.html

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 10:28
presto78
Спасибо, буду детальнее разбираться.

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 12:47
presto78
Все таки остались вопросы. Из координат в градусах (WGS84) в эллиптическую проекцию Меркатора перевел. Результат - XY в метрах. А как бы теперь смаштабировать на пиксельную систему координат, считая допустим, что разрешение экрана - это весь мир в проекции Меркатора? Каким-то образом создать свою систему координат и опять воспользоваться трансформером? Нет примера ни у кого? (По оси X я в принципе могу просто смасштабировать, получив длину проекции в метрах и получить отношение к разрешению экрана в пикселях, но по оси Y так не получится, так как высота проекции не известна - проекция по широте имеет ограничения по полюсам).

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 13:06
trir

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 13:57
Sergey Astakhov
presto78 писал(а):Каким-то образом создать свою систему координат и опять воспользоваться трансформером?
Создать свою систему координат можно через
http://docs.geotools.org/latest/javadoc ... ctory.html

Код: Выделить всё

    crs = ReferencingFactoryFinder.getCRSFactory(null).createFromWKT(wkt);
    transformTo = CRS.findMathTransform(crs, targetCrs);
Но просто для вывода это избыточно, лучше воспользоваться обычными штатными средствами (типа уже предложенного AffineTransform или банального ручного масштабирования через арифметические операции).

Re: API для пересчета координат (geotools, opengis)

Добавлено: 30 сен 2013, 14:09
presto78
Большое спасибо всем!