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 class 的属性
    程序员7年和我的7点感想――我的程序人生
    LCD 调试总结 [转]
    shell sed 替换某行内容
    msm 模拟i2c使用过程分析
    高通平台USB host协议分析 之 一
    Linux文件查找命令find,xargs详述
    (翻译)Android属性系统
    内存对齐.结构体对齐
    python class 用法
  • 原文地址:https://www.cnblogs.com/gisalameda/p/5220727.html
Copyright © 2011-2022 走看看