最近项目原因需要用到克里金和等直线算法 ,在网上找了许久都不太满意,不是话说到一半就是 示例不正确,要不就是没库等等,捣鼓许久弄出来,把示例代码发出来分享一下。
首先了说明一下为什么要使用到克里金算法 因为气象方面很多气象站点零散的分布在地图各个位置,在这零散的位置上就可能会产生区域覆盖不完整的情况,这个时候就需要做插值覆盖。而等直线的意义跟插值业务一样,因为在地图上热力图的绘制需要大量格点数据来支撑绘制所以,就会出现在绘制热力图的时候光是下载格点数据都是很大的,这个取决于格点密度,密度越大那么数据量就会很大,在网络传输过程中光是下载这个数据都需要花费很多时间,更别说绘制了。所以等值线数据就尤为的重要。例如:
根据区域划分成勾勒出线的坐标,其内的值都是等值范围这样的数据就不会很多,当然等值范围越精确数据也会递增。
这次示例使用到的库wContour和geo,因为代码不复杂 加上代码也有注释,所以我就不细致解释下去了直接上demo
package kriginDemo.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONObject;
import com.alibaba.fastjson.JSON;
import krigingDemo.util.CommonMethod;
import krigingDemo.util.KrigingUtil;
import wContour.Contour;
import wContour.Interpolate;
import wContour.Global.Border;
import wContour.Global.PointD;
import wContour.Global.PolyLine;
import wContour.Global.Polygon;
public class Test {