Как приблизить векторный контур от растра высоты?

У меня есть карта высот, хранящаяся в виде растра. Я хотел бы поместить гладкую "векторную" кривую в контуры постоянной высоты. В моем приложении данные на самом деле являются географическими возвышенностями, но проблема может быть обобщена на любую функцию двух переменных.

Я могу создать еще один растровый слой с сглаженными контурными линиями и использовать его для ввода в процесс привязки к вектору, если это помогает.

Этот вопрос похож, но я ищу бесплатную библиотеку, которую я могу использовать в своем приложении Java, или объяснение алгоритма я (не -тематик) может реализовать себя. Кроме того, в моем случае, я уже нашел все "края" , о которых я забочусь о &mdash, мне просто нужно их векторизовать.

Другой вопрос касается моего, но плакат никогда не возвращался, чтобы объяснить, как он выполнил заключительный шаг, который является той частью, которую мне не хватает.

Ответ 1

Вероятно, вы хотите поместиться в закрытые сплайны безье (кривые).

Существует страница с апплетом Java, которая делает такую ​​установку. Взгляните на их (uncommented, bleh) PSegment.java

Если это не делает работу достаточно хорошо, Установка кривых B-Spline в облака точек на Квадратичная минимизация расстояний должна быть чрезмерной для выполнения задачи.

Для получения дополнительной информации, Google (Scholar) ищет такие вещи, как "b-сплайн-фитинг" и "закрытый сплайз безье".

Ответ 2

MATLAB делает это с контурным графиком: см. contour функция - она ​​выводит данные контурной линии из сетки f ( x, y). Я мало знаю об алгоритме, который они используют (у них есть страница эквивалент Octave.

существует a тезис о построении контура и Страница CodeProject на основе тезисов.

Ответ 3

Я использую GDAL. И, на мой взгляд, вы, вероятно, не хотите создавать сплайны Bézier, что добавляет сложности. Довольно короткие сегменты линии.

Единственная проблема заключается в том, что вам придется создавать контуры во время подготовки данных, а не в вашем приложении Java.

Здесь отображается карта с некоторыми контурами, созданными из данные высоты USGS с использованием GDAL:

enter image description here