Плохо работает “сложный полигон” (вырезание дырок). Работает нормально только один первый раз (можно много “дырок”), если из этой площади вырезать еще одну “дырку”, получается какая-то ерунда.
Вообще, существует довольно много проблем со сложными полигонами. При работе с закладкой Правка-Объединить или Пересечение можно насмотреться всякого. ![]()
Особенно огорчительно наблюдать за тем что происходит, если знаешь как должно быть - на примере того же MapInfo или ArcView.
Алгоритмы там наверняка не тривиальные нужны, но.. надо что-то делать!
Присылайте примеры исходных данных. Будем разбираться.
Сергей.Послал Вам на почту сайта пример “вырезать_3-й_объект.dmf”. Два обекта уже вырезаны из пашни за один раз командой “сложный полигон” и все хорошо. Надо из пашни вырезать 3-й_объект. Нужно чтобы “пашня” осталась “пашней”, в ней появилась дырка от третьего объекта,чтобы две имеющиеся дырки на пашне не исчезли, чтобы 3-й_объект остался объектом, не исчез и не изменился.
Отличный пример! Проблема исправлена.
К сожалению не вижу примера, чтобы присоединиться к тестированию.
Но могу предложить свой, и полагаю, что до полного избавления от проблем еще далеко.
(пример отослан на адрес admin@refland.kiev.ua)
Проблемы возникают, если в процессе объединения двух обычных - не вложеных в друг друга! - полигонов теряется внутренний полигон.
Кроме этого, было бы желательно, в случае, если полигоны никак между собой не пересекаются и не соприкасаются, они тоже не терялись, а объединялись. Т.е. срабатывало бы по принципу кнопки Объединить (цепочка).
Еще один пример работы со сложными полигонами.
geosystema.com/temp/Combined_Poligons_2.dmf
Так должно быть - это не моё личное желание, именно так работает в ГИС типа MapInfo. Да и литература, насколько я помню, трактует объединение и пересечение именно таким образом.
Кроме того, если полигоны не пересекаются, то должны просто объединяться в сложный - для команды Объединить.
Для команды Пересечение, я полагаю, не должно происходить ничего (т.е. пустое пересечение).
Возможно ваша идея, как разработчиков, была несколько иной. Какой?
С объединением разобрались и все исправили.
В пересечении тоже кое-что подправили, но насчет вашего примера есть большие сомнения.
По логике, пересечение 2-х полигонов, это та их часть которая одновременно принадлежит и первому и второму.
Значит пересечение 3-х полигонов, это часть, которая принадлежит всем трем! Для вашего случая - пустой полигон.
Писали 8 апреля "Sergey Oleynik"Проблема исправлена.
Скачал сегодня программу… Проблема осталась.
“вырезать_3-й_объект.dmf”----не вырезает, как надо
Здесь ваш пример и результат, полученный новой версией:
geosystema.com/temp/3-d_object.dmf
Если там что-то не так, то сообщите что именно.
А если все так, то убедитесь, что вырезали именно той версией, которую скачали ![]()
(Напоминаю, что помечать нужно только внешний контур. Внутренние программа найдет сама.)
Озадачился такой постановкой вопроса.
Проштудирую матчасть и вернусь. ![]()
С Пересечением всё верно. Заработался. ![]()
(Вышла некоторая путаница с командой обрезки по шаблону из MapInfo.)
В целом всё работает, если четко представлять себе нюансы использования. Однако проблемы остаются. Команда не универсальна и привязана к частным случаям. Но уже сейчас спасла мне массу времени в работе.
(Пример Combined_Poligons_3.dmf)
Извиняюсь, действительно в соответствии с Вашим “(Напоминаю, что помечать нужно только внешний контур. Внутренние программа найдет сама.)” все нормально.
Но,иногда, мы пользуемся Ващей программой от 01.11.02 и там имеется возможность наравне с предыдущей, помечать внешний контур и контур объекта и будет вырезан только этот объект и ничего другого, и объект никуда не исчезнет. Что, инной раз очень удобно.
вот это по-моему напрасно. Излишняя самомтоятельность программы часто приводит к путанице. Но это мое личное мнение.
Нашел ошибку при вырезании ПОМЕЧЕННОЙ второй (3-й, 4-й…) дырки:
Вырезаемый объект в этом случае исчезает, а исходный внешний сохраняется. А должно быть наоборот (исходный заменяется продырявленным, а вырезаемый сохраняется)
Напоминаю, что ошибка проявляется только в случае если исходный объект уже с дырками, а выезаемый помечен.
Где-то видимо перепутали “+” и “-” ![]()
![]()
А что собственно исправили?
Дырки по прежнему исчезают при объединении.
Непересекающиеся полигоны по прежнему не объединяются.
На тех примерах где возникали проблемы теперь все нормально:
geosystema.com/temp/Combined_Poligons_2.dmf
geosystema.com/temp/3-d_object.dmf
Присылайте свои примеры если где еще чего не правильно.
Будем исправлять дальше.
Примеры Combined_Poligons_3, 4.dmf уже отправлял. ![]()
Как учили, на help@vingeo.com.
Пока еще не работает.
Конечно, можно решить что я придираюсь, но ведь у буржуев оно как-то объединяется?!
P.S. полученный в результате объект еще и перескакивает на слой “дырки” ![]()
Проверено на geosystema.com/temp/3-d_object.dmf
Я, честно говоря, вообще ничего не понял из того что вы написали! ![]()
(и это как-то даже обидно, поскольку вы то друг друга понимаете прекрасно
)
Моя последовательность действий на этом примере такая:
- Помечаю внешний объект (пашня)
- Жму кнопку Сложный полигон на закладке Правка
В результате получаю полигон пашни уже с тремя внутренними контурами (назовем их дырками
) плюс все три внутренних контура остались в виде отдельных объектов (слой объекты).
Ну а моя такая:
- Помечаю внешний объект (пашня)
1.5) [Ctlrl] + Помечаю внутренний объект (который надо вырезать) - Жму кнопку Сложный полигон на закладке Правка
ну и сами увидите, что получится ![]()
Пункт (1.5) необходим, т.к. на практике часто необходимо вырезать не все внутренние полигоны, а некоторые из них.