exponenta event banner

Расчет пересечений векторных данных

В этом примере показано, как вычислить пересечения произвольных векторных данных, таких как полилинии или многоугольники, с помощью команды polyxpoly функция.

Создайте два пересекающихся многоугольника.

x1 = [10 20 40 50 50 40 20 10 10];
y1 = [20 10 10 20 40 50 50 40 20];

x2 = [30 60 30 0 30];
y2 = [40 50 70 60 40];

Постройте график полигонов.

mapshow(x1,y1)
mapshow(x2,y2)

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите точки пересечения этих двух многоугольников. polyxpoly команда находит пересекающиеся сегменты и выполняет интерполяцию для поиска точек пересечения.

[xint,yint] = polyxpoly(x1,y1,x2,y2)
xint = 2×1

    45
    18

yint = 2×1

    45
    48

Отображение точек пересечения. Если расстояние между точками велико, может быть некоторая разница между точками пересечения, вычисленными polyxpoly и пересечения, показанные на карте. Это является результатом разницы между прямыми линиями в незапроектированных и спроецированных координатах. Аналогично, могут быть различия между polyxpoly результат и пересечения, предполагающие большие окружности или линии румба между точками.

mapshow(xint,yint,'Displaytype','point','Marker','o')

Figure contains an axes. The axes contains 3 objects of type line.