SASGIS - SAS.Планета
View Issue Details
0001834SAS.Планета[All Projects] Хотелкаpublic25-02-2013 09:0518-05-2015 15:28
Fetser 
zed 
normalminorhave not tried
resolvedfixed 
WindowsXPSP3
121010 
150915150915 
0001834: Объединять несколько полигонов в одну метку
Довольно часто приходится иметь дело с объектами в виде нескольких полигонов. И хочется иметь возможность соединить их в одну метку с одним названием и одинаковыми описаниями.
В случае разных описаний брать описание от первого полигона.
No tags attached.
related to 0000526closed vasketsov SACS.Планета Обновление карты под группой полигонов 
related to 0002457resolved vdemidov SAS.Планета Обновление карты под группой полигонов 
related to 0001877resolved zed SAS.Планета Логические функции при работе с полигонами 
jpg 77_all.jpg (281,296) 02-03-2013 11:47
http://www.sasgis.org/mantis/file_download.php?file_id=1296&type=bug
zip Multipolygon.zip (518) 11-03-2013 16:28
http://www.sasgis.org/mantis/file_download.php?file_id=1307&type=bug
Issue History
25-02-2013 09:05FetserNew Issue
25-02-2013 18:08vasketsovNote Added: 0010640
26-02-2013 04:54FetserNote Added: 0010643
26-02-2013 06:31FetserNote Added: 0010644
26-02-2013 07:04vdemidovNote Added: 0010645
26-02-2013 07:37TolikSummaryХочется иметь возможность объеденять несколько полигонов в одну метку => Объединять несколько полигонов в одну метку
26-02-2013 07:42vasketsovNote Added: 0010646
26-02-2013 08:20FetserNote Added: 0010647
26-02-2013 19:16vdemidovStatusnew => confirmed
26-02-2013 19:16vdemidovTarget Version => 27xxxx
02-03-2013 10:43FetserNote Added: 0010763
02-03-2013 11:11vasketsovNote Added: 0010766
02-03-2013 11:13vasketsovNote Edited: 0010766bug_revision_view_page.php?bugnote_id=10766#r5209
02-03-2013 11:26FetserNote Added: 0010768
02-03-2013 11:46vasketsovNote Added: 0010769
02-03-2013 11:47vasketsovFile Added: 77_all.jpg
02-03-2013 11:49FetserNote Added: 0010770
02-03-2013 11:54vasketsovNote Added: 0010771
02-03-2013 11:55vasketsovNote Added: 0010772
02-03-2013 11:55FetserNote Added: 0010773
02-03-2013 11:59FetserNote Edited: 0010773bug_revision_view_page.php?bugnote_id=10773#r5211
02-03-2013 12:05FetserNote Added: 0010774
05-03-2013 12:36FetserNote Added: 0010804
05-03-2013 12:47vasketsovNote Added: 0010805
11-03-2013 16:28FetserNote Added: 0010863
11-03-2013 16:28FetserFile Added: Multipolygon.zip
24-04-2013 18:03vasketsovNote Added: 0011194
24-04-2013 18:09vasketsovNote Edited: 0011194bug_revision_view_page.php?bugnote_id=11194#r5330
25-04-2013 07:58FetserNote Added: 0011202
25-04-2013 11:06vasketsovNote Added: 0011215
25-04-2013 11:08vasketsovRelationship addedrelated to 0000526
25-04-2013 11:20FetserNote Added: 0011221
25-04-2013 11:24vasketsovNote Added: 0011223
25-04-2013 11:26vasketsovNote Added: 0011224
25-04-2013 11:29FetserNote Added: 0011225
11-07-2014 08:49zedRelationship addedrelated to 0002457
07-03-2015 08:07rsuanNote Added: 0015344
07-03-2015 08:30rsuanNote Edited: 0015344bug_revision_view_page.php?bugnote_id=15344#r6432
07-03-2015 10:20zedNote Added: 0015345
07-03-2015 17:47rsuanNote Added: 0015348
07-03-2015 18:19zedNote Added: 0015349
25-04-2015 11:12zedRelationship addedrelated to 0001877
08-05-2015 15:56zedNote Added: 0015871
08-05-2015 15:56zedStatusconfirmed => feedback
18-05-2015 11:17FetserNote Added: 0015940
18-05-2015 11:17FetserStatusfeedback => new
18-05-2015 11:25zedStatusnew => resolved
18-05-2015 11:25zedFixed in Version => 150915
18-05-2015 11:25zedResolutionopen => fixed
18-05-2015 11:25zedAssigned To => zed
18-05-2015 11:26zedTarget Version27xxxx => 150915
18-05-2015 15:28vasketsovNote Added: 0015941

