面状换的射线算法已经放在github上:
目录
一、常见的面转换算法
面状矢量数据是由闭合的线段组成的,在向栅格数据转换的过程中,可以先把边界做线状栅格化(线状栅格化的方法在算法基础)(五)中已经实现),剩下的工作其实就是填充面状要素。所以面状要素的栅格化又称为多边形填充,即在矢量表达的多边形边界内部的所有栅格点上赋以相应的多边形编码。
1)内部点扩散算法
该算法由每个多边形的一个内部点(也叫种子点)开始,向其八个方向的领点扩散,判断各个新加入的点是否在多边形的边界上,如果是在多边形的边界上,则该新加入的点不作为种子点,否则把非边界的领点作为新的种子点与原有种子点一起进行新的扩散运算。一般来说,由于扩散算法比较复杂,并且在一定的栅格精度上,如果复杂图形的同一多边形的两条边界落在同一个或相邻的两个栅格内,会造成多边形不连通,这样一个种子点就不能完成填充
2)射线算法
射线算法就是通过判断数据栅格点是否在多边形内部,如果在内,则填充,在外则不填充。至于怎么判断,在之前的《GIS算法基础(二)计算几何基础(中)》已经对判断点是否在多边形内的两种算法进行了实现。
二、射线算法的实现
算法的基本思想就是通过计算每个栅格点是否在多边形内部,然后决定是否填充。
算法步骤:
①对多边形边界进行栅格化(线状要素的栅格化--