Чому GRASS усуває багатокутники при використанні v.generalize?


9

Я зіткнувся з дилемою, намагаючись використовувати v.generalize для спрощення багатокутників, які за розмірами та структурою схожі на американські графства чи штати. Часто я втрачаю багатокутники з набору даних після запуску або методу спрощення, або згладжування на них. Що мене хвилює, це те, що, схоже, немає такої послідовної моделі такої поведінки. У деяких випадках один і той же набір команд, застосованих до різних наборів даних, викликає абсолютно різні результати. Як результат, я не в змозі розробити повторюваний робочий процес і неохоче починаю шукати інші засоби спрощення, що зберігають топологію. Ось приклад:

# LOAD AND CLEAN
v.in.ogr dsn=counties.shp output=county
v.build.polylines input=county output=county_polylines
v.clean input=county_polylines output=county_clean tool=bpol,rmdupl type=boundary

# SMOOTH AND GENERALIZE
v.generalize input=county_clean output=county_smooth method=sliding_averaging look_ahead=7 slide=1
v.generalize input=county_smooth output=county_general method=douglas threshold=.005

Кожен з кроків v.generalize призводить до зникнення деяких полігонів. Я хотів би зрозуміти, чому це відбувається. Це пов'язано з тим, що функції завантажуються в недостатню кількість пам'яті? Чи достатньо "мої" параметри, щоб не було можливостей виключити функції, оскільки вони відповідали якимсь критеріям геометрії? (Зверніть увагу, що я втрачаю деякі дуже великі функції.) Чи є проблема з топологією викинутих функцій, яка змушує їх стиратися? Що стосується останнього запитання, я припускаю, що build.polylines та чисті операції, які я роблю спочатку, повинні подбати про це, але я не зовсім впевнений, і я не можу знайти хороших інструкцій, які би вирішили це. Чи є?

Вдячні за будь-яку інформацію, яку можуть дати люди, особливо ті, що базуються на особистому досвіді роботи з інструментом v.generalize.

Роджер


схоже, ваші дані можуть бути в Lat lon. що буде достатньо для втрати даних із вашим порогом .005 чи можете ви переконатися, що ви використовуєте планарний cs?
Бред Несом

Я насправді задумався над цим і перепроектував проекцію Альберса на рівну площу перед тим, як запустити вище. Ось параметри проекції: USER: 100002 (+ proj = aea + lat_1 = 20 + lat_2 = -23 + lat_0 = 0 + lon_0 = 25 + x_0 = 0 + y_0 = 0 + ellps = WGS84 + одиниці = m + no_defs) . Все-таки є та сама проблема.
lagerratrobe

Мені цікаво, чому ви перетворюєте багатокутники на полілінії. Чи є конкретна причина, чому ви не просто спростите багатокутники безпосередньо?
underdark

Гаразд, я витягнув частину v.build.polylines, тому "county_clean" тепер є багатокутним шаром. Все-таки втрачайте купу областей. Спочатку я думав, що це може полегшити спрощення, але оскільки "bpol" в v.clean також розбиває багатокутники, можливо, це не має значення.
lagerratrobe

1
просто дурне питання. Ви впевнені, що втрачаєте дані за допомогою v.generalize, а не v.clean ?
simo

Відповіді:


4

Відповідь команди розробника GRASS.

"Зникнення полігонів [в версії 6.4.1] сталося тому, що згладжені межі, що порушували векторну топологію, були видалені. Після цього всі межі, які були топологічно неправильними. Межі тепер [у 6.4.2] лише згладжені / спрощені, якщо модифікація не виконує порушують векторну топологію ".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.