检测坐标点是否在多边形内部
在水文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;
}


