Этот пример показывает, как наложить полигоны с помощью логики набора. Функция polybool
может выполнить операции стандартного набора, такие как пересечение, объединение, вычитание и исключающее ИЛИ, на двух наборах векторов, которые могут представлять x-y или пары координаты долготы широты. Для получения дополнительной информации смотрите Логику Набора Полигона.
Чтобы проиллюстрировать эти операции присвоения, создайте 12-сторонний полигон и треугольник, который перекрывает его.
az = (0:pi/6:2*pi)'; lat1 = cos(az); lon1 = sin(az); lat2 = [0 1 -1 0]'; lon2 = [0 2 2 0]';
Постройте две формы вместе с синим и красными линиями. Вычислите перекрестный полигон с помощью polybool
и постройте его с помощью geoshow
.
figure axesm miller plotm(lat1,lon1,'b') plotm(lat2,lon2,'r') [loni,lati] = polybool('intersection',lon1,lat1,lon2,lat2); [lati loni]
ans = 5×2
0.0000 1.0000
-0.4409 0.8819
0.0000 0
0.4409 0.8819
0.0000 1.0000
geoshow(lati,loni,'DisplayType','polygon')
Постройте две формы вместе с синим и красными линиями. Вычислите полигон объединения с помощью polybool
и постройте его с помощью geoshow
.
figure axesm miller plotm(lat1,lon1,'b') plotm(lat2,lon2,'r') [lonu,latu] = polybool('union',lon1,lat1,lon2,lat2); [latu lonu]
ans = 16×2
-1.0000 2.0000
-0.4409 0.8819
-0.5000 0.8660
-0.8660 0.5000
-1.0000 0.0000
-0.8660 -0.5000
-0.5000 -0.8660
0.0000 -1.0000
0.5000 -0.8660
0.8660 -0.5000
⋮
geoshow(latu,lonu,'DisplayType','polygon')
Постройте две формы вместе с синим и красными линиями. Вычислите Исключительное - Или полигон с помощью polybool
и постройте его с помощью geoshow
.
figure axesm miller plotm(lat1,lon1,'b') plotm(lat2,lon2,'r') [lonx,latx] = polybool('xor',lon1,lat1,lon2,lat2); [latx lonx]
ans = 22×2
-1.0000 2.0000
-0.4409 0.8819
-0.5000 0.8660
-0.8660 0.5000
-1.0000 0.0000
-0.8660 -0.5000
-0.5000 -0.8660
0.0000 -1.0000
0.5000 -0.8660
0.8660 -0.5000
⋮
geoshow(latx,lonx,'DisplayType','polygon')
Постройте две формы вместе с синим и красными линиями. Вычтите Исключительное - Или треугольник от 12-стороннего полигона и постройте получившийся вогнутый полигон с помощью geoshow
.
figure axesm miller plotm(lat1,lon1,'b') plotm(lat2,lon2,'r') [lonm,latm] = polybool('minus',lon1,lat1,lon2,lat2); [latm lonm]
ans = 15×2
0.8660 0.5000
0.5000 0.8660
0.4409 0.8819
0.0000 0
-0.4409 0.8819
-0.5000 0.8660
-0.8660 0.5000
-1.0000 0.0000
-0.8660 -0.5000
-0.5000 -0.8660
⋮
geoshow(latm,lonm,'DisplayType','polygon')