爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6534|回复: 4

[求助] idl中有判断点在区域内外的函数吗?

[复制链接]

新浪微博达人勋

发表于 2012-3-1 21:50:55 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
类似matlab的inpolygon
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-2 08:16:06 | 显示全部楼层
还没用到IDL...帮何版顶一下吧..
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-2 08:45:20 | 显示全部楼层
IDLanROI::ContainsPoints
Syntax | Return Value | Arguments | Keywords | IDLanROI::ContainsPoints |Version History

The IDLanROI::ContainsPoints function method determines whether the given data coordinates are contained within the closed polygon region.

Syntax
Result = Obj->[IDLanROI::]ContainsPoints( X [, Y [, Z]] )
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-2 13:05:05 | 显示全部楼层
非常感谢,我看看去
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-1-3 11:42:56 | 显示全部楼层
发现网上有inside函数,http://www.astro.washington.edu/ ... brary28.html?INSIDE
Viewing contents of file '../idllib/contrib/esrg_ucsb/inside.pro'

function inside,xx,yy,xpoly,ypoly,psym=psym,nbin=nbin
;+
; ROUTINE:       inside
;
; USEAGE:        RESULT = inside(xx,yy)
;                RESULT = inside(xx,yy,xpoly,ypoly,nbin=nbin)
;
; PURPOSE:       find the indices of the data quantities xx and yy which
;                lie inside a given polygonal region
;
; INPUT:
;   xx           vector of quantity x, ploted on x axis of scatter plot
;   yy           vector of quantity y, ploted on y axis of scatter plot
;
; OPTIONAL INPUT:
;
;   xpoly        vector of x coordinates vertices of polygon
;   ypoly        vector of y coordinates vertices of polygon
;
; OPTIONAL KEYWORD INPUT:
;
;   psym         if set, selected points are marked with symbol psym.
;                if psym=3, the screen is erased and a new plot is drawn.
;                this only works if the boundaries are specified
;                interactively.
;
;   nbin         number of bins with which to resolve the polygon.
;                A two element vector may be used to specify number
;                in x and y directions seperately.  (DEFAULT = 100)
;
; OUTPUT:
;                returned value = vector of array indecies inside polygon
;
; PROCEDURE:     If xpoly and ypoly are not supplied, the operator
;                specifies the region using the interactive graphics
;                procedure, TRACE.
;               
;
; EXAMPLE
;          x=randomn(seed,20,20)
;          y=sin(5*x)+.8*randomn(seed,20,20)
;          plot,x,y,psym=3
;          i1=inside(x,y,psym=4)         ; the indecies of the data points
;          i2=inside(x,y,psym=5)         ; which are inside polygonal area
;         
;
; AUTHOR:              Paul Ricchiazzi    oct92
;                      Earth Space Research Group, UCSB
;-

if n_params() eq 0 then begin
  xhelp,'inside'
  return,0
endif  

if keyword_set(xpoly) eq 0 then begin
  trace,xpoly,ypoly,/restore
  frmx=  '("xpoly= [",g8.3,'+string(n_elements(xpoly)-1)+'(",",g8.3),"]")'
  frmy=  '("ypoly= [",g8.3,'+string(n_elements(xpoly)-1)+'(",",g8.3),"]")'
  print,strcompress(string(form=frmx,xpoly),/remove_all)
  print,strcompress(string(form=frmy,ypoly),/remove_all)
endif
xmin=min(xpoly)
xmax=max(xpoly)
ymin=min(ypoly)
ymax=max(ypoly)
xdif=xmax-xmin
ydif=ymax-ymin
xmin=xmin-.1*xdif
xmax=xmax+.1*xdif
ymin=ymin-.1*ydif
ymax=ymax+.1*ydif
xdif=xmax-xmin
ydif=ymax-ymin
;
if keyword_set(nbin) eq 0 then begin
  nx=100
  ny=100
endif else begin
  if n_elements(nbin) eq 1 then begin
    nx=nbin
    ny=nbin
  endif else begin
    nx=nbin(0)
    ny=nbin(1)
  endelse
endelse
;
xxx=fix((nx-1)*((xx-xmin)/xdif > 0. < 1.))
yyy=fix((ny-1)*((yy-ymin)/ydif > 0. < 1.))
xb=(nx-1)*(xpoly-xmin)/xdif > 0. < (nx-1)
yb=(nx-1)*(ypoly-ymin)/ydif > 0. < (ny-1)
ii=polyfillv(xb,yb,nx,ny)
mm=bytarr(nx,ny)
mm(ii)=1
jj=where(mm(xxx,yyy) eq 1)
if keyword_set(psym) ne 0 then oplot,xx(jj),yy(jj),psym=psym
return,jj
end


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表