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

Увеличение экстента shp

Добавлено: 15 авг 2011, 21:40
SS_Rebelious
Как я понимаю, с увеличением экстента shp существуют определённые сложности, то есть его можно увеличить до нужного размера только добавив новые объекты в нужные места, а если их потом удалить, то и экстент вернётся к прежнему размеру.

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

Есть ли идеи, как выкрутиться из этой ситуации?

P.S. Если у кого-нибудь дойдут руки, то было бы неплохо в ftools добавить возможность выбрать экстент из другого слоя при построении полигонов Вороного, а идеальным вариантом была бы возможность их построения в произвольных границах полигонов другого слоя.

Re: Увеличение экстента shp

Добавлено: 15 авг 2011, 22:21
Александр Мурый
SS_Rebelious писал(а):было бы неплохо в ftools добавить возможность выбрать экстент из другого слоя при построении полигонов Вороного, а идеальным вариантом была бы возможность их построения в произвольных границах полигонов другого слоя.
Для построения нужны данные (точки), простым увеличением экстента количество точек не увеличишь. А если так: взять точечный/линейный слой с нужным охватом --> построить по нему выпуклую оболочку --> извлечь её крайние точки --> включить эти точки в состав первого слоя с точками --> строить полигоны Вороного ?
Если слой с нужным охватом полигональный, то без выпуклой оболочки.
Делать это вручную затратно, конечно, надо как-то программно.

Re: Увеличение экстента shp

Добавлено: 15 авг 2011, 23:09
SS_Rebelious
amuriy писал(а):Для построения нужны данные (точки), простым увеличением экстента количество точек не увеличишь.
Вовсе нет. В данном случае считается, что рамка - территория на которой наблюдается явление и эта же рамка должна быть покрыта полигонами полностью, иначе возникают сложности с выполнением анализа.
amuriy писал(а):взять точечный/линейный слой с нужным охватом --> построить по нему выпуклую оболочку --> извлечь её крайние точки --> включить эти точки в состав первого слоя с точками --> строить полигоны Вороного
К сожалению, так делать нельзя, ибо полученные данные будет очень проблематично интерпретировать. Добавлять следует только реальные точки (к счастью это возможно, но придётся переделывать всю работу, проведённую на предыдущих этапах, что нежелательно).

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

Re: Увеличение экстента shp

Добавлено: 16 авг 2011, 10:50
Voltron
Блин... вы заставили меня залезть в код.

Возможности буферизовать область не достаточно? Подсчитайте соотношение экстентов точечного и полигонального слоя, задайте буферизацию и будет вам счастье.
SS_Rebelious писал(а):Если у кого-нибудь дойдут руки, то было бы неплохо в ftools добавить возможность выбрать экстент из другого слоя при построении полигонов Вороного, а идеальным вариантом была бы возможность их построения в произвольных границах полигонов другого слоя.
Про произвольные границы полигонов не совсем понял. Имеется в виду возможность использования границ выделенного полигона в качестве экстента при построении полигонов Вороного? Вообще это все реально (см. возможность буферизации), но вот дойдут ли у кого-то руки...

Re: Увеличение экстента shp

Добавлено: 16 авг 2011, 12:59
SS_Rebelious
Я думал вчера и о буферизации. Но она не позволяет точно вписать получившиеся полигоны в нужные границы: придётся делать буфер с запасом, а потом обрезать... С обрезанием в моём случае тоже не всё так просто, ибо нужно чётко понимать, как потом интерпретировать полученные результаты и вообще на каком этапе анализа нужно обрезку производить. С утра всё, кажется, встало на свои места и буферизация прокатит...

Что до предложений по усовершенствованию инструмента, то предлагаю самый простой вариант: дать пользователю выбор между буферизацией и построением в точных границах рамки, то есть добавить в диалог 4 поля: xmin, xmax, ymin, ymax (как в обрезке gdal-tools).