Notes
(0010640)
vasketsov   
25-02-2013 18:08   
Как предполагается выбирать метки (полигоны, полилинии) для объединения?
Типа все выделенные полигоны в конкретной категории (к первому дописываем куски контуров из остальных того же типа, остальные удаляем), или как-то иначе?
(0010643)
Fetser   
26-02-2013 04:54   
>все выделенные полигоны в конкретной категории (к первому дописываем куски контуров из остальных того же типа, остальные удаляем)

Вполне красивое решение. Поскольку сейчас приходится создавать подкатегорию и в неё помешать все полигоны имеющие отношение к определённой зоне, у всех полигонов одно название и одно описание. Выделение нужных из подкатегории нужно пока нет возможности адекватно работать с дырками. То есть будет возможность сделать две метки: одна это все внешними контура, а другая все дырки.
(0010644)
Fetser   
26-02-2013 06:31   
В случае реализации данной хотелки несколько сопутствующих вопросов:
1 если из менеджера меток "Перейти к выделенному объекту на карте отобразятся все полигоны? Хотелось бы чтобы все.
2 При наведении мышкой на один из полигонов метки будет всплывать общее описание? которое надо будет писать один раз, Если изначально описания не было. Хотелось бы один раз и отображалось для всех.
3 При получении информации о свойствах метки ( а.в менеджере меток б.при контекстом меню по ПКМ на карте)площадь и периметр, количество точек - будут суммарные всех полигонов? Хотелось бы всех.
(0010645)
vdemidov   
26-02-2013 07:04   
1. Все
2. Для всех
3. Суммарные
Все предусмотрено и сделано уже очень давно.
(0010646)
vasketsov   
26-02-2013 07:42   
>Если изначально описания не было
Если у метки-"акцептора" нет описания - вполне логично сделать, чтобы залетело первое непустое из убиваемых меток-"доноров".
В любом случае это получится ОДНА метка (пусть и сложная), и у неё будет ОДНО описание, и показываться она будет ОДНА ВСЯ.

>То есть будет возможность сделать две метки: одна это все внешними контура, а другая все дырки
Обращаю внимание на такой факт, что нельзя в общем случае собрать в один мультиполигон все внешние контуры, а в другой - все дырки. Ну то есть собрать-то можно, но в результате последующего применения мультидырки к мультиполигону может получиться совсем не то, что было бы, если бы дырки как и положено были привязаны каждая к своему внешнему контуру. Поэтому с такими "сборками" надо аккуратнее.
(0010647)
Fetser   
26-02-2013 08:20   
>Поэтому с такими "сборками" надо аккуратнее.
Понятно. Оригиналы буду хранить до тех пор пока появится полноценная поддержка дырок
(0010763)
Fetser   
02-03-2013 10:43   
Я конечно верю, что в SASпланете может в одной метке быть несколько полигонов.
А кто нибуть может привести пример KMZ с несколькими не пересекающимися полигонами, которые при импорте станут одной меткой?
(0010766)
vasketsov   
02-03-2013 11:11   
(edited on: 02-03-2013 11:13)
В росреестре есть такие области. Например Якутия (см. число контуров в информации о метке). У Ярославской области есть эксклав в Вологодской (соответственно Вологодская имеет ярославский анклав) чуть выше Тутаева. У Москвы есть эксклавы.

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

Все они (в смысле, каждый такой) импортируются сейчас как ОДНА метка.
То что они не kmz, а импортируются из формы поиска снимков или с росреестра, ввдить в заблуждение не должно, логика там одна на всех общая.

