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

Системы координат, проекции, преобразования, привязка
Ответить
presto78
Новоприбывший
Сообщения: 5
Зарегистрирован: 30 сен 2013, 09:42
Репутация: 0

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

Сообщение presto78 » 30 сен 2013, 09:50

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

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 30 сен 2013, 10:16

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

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

presto78
Новоприбывший
Сообщения: 5
Зарегистрирован: 30 сен 2013, 09:42
Репутация: 0

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

Сообщение presto78 » 30 сен 2013, 10:28

Спасибо, буду детальнее разбираться.

presto78
Новоприбывший
Сообщения: 5
Зарегистрирован: 30 сен 2013, 09:42
Репутация: 0

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

Сообщение presto78 » 30 сен 2013, 12:47

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

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 30 сен 2013, 13:06


Sergey Astakhov
Активный участник
Сообщения: 218
Зарегистрирован: 21 дек 2012, 01:57
Репутация: 52
Откуда: Питер

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

Сообщение Sergey Astakhov » 30 сен 2013, 13:57

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

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

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

presto78
Новоприбывший
Сообщения: 5
Зарегистрирован: 30 сен 2013, 09:42
Репутация: 0

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

Сообщение presto78 » 30 сен 2013, 14:09

Большое спасибо всем!

Ответить

Вернуться в «Координаты и привязка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя