月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-09-22 35ca032a13520bcb8c8672f73172ce499d747462
修改栅格分析的范围
已修改1个文件
9 ■■■■■ 文件已修改
src/main/java/com/moon/server/service/data/RasterAnalysisService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/moon/server/service/data/RasterAnalysisService.java
@@ -188,7 +188,7 @@
     */
    public void analysisPolyline(AnalysisResultEntity entity, Dataset ds, Geometry geo, int size) {
        double[] transform = ds.GetGeoTransform();
        double xSize = ds.getRasterXSize(), ySize = ds.getRasterXSize();
        int xSize = ds.getRasterXSize(), ySize = ds.getRasterYSize();
        double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = transform[5];
        double len = 0;
@@ -225,19 +225,20 @@
     */
    public void analysisPolygon(AnalysisResultEntity entity, Dataset ds, Geometry geo) {
        double[] transform = ds.GetGeoTransform();
        int xSize = ds.getRasterXSize(), ySize = ds.getRasterYSize();
        double minX = transform[0], pixelWidth = transform[1], maxY = transform[3], pixelHeight = Math.abs(transform[5]), rotationX = transform[2], rotationY = transform[4];
        double[] env = new double[4];
        geo.GetEnvelope(env);
        int xMinPixel = Math.max((int) Math.floor((env[0] - minX) / pixelWidth), 1);
        int yMinPixel = Math.max((int) Math.floor((maxY - env[3]) / pixelHeight), 1);
        int xMaxPixel = Math.min((int) Math.floor((env[1] - minX) / pixelWidth), ds.getRasterXSize());
        int yMaxPixel = Math.min((int) Math.floor((maxY - env[2]) / pixelHeight), ds.getRasterYSize());
        int xMaxPixel = Math.min((int) Math.floor((env[1] - minX) / pixelWidth), xSize);
        int yMaxPixel = Math.min((int) Math.floor((maxY - env[2]) / pixelHeight), ySize);
        int bandCount = ds.getRasterCount();
        int width = Math.abs(xMaxPixel - xMinPixel);
        int height = Math.abs(yMaxPixel - yMinPixel);
        if (width < 1 || height < 1) {
        if (width < 1 || height < 1 || xMaxPixel < 1 || yMaxPixel < 1) {
            setError(entity, "查询范围无效");
            return;
        }