(0010768)
Fetser   
02-03-2013 11:26   
Попробовал грузить с росрееста всё что вы предложили. Грузятся по одному полигону. Например Москва, если грузить с росреетра, то зеленоград не грузится его надо грузить отдельно то-есть второй меткой. А это тоже регион 77 Тоесть полностью загрузить 77 регион одной меткой не получается.
(0010769)
vasketsov   
02-03-2013 11:46   
А на метке что написано? Это квартал? Крупный квартал? Округ?
В информации о метке сколько контуров упомянуто?
Ща картинку приаттачу после "операции с выделенной областью" над полигоном 77.
(0010770)
Fetser   
02-03-2013 11:49   
Категория: Новая категория
Имя: 77
Количество частей: 1
Количество точек: 9276
Периметр: 593 км 764,44 м
Площадь: 2501,98 км2

value:77
displayFieldName:Идентификатор
OBJECTID:3025
Ключ СФ:177
Идентификатор:77
Кадастровый номер:77
Наименование:Московский городской
Аннотация:77
Число КР:23
Число КК:3143
Число ЗУ:218599
ACTUAL_DATE:12/29/2012
X центра:4185908.2714
Y центра:7507402.9322
Экстент - X мин.:4096905.9159
Экстент - X макс.:4226519.3993
Экстент - Y мин.:7389517.7859
Экстент - Y макс.:7562647.3065
geometryType:esriGeometryPolygon
spatialReference:102100
(0010771)
vasketsov   
02-03-2013 11:54   
Хм. Перегенерил полигон - изменилась инфа о метке:
Категория: Росреестр Округа
Имя: 77
Количество частей: 5
Количество точек: 12472
Периметр: 730 км 841.37 м
Площадь: 2569.42 км2
Впрочем 10-й район всё равно есть, что-то другое отвалилось, возможно дырки.
(0010772)
vasketsov   
02-03-2013 11:55   
Возможно если в ini-щку добавить

[VectorItemsFactory]
AllowMultiParts=1

то полегчает.
(0010773)
Fetser   
02-03-2013 11:55   
(edited on: 02-03-2013 11:59)
Попробовал на разных типах меток при SQL получился из нескольких полигонах при SML только по одному

>[VectorItemsFactory]
 AllowMultiParts=1

При метках в формате SML по прежнему по одному полигону

(0010774)
Fetser   
02-03-2013 12:05   
Если мультиполигон экспортировать в KMZ, а потом обратно импортировать то между полигонами появляются соединительные линии, что конечно некрасиво.
(0010804)
Fetser   
05-03-2013 12:36   
Господа программисты может кто подскажет как временный вариант сделать объединение полигонов в один мультполигон.
Идея простая поиск и замена по тексту KML
</Polygon>.*<Polygon> поменять на </Polygon>\\n<Polygon>
</description> поменять на </description>\\n<MultiGeometry>
</Placemark> поменять на </MultiGeometry>\\n</Placemark>

текстовой редактор меняет на ура. А вот собрать бат файл который управляет консольным Fart чтобы он подобное проделывал не получается. Проблема именно в том что </Polygon>.*<Polygon> содержит несколько строк. Вторая и третья замены проблем не вызывают.
(0010805)
vasketsov   
05-03-2013 12:47   
>содержит несколько строк
видимо надо какой-то параметр указать, чтобы шаблон через перенос строки ходил. типа /s или как-то так.
(0010863)
Fetser   
11-03-2013 16:28   
Для тех кому надо прямо сейчас объединять полигоны в мультиполигон вложил скрипт который это делает. Порядок действий такой.
1 открыть любое количество KML (содержащих отдельные полигоны) в программе AkelPad
2 запустить скрипт
3 сохранить всё

в результате в каждом kml 1 мультиполигон, дырки удалены.
(0011194)
vasketsov   
24-04-2013 18:03   
(edited on: 24-04-2013 18:09)
В ночнушке SACS должно опубликоваться не окончательное, но всё же решение проблемы. По ПКМ в допоперациях - создание области выделения по видимым полигонам для категории метки, на которой вызвано контекстное меню. Создать метку можно из формы операций с выделенной областью. А можно и не создавать, так как возможно надо просто запустить экспорт и т.п., и можно обойтись и без метки.

