Аналитика
http://www.geosystema.net/forum/

Плохо работает вырезание дырок
http://www.geosystema.net/forum/viewtopic.php?f=5&t=50
Страница 1 из 3

Автор:  Slawa [ 06 апр 2005 14:33 ]
Заголовок сообщения:  Плохо работает вырезание дырок

Плохо работает "сложный полигон" (вырезание дырок). Работает нормально только один первый раз (можно много "дырок"), если из этой площади вырезать еще одну "дырку", получается какая-то ерунда.

Автор:  Dmitriy Fedorov [ 06 апр 2005 20:39 ]
Заголовок сообщения: 

Вообще, существует довольно много проблем со сложными полигонами. При работе с закладкой Правка-Объединить или Пересечение можно насмотреться всякого. :)
Особенно огорчительно наблюдать за тем что происходит, если знаешь как должно быть - на примере того же MapInfo или ArcView.
Алгоритмы там наверняка не тривиальные нужны, но.. надо что-то делать!

Автор:  Sergey Oleynik [ 07 апр 2005 15:37 ]
Заголовок сообщения: 

Присылайте примеры исходных данных. Будем разбираться.

Автор:  Slawa [ 08 апр 2005 18:44 ]
Заголовок сообщения: 

Сергей.Послал Вам на почту сайта пример "вырезать_3-й_объект.dmf". Два обекта уже вырезаны из пашни за один раз командой "сложный полигон" и все хорошо. Надо из пашни вырезать 3-й_объект. Нужно чтобы "пашня" осталась "пашней", в ней появилась дырка от третьего объекта,чтобы две имеющиеся дырки на пашне не исчезли, чтобы 3-й_объект остался объектом, не исчез и не изменился.

Автор:  Sergey Oleynik [ 08 апр 2005 19:47 ]
Заголовок сообщения: 

Отличный пример! Проблема исправлена.

Автор:  Dmitriy Fedorov [ 08 апр 2005 20:47 ]
Заголовок сообщения: 

Slawa писал(а):
Послал Вам на почту сайта пример "вырезать_3-й_объект.dmf".


К сожалению не вижу примера, чтобы присоединиться к тестированию.
Но могу предложить свой, и полагаю, что до полного избавления от проблем еще далеко.

(пример отослан на адрес admin@refland.kiev.ua)

Проблемы возникают, если в процессе объединения двух обычных - не вложеных в друг друга! - полигонов теряется внутренний полигон.

Кроме этого, было бы желательно, в случае, если полигоны никак между собой не пересекаются и не соприкасаются, они тоже не терялись, а объединялись. Т.е. срабатывало бы по принципу кнопки Объединить (цепочка).

Автор:  Dmitriy Fedorov [ 10 апр 2005 20:41 ]
Заголовок сообщения: 

Еще один пример работы со сложными полигонами.
http://www.geosystema.com/temp/Combined_Poligons_2.dmf

Так должно быть - это не моё личное желание, именно так работает в ГИС типа MapInfo. Да и литература, насколько я помню, трактует объединение и пересечение именно таким образом.

Кроме того, если полигоны не пересекаются, то должны просто объединяться в сложный - для команды Объединить.
Для команды Пересечение, я полагаю, не должно происходить ничего (т.е. пустое пересечение).

Возможно ваша идея, как разработчиков, была несколько иной. Какой?

Автор:  Sergey Oleynik [ 11 апр 2005 10:21 ]
Заголовок сообщения: 

С объединением разобрались и все исправили.

В пересечении тоже кое-что подправили, но насчет вашего примера есть большие сомнения.

По логике, пересечение 2-х полигонов, это та их часть которая одновременно принадлежит и первому и второму.
Значит пересечение 3-х полигонов, это часть, которая принадлежит всем трем! Для вашего случая - пустой полигон.

Автор:  Slawa [ 11 апр 2005 15:52 ]
Заголовок сообщения: 

Писали 8 апреля "Sergey Oleynik"Проблема исправлена.

Скачал сегодня программу......... Проблема осталась.
"вырезать_3-й_объект.dmf"----не вырезает, как надо

Автор:  Sergey Oleynik [ 11 апр 2005 16:24 ]
Заголовок сообщения: 

Здесь ваш пример и результат, полученный новой версией:
http://www.geosystema.com/temp/3-d_object.dmf

Если там что-то не так, то сообщите что именно.
А если все так, то убедитесь, что вырезали именно той версией, которую скачали :)
(Напоминаю, что помечать нужно только внешний контур. Внутренние программа найдет сама.)

Автор:  Dmitriy Fedorov [ 11 апр 2005 18:37 ]
Заголовок сообщения: 

Sergey Oleynik писал(а):
По логике, пересечение 2-х полигонов, это та их часть которая одновременно принадлежит и первому и второму.
Значит пересечение 3-х полигонов, это часть, которая принадлежит всем трем! Для вашего случая - пустой полигон.


Озадачился такой постановкой вопроса.
Проштудирую матчасть и вернусь. :)

Автор:  Dmitriy Fedorov [ 11 апр 2005 22:14 ]
Заголовок сообщения: 

С Пересечением всё верно. Заработался. :)
(Вышла некоторая путаница с командой обрезки по шаблону из MapInfo.)

В целом всё работает, если четко представлять себе нюансы использования. Однако проблемы остаются. Команда не универсальна и привязана к частным случаям. Но уже сейчас спасла мне массу времени в работе.
(Пример Combined_Poligons_3.dmf)

Автор:  Slawa [ 12 апр 2005 18:29 ]
Заголовок сообщения: 

Извиняюсь, действительно в соответствии с Вашим "(Напоминаю, что помечать нужно только внешний контур. Внутренние программа найдет сама.)" все нормально.

Но,иногда, мы пользуемся Ващей программой от 01.11.02 и там имеется возможность наравне с предыдущей, помечать внешний контур и контур объекта и будет вырезан только этот объект и ничего другого, и объект никуда не исчезнет. Что, инной раз очень удобно.

Автор:  Павел Корыстин [ 25 май 2005 15:46 ]
Заголовок сообщения: 

Sergey Oleynik писал(а):
(Напоминаю, что помечать нужно только внешний контур. Внутренние программа найдет сама.)


вот это по-моему напрасно. Излишняя самомтоятельность программы часто приводит к путанице. Но это мое личное мнение.

Нашел ошибку при вырезании ПОМЕЧЕННОЙ второй (3-й, 4-й....) дырки:
Вырезаемый объект в этом случае исчезает, а исходный внешний сохраняется. А должно быть наоборот (исходный заменяется продырявленным, а вырезаемый сохраняется)

Напоминаю, что ошибка проявляется только в случае если исходный объект уже с дырками, а выезаемый помечен.

Где-то видимо перепутали "+" и "-" :)

Автор:  Павел Корыстин [ 25 май 2005 16:20 ]
Заголовок сообщения: 

Sergey Oleynik писал(а):
С объединением разобрались и все исправили.


:?: :?: :?:
А что собственно исправили?
Дырки по прежнему исчезают при объединении.
Непересекающиеся полигоны по прежнему не объединяются.

Страница 1 из 3 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/