Як графічні програмісти мають справу з вершинами візуалізації, які не змінюють зображення?


10

Отже, назва трохи незручна. Я дам інформацію, а потім поставте своє запитання.

Передумови : Я працюю як веб- розробник GIS- додатків, але у вільний час я граю з наданням карти та вдосконаленням форматів обміну даними. Я працюю лише в 2D просторі.

Одне цікаве питання, з яким я стикався, полягає в тому, що коли ви рендеруєте багатокутник у невеликому масштабі (масштабний вихід), багато вершин є зайвими. Надзвичайний випадок може полягати в тому, що у вас є багатокутник з 500 000 вершин, який займає лише один піксель. Якщо ви надсилаєте ці дані до браузера, було б доцільно опустити ~ 499,999 цих вершин. Одним із способів ми цього домагаємося - рендерінг зображення на сервері та надсилання його як PNG: voila, це точка. Однак іноді ми хочемо, щоб дані надсилалися до браузера, де їх можна рендерувати за допомогою SVG (або полотна, або webgl), щоб вони могли бути інтерактивними.

Проблема : виявляється, що, використовуючи сучасні набори географічних даних, перевантажити здібності SVG дуже просто. Прагнучи впоратися з цими обмеженнями, я намагаюся розібратися, як візуально зменшити без втрат набір даних для заданого масштабу та масштабу карти (і, якщо потрібно, для відомої ширини та висоти пікселів карти).

Мені вдалося значно зменшити розмір даних просто за допомогою алгоритму Дугласа-Пейкера , і я вважаю, що мені вдалося змусити його зберегти вірність багатокутників у межах одного пікселя. На жаль, Дуглас-Пюкер не зберігає топологію, тому він змінив спосіб надання меж між полігонами. Я не міг легко знайти інші алгоритми, щоб спробувати і адаптуватися до своєї мети, але я не маю великого тла CS / алгоритму і, можливо, не розпізнаю їх, якби бачив їх.


1
Google для "Топологічно стійкого Дугласа-Пекера", і ви знайдете посилання на тези до деяких статей. На жаль, ви повинні заплатити за всі статті, які я бачив.
Док Браун

@DocBrown Дякую! Навіть у Questia є безкоштовна пробна версія.
canisrufus

Відповіді:


3

Що ви шукаєте, так і є 2d level of detail algorithms.

Про це в Google є багато документально підтвердженого, якщо ви шукаєте ці виділені терміни.

Це запитання про stackoverflow містить інформацію, яку ви шукаєте на 2D рівні деталізації візуалізації.


+1 за дуже доречний словник. Схоже, я фактично використовую підхід на рівні деталізації, але мені потрібен алгоритм спрощення багатокутника, який відповідає моїм потребам. Знайшов акуратний огляд для 3d-зображень. Я вважаю, що я фактично розробив відповідну стратегію спрощення, хоча не встиг її кодувати.
canisrufus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.