Здесь показаны различия между двумя версиями данной страницы.
логические_операции_с_полигонами [13/05/2015 20:13] 109.94.188.121 |
логические_операции_с_полигонами [09/04/2021 11:59] (текущий) 176.59.16.190 pac |
||
---|---|---|---|
Строка 25: | Строка 25: | ||
{{:xor.png?200|}} | {{:xor.png?200|}} | ||
- | Кроме описанных логических операций в программе имеется ещё одна операция **Group**. Она идентична операции **ИЛИ**, но с некоторыми отличиями: если полигоны пересекаются, результатом операции **ИЛИ** является **один** новый полигон, а результатом операции **Group** являются по-прежнему **два** полигона, но объединённые в мультиполигон. Если полигоны не пересекаются, результаты обеих операций будут одинаковы. Также следует учитывать, что при всех логических операциях, кроме **Group**, происходит округление координат вершин полигонов, из-за чего полученные новые полигоны будут иметь вершины, не совсем совпадающие с вершинами исходных полигонов. В случае же операции **Group** координаты вершин никаких изменений не претерпевают, поэтому операция **Group** выполняется быстрее, чем **ИЛИ**. | + | Кроме описанных логических операций в программе имеется ещё одна операция **Group**. Визуально она идентична операции **ИЛИ**, но есть значительные отличия. |
+ | |||
+ | Если полигоны пересекаются, результатом операции **ИЛИ** будет **один** новый полигон, а результатом операции **Group** будут по-прежнему **несколько** полигонов, условно объединённых в мультиполигон. Мультиполигон может содержать любое количество полигонов. Свойства всех полигонов, входящих в мультиполигон, одинаковы. Все они одновременно выводятся на экран, используются в качестве выделенной области и т. д. | ||
+ | |||
+ | Если полигоны не пересекаются, результаты операций **ИЛИ** и **Group** будут одинаковы. | ||
+ | |||
+ | Также следует учитывать, что при всех логических операциях, кроме **Group**, происходит некоторое "округление" координат вершин полигонов, из-за чего полученные новые полигоны будут иметь вершины, не совсем совпадающие с вершинами исходных полигонов. Более того, в некоторых случаях (в основном при самопересечениях полигона) возможно образование так называемых "дырок". Дырка - это замкнутый полигон, находящийся внутри другого замкнутого полигона. //На сегодняшний день дырки программой не обрабатываются, то есть игнорируются, однако их количество считается и указывается в сообщении о завершении логической операции.// | ||
+ | |||
+ | В случае операции **Group** координаты вершин никаких изменений не претерпевают, поэтому операция **Group** выполняется быстрее, чем **ИЛИ**. В результате операции **Group** дырки не образуются. | ||
Результаты логических операций могут быть использованы для //**Операций с выделенной областью**//, то есть для загрузки, копирования, удаления, экспорта и пр. Кроме того, результаты могут быть сохранены в базе меток для последующего использования. | Результаты логических операций могут быть использованы для //**Операций с выделенной областью**//, то есть для загрузки, копирования, удаления, экспорта и пр. Кроме того, результаты могут быть сохранены в базе меток для последующего использования. | ||
Строка 72: | Строка 80: | ||
В окне сообщения о результате логической операции указывается общее количество созданных полигонов и "дырок". Если в результате логической операции получилось более одного полигона, то в базе меток они будут сохранены как мультиполигон. | В окне сообщения о результате логической операции указывается общее количество созданных полигонов и "дырок". Если в результате логической операции получилось более одного полигона, то в базе меток они будут сохранены как мультиполигон. | ||
- | ===== Практическое применение ===== | ||
- | |||
- | Покажем на примерах, как применять логические операции с полигонами. | ||
- | |||
- | Допустим, что нас интересуют снимки нескольких местностей, не соприкасающихся друг с другом. Чтобы отслеживать обновления снимков, покрывающих эти местности, раньше приходилось скачивать каждую из них отдельно. Теперь же можно объединить полигоны, описывающие все нужные местности, в мультиполигон и работать с ним (скачивать, копировать, экспортировать и т. д.) Это позволит проводить нужные действия, лишь один раз запустив процесс. Для объединения нескольких полигонов в мультиполигон следует использовать логическую операцию **Group**. | ||
- | |||
- | Допустим, что нас интересуют снимки, покрывающие только одну область, например, Рязанскую. Часто снимки попадают на две, а то и на три соседних области. Раньше приходилось отрисовывать границу снимка, проходящую по границе области, вручную. Теперь можно взять границу области, вставить её в список полигонов как **subject**, а в качестве **clip** взять границу(ы) снимка(ов) и применить логическую операцию **И**. Пример применения показан на рисунке выше. | ||
- | Допустим, что внутри полигона, описывающего Рязанскую область, есть снимок, который нужно оставить нетронутым, а всю остальную область - перезакачать. Раньше для этого пришлось бы вручную рисовать несколько полигонов. А теперь можно вставить в список границу области как **subject**, а полигон, описывающий нужный снимок - как **clip**, и применить логическую операцию **НЕ**. | + | Допустить |
+ | мы, что из нас | ||
+ | интересуют снимки, | ||
+ | покрывающие части лицевой формы | ||
- | Если есть полигон, содержимое которого нужно оставить без изменения, в то время как окружающее пространство нужно скачать, | + | а полигон, описывающий нужный снимок - как **clip**, и применить логическую операцию **НЕ**. |