检测坐标点是否在多边形内部

分类:代码, 博客, 水文 标签:

水文GIS处理中,有时需要检测某个测站是否在某个流域或者区域内部,这就要用到“检测坐标点是否在多边形内部”,这个功能也经常会在Excel中检查某个坐标点是否在图表Chart某个区域中使用到,这里水文工具集给出一个经典而简洁的函数pt_in_polygon,以供参考。

函数参数:

nvert:多边形顶点坐标数目;

vertx, verty:多边形顶点坐标;

testx, testy:待检测坐标点。

int pt_in_polygon(int nvert, 
  float *vertx, float *verty, 
  float testx, float testy)
{
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i < nvert; j = i++) {
    if ( ((verty[i]>testy) != (verty[j]>testy)) &&
	 (testx < (vertx[j]-vertx[i]) 
          * (testy-verty[i]) 
          / (verty[j]-verty[i]) + vertx[i]) )
       c = !c;
  }
  return c;
}


分类:代码, 博客, 水文 标签:

发表评论

You must be logged in to post a comment.