Страница 1 из 1

Буфер с выпрямленными углами

Добавлено: 24 май 2012, 09:25
Филиппов Владислав
Доброго дня.
Строю буфер с опцией "Выпрямить внешние углы" v.buffer -s --overwrite --verbose input=error@PERMANENT output=buffer type=area distance=100

Если без этой опции, то буфер нормальный.
А с опцией вот что:
buffer_grass.png
картинка
buffer_grass.png (90.17 КБ) 11269 просмотров
buffer_grass1.png
buffer_grass1.png (14.36 КБ) 11265 просмотров
розовые - исходные полигоны
серое - буфер

вот сами исходные данные
data.zip
исходный шейп
(150.27 КБ) 444 скачивания

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 09:41
rhot
Ошибки топологии в исходных данных есть?

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 09:55
Филиппов Владислав
Сначала я обработал шейп-файл в ArcTollbox инструментами Repair geometry и Integrate.

Построение топологии для векторного слоя <road_zu>...
Регистрируются примитивы...
358 примитивов зарегистрировано
12559 узлов зарегистрировано
Построение полигонов...
196 полигонов построено
184 островов создано
Назначаются острова...
Назначаются центроиды...
Количество узлов: 346
Количество примитивов: 358
Количество точек: 0
Количество линий: 0
Количество границ: 202
Количество центроидов: 156
Количество полигонов: 196
Количество островов: 184
Количество полигонов без центроидов: 40

потом добавил центроиды соответствующей командой

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 10:41
rhot
Покажите вывод v.build -e

Например, у меня:

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

v.build -e map=v_tax error=e_tax --v
Building topology for vector map <v_tax@L5_20100815>...
Registering primitives...
488284 primitives registered
3176232 vertices registered
Building areas...
 100%
133790 areas built
1559 isles built
Attaching islands...
 100%
Attaching centroids...
 100%
Topology was built
Number of nodes: 225266
Number of primitives: 488284
Number of points: 0
Number of lines: 0
Number of boundaries: 357497
Number of centroids: 130787
Number of areas: 133790
Number of isles: 1559
WARNING: Number of duplicate centroids: 6
Checking for topological errors...
 100%
Intersections: 0
WARNING: Number of redundant holes: 1
Building topology for vector map <e_tax@L5_20100815>...
Registering primitives...
3016 primitives registered
26163 vertices registered
Building areas...
 100%
3009 areas built
2999 isles built
Attaching islands...
 100%
Attaching centroids...
 100%
Topology was built
Number of nodes: 3001
Number of primitives: 3016
Number of points: 0
Number of lines: 0
Number of boundaries: 3010
Number of centroids: 6
Number of areas: 3009
Number of isles: 2999
WARNING: Number of incorrect boundaries: 1
WARNING: Number of centroids outside area: 1
На рисунке - пример вектора ошибок топологии, полученного с помощью v.build

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 11:11
Филиппов Владислав
я прошу прошения ибо профан я, но что за ключ такой -e? не могу я найти.
вот что написал GRASS - Извините, флаг <e> неверен
v.build у меня такой v.build --overwrite --verbose map=road_zu@PERMANENT error=error@PERMANENT

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

(Thu May 24 15:00:10 2012)                                                      
v.build --overwrite --verbose map=road_zu@PERMANENT error=error@PERMANENT       
Построение топологии для векторного слоя  <road_zu>...
Регистрируются примитивы...
358 примитивов зарегистрировано
12559 узлов зарегистрировано
Построение полигонов...
196 полигонов построено
184 островов создано
Назначаются острова...
Назначаются центроиды...
Топология построена
Количество узлов: 346
Количество примитивов: 358
Количество точек: 0
Количество линий: 0
Количество границ: 202
Количество центроидов: 156
Количество полигонов: 196
Количество островов: 184
Количество полигонов без центроидов: 40

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 11:22
rhot
Упс... в версии 6.4.* такой функционал (ключ -е) не реализован.

Тем не менее, что на карте error@PERMANENT? Ошибки есть?

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 11:28
Филиппов Владислав
есть

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

екторный слой <error> уже существует и будет перезаписан
Построение топологии для векторного слоя  <error>...
Регистрируются примитивы...
40 примитивов зарегистрировано
473 узлов зарегистрировано
Построение полигонов...
40 полигонов построено
39 островов создано
Назначаются острова...
Назначаются центроиды...
Топология построена
Количество узлов: 39
Количество примитивов: 40
Количество точек: 0
Количество линий: 0
Количество границ: 40
Количество центроидов: 0
Количество полигонов: 40
Количество островов: 39
Количество полигонов без центроидов: 40
(Thu May 24 15:00:11 2012) Операция завершена (0 sec)    
buffer.png
buffer.png (6.52 КБ) 11237 просмотров
чёрным показан слой с ошибками

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 11:31
rhot
Думаю, всё-таки из-за ошибок топологии v.buffer с ключом -s работает некорректно .

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 12:10
Филиппов Владислав
чё делать-то?
:?

Re: Буфер с выпрямленными углами

Добавлено: 24 май 2012, 12:12
rhot
Я бы попробовал исправить ошибки топологии через v.clean

Re: Буфер с выпрямленными углами

Добавлено: 25 май 2012, 06:41
Филиппов Владислав
Проблема решена, но не полностью :)
Использовал OpenJUMP Version 1.5.1 stable rev.2721. (JTS 1.12.0)
JTS rulezz!
Углы у буфера выпрямлены.
buffer1.png
buffer1.png (54.52 КБ) 11190 просмотров

Re: Буфер с выпрямленными углами

Добавлено: 30 май 2012, 08:14
Александр Мурый
Протестировал данные -- никаких заметных ошибок топологии там нет. Тщательно протестировал v.buffer -- с опцией "-s" точно баг. Постараюсь накатать баг-репорт.