Это ограничение является обычно следствием того, как система хранит
связанную с графикой табличную информацию, впрочем, техническое
объяснение не подходит для данного курса, и часто причины не так уж важны
для пользователя. В качестве выхода из этой ситуации можно предложить
создание очень маленьких буферов (выглядящих как точки на выходной
карте),
которые становятся крошечными полигонами. Это покрытие можно
сохранить, и точки будут представляться его микрополигонами.
Наложение "линия в полигоне" заключается в соотнесении координат
концевых и промежуточных точек линии с границей полигона с целью
определения принадлежности этих точек полигону, то есть, по сути оно
сводится к выполнению нескольких точечных наложений. Дополнительным
моментом является то, что линия может пересекать границу полигона. В
простейшем случае можно считать, что если хотя бы одна точка линии
принадлежит полигону, то и вся линия принадлежит ему. Но более
корректным подходом является определение точек пересечения линии с
границей полигона и создание в них узлов, что позволит разделить атрибуты
внутренних и внешних по отношению к полигону частей линии. Например,
если лесозащитная полоса как линейный объект пересекает границу между
пашней и лугом, мы сможем сказать, какая часть полосы принадлежит
каждой изобластей, а также создать таблицу, показывающую это отношение.
Как видите, векторные наложения "точка в полигоне" и "линия в
полигоне" являются вопросом не только графического отношения объектов,
но и отношения атрибутов. В конце концов, объекты карты представляют
часть реального мира.
Векторное
наложение
полигонов
Для векторного наложения полигонов, подобно случаю "линия в
полигоне", программа должна определить точки пересечения границ
полигонов одного покрытия с границами полигонов другого покрытия.
Эти точки пересечения становятся узлами, и программа отслеживает
передачу атрибутов в новое покрытие.
Поскольку многие векторные ГИС связаны с СУБД, не удивительно, что
булева логика, используемая в запросах к БД, используется также и для
пространственных запросов. На самом деле булево наложение
(Boolean
overlay)
является широко распространенным подходом. Его легко понять,
особенно если вы уже знакомы с операциями над множествами. Эти
операции часто иллюстрируются так называемыми диаграммами Венна
(Рисунок
12.7).
В случае булева векторного наложения мы сравниваем не сами атрибуты,
а пространство, занимаемое каждым из двух наборов атрибутов. Допустим,
у нас есть простое покрытие, имеющее только два типа полигонов