matlab inpolygon 判斷點在多邊形內


如何判斷一個點在多邊形內部?

xv= [0 3 3 0 0]; %x坐標

yv= [0 0 3 3 0];%y坐標

x=1.5;

y=1.5;

in=inpolygon(x,y,xv,yv)

plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')

in=1;

 

 

xv= [0 3 3 0 0]; %x坐標

yv= [0 0 3 3 0];%y坐標

x=4;

y=4;

in=inpolygon(x,y,xv,yv)

plot(xv,yv,x(in),y(in),'.r',x(~in),y(~in),'.b')

in=0;

 

 

===================from 氣象家園

http://bbs.06climate.com/forum.php?mod=viewthread&tid=12340

[lon lat]=meshgrid([97:0.1:107],[21:0.1:30]);
% Z=griddata(gy_locat(:,2),gy_locat(:,3),EOF_used(:,1),lon,lat,'v4');
yunnan=shaperead('yunnan.shp');

isin=inpolygon(lon,lat,yunnan.Lon,yunnan.Lat);
Z(~isin)=NaN;

contourf(lon,lat,Z,30);
shading flat
colorbar

hold on
plot(yunnan.X,yunnan.Y,'-k','linewidth',3)
hold off

 

 

=============

http://bbs.06climate.com/forum.php?mod=viewthread&tid=13304

來論壇有段時間了,學了不少東西,今天也分享一個自己的經驗。
今天看到一個帖子matlab中地圖邊界與掩膜(去掉邊界外區域)的實現(基於shape文件)
我也來分享一個畫圖去外邊界的方法,不知道以前的帖子沒有介紹此方法的。
之前發的有個小錯,修改了一下
具體程序如下:

lon_c=69.75:0.5:140.25;
lat_c=14.75:0.5:55.25;
lon_c=ones(82,1)*lon_c;
lat_c=ones(142,1)*lat_c;
lat_c=lat_c';

basemap = shaperead('D:\map\beijing.shp');
for ii=1:size(lat_c,1)%修改這里來個循環,貌似inpolygon變量只能是向量,不能是矩陣
for jj=1:size(lat_c,2)
IN(ii,jj)= inpolygon(lon_c(ii,jj),lat_c(ii,jj),basemap.X,basemap.Y);%進行‘白化’的關鍵函數,具體可參見幫助
end
end
v(IN==0)=nan;
........
[ac ah]=contourfm(lat_c,lon_c,v);
........


對於白化用的函數inpolygon,我目前只應用於一個多邊形的外邊界,至於多個多邊形的地圖(好像上海、浙江是這樣的吧??),沒有試過,不知道效果,大家也可以試一試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM