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

  • 相关阅读:
    Mysql如何修改unique key
    centos 编译 安装 protobuf
    EasyNetQ简单使用
    微信发送模板消息
    Python删除开头空格
    代码积累-Common
    sql With(NoLock),With(ReadPast)
    webform 使用log4net配置
    log4net.dll添加报错
    js-小数计算问题
  • 原文地址:https://www.cnblogs.com/gisalameda/p/5220727.html
Copyright © 2011-2022 走看看