Здравствуйте!
Есть приложение на Java c бд postgis. В бд хранится таблица с высотами формата:
широта долгота высота
38.456 45.344 200
38.456 45.345 200
38.456 45.346 210
38.456 45.347 242
.................................
Задаются две точки A и B. Требуется разбить географическую линию AB на равные отрезки с заданным шагом N, чтобы на выходе получился массив точек, равноудалённых друг от друга (за исключением последней). Реализовать можно либо на postgis либо на java.
Раньше пользовался функцией:
SELECT st_astext(ST_GeometryN(ST_LocateAlong(linem, i), 1)) AS geom FROM
(SELECT ST_AddMeasure(line.geom, 0, ST_Length(line.geom)*1000) as linem, generate_series(0, CAST((ST_Length(line.geom)*1000) AS int), 804) as i FROM
(SELECT CAST('SRID=32632;LINESTRING(38.163 44.447,38.706 44.953)' AS geometry)AS geom) as line) as linemesure;
где 38.163 44.447,38.706 44.953 - координаты отрезка, а 804 шаг. Но это функция работает с геометрическим отрезком, а не с географическим. И значения меняются в зависимости от широт.
Как разбить линию на N шагов?
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Как разбить линию на N шагов?
Уже неделю мучаюсь с этим вопросом. ST_AddMeasure работает только для геометрии
-
- Интересующийся
- Сообщения: 35
- Зарегистрирован: 29 янв 2014, 13:03
- Репутация: 0
Re: Как разбить линию на N шагов?
Никто не сталкивался с проблемой разбития линии на шаре?((
-
- Гуру
- Сообщения: 4168
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: Как разбить линию на N шагов?
уже обсуждали на форуме несколько дней назад. Какой-то дяденька сказал, что он просто интерполирует линейно долготу и широту, и это всех устраивает.OlegZhdanov писал(а):Никто не сталкивался с проблемой разбития линии на шаре?((
Правильное решение на шаре - построить большой круг, в его плоскости перейти к полярным координатам, и нарезать дугу на заданное количество частей. Потом все это вернуть на шар (а можно сразу получить точки в XYZ), и пересчитать в долготу/широту, я вроде даже формулы писал . Задачка для 7 класса ...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость