zoukankan      html  css  js  c++  java
  • 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:mapeijing.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,我目前只应用于一个多边形的外边界,至于多个多边形的地图(好像上海、浙江是这样的吧??),没有试过,不知道效果,大家也可以试一试

  • 相关阅读:
    python_day10 线程
    python_day9 回调函数
    python_day9 进程池
    python_day9 共享数据
    python-day9 队列
    python_day9 其他方法和属性
    python_day9 多进程socket
    原生js实现ajax 发送post请求/原生JS封装Ajax插件(同域、jsonp跨域)
    css设置时父元素随子元素margin值移动
    zepto默认的webkit和zepto不兼容
  • 原文地址:https://www.cnblogs.com/gisalameda/p/5220727.html
Copyright © 2011-2022 走看看