Неокончательность решения связана с недостаточной оптимальностью (мягко говоря, а если прямо сказать - там полный отстой) работы итератора тайлов по таким вот полученным мультиполигонам. Хотелка 0001894.

(0011202)
Fetser   
25-04-2013 07:58   
Конечно многоходовое получилось решение, но это гораздо лучше чем ничего. И результат очень хороший.
И получилось что выполнена хотелка 0000526: Обновление карты под группой полигонов
(0011215)
vasketsov   
25-04-2013 11:06   
>многоходовое получилось решение
В смысле, что надо сначала метки в одну категорию слить? )))
Это не окончательное решение. Это отдельное упрощение для случая, когда метки ужЕ в одной категории, например для обновления гугла это будет работать, или для подготовленного экспорта в jnx или ещё в аналогичной ситуации. В общем случае этого недостаточно (вернее это неудобно).

>выполнена хотелка 0000526: Обновление карты под группой полигонов
Ну если забить на проблему, описанную в хотелке 0001894, и если есть лишний час чтобы подождать кривоногий и хромой итератор тайлов по сильно разнесённым мультиполигонам - то да )))
(0011221)
Fetser   
25-04-2013 11:20   
>В смысле, что надо сначала метки в одну категорию слить? )))
Имеем полигоны в одной категории, нужно получить один сумарный полигон.

Одноходовое я так подразумевал - в менеджере меток выделил несколько нужный меток с полигонами, куда-то нажал, и появилась новая метка с суммарным полигоном (возможно исходные удалились) имя и описание от первого.

а сейчас надо сделать видимыми нужные, на одну нажать и через ПКМ создать выделение, затем его сохранить, затем импортировать, при этом потеряв и имя и описание всех полигонов.
(0011223)
vasketsov   
25-04-2013 11:24   
>нужно получить один сумарный полигон
Ну да, так не очень удобно.
Это решение - когда один суммарный отдельный полигон делать не надо, а сразу надо качнуть всю категорию.
(0011224)
vasketsov   
25-04-2013 11:26   
>затем его сохранить, затем импортировать
Нет, сразу из формы запуска скачки создаётся новая метка.
(0011225)
Fetser   
25-04-2013 11:29   
> Нет, сразу из формы запуска скачки создаётся новая метка.
Был неправ, про эту кнопку я забыл.
(0015344)
rsuan   
07-03-2015 08:07   
(edited on: 07-03-2015 08:30)
Подтверждаю необходимость объединения полигонов в один.
> всё же решение проблемы. По ПКМ в допоперациях - создание области выделения по видимым полигонам для категории метки, на которой вызвано контекстное меню.

Не разобрался, как это делать. Две метки-полигона, в одной категории, на обеих галки. По ПКМ на категории Доп. операций нет. ПКМ по карте - Доп. операции - там только Создать полигон согласно РосРеестру. Надо как-то объединять полигоны в один, хоть и через помещение в одну категорию.
Версия 141212Stable.

(0015345)
zed   
07-03-2015 10:20   
> Не разобрался, как это делать.

Берёте Delphi и пишите код :) Тут предлагаются варианты реализации хотелки. Хотелка ещё открыта, значит в программе такого функционала ещё нет. А вы уже ищите, где такая функция.
(0015348)
rsuan   
07-03-2015 17:47   
Я же процитировал vasketsov'а, который здесь сказал что решение проблемы есть. Только у меня так не получилось.
(0015349)
zed   
07-03-2015 18:19   
А, ну так он же и написал: в ночнушке SACS. Там, может и работает.
(0015871)
zed   
08-05-2015 15:56   
Устраивает текущая реализация через Merge Polygons?
(0015940)
Fetser   
18-05-2015 11:17   
Попробовал на версии SAS.Planet.Nightly.150513.8754 объединять полигоны. Очень удобно мне понравилось.
(0015941)
vasketsov   
18-05-2015 15:28   
Ок, значит как устаканится с полигонами и их дырками, так и сопру.