Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java geotools如何创建覆盖网格_Java_Geotools - Fatal编程技术网

Java geotools如何创建覆盖网格

Java geotools如何创建覆盖网格,java,geotools,Java,Geotools,当每个单元为5M时,如何创建网格覆盖? 我发现: GridCoverage2D coverage = reader.read(null); // direct access DirectPosition position = new DirectPosition2D(crs, x, y); double[] sample = (double[]) coverage.evaluate(position); // assume double // res

当每个单元为5M时,如何创建网格覆盖? 我发现:

    GridCoverage2D coverage = reader.read(null);

    // direct access
    DirectPosition position = new DirectPosition2D(crs, x, y);

    double[] sample = (double[]) coverage.evaluate(position); // assume double

    // resample with the same array
    sample = coverage.evaluate(position, sample);
资料来源:


我没有找到很多关于如何在geotools上创建网格覆盖率的教程…

要创建空覆盖率,需要使用
GridCoverageFactory
create
方法之一。由于不是从现有图像构建,因此需要为光栅提供一些存储空间(这也可以保存您想要的任何初始值)。为此,您可以选择一个
float[][]
或一个。最后,您需要一个
信封
来说明覆盖范围和分辨率(否则它只是一个数字数组),我倾向于使用
参考信封
,以便知道单位等,因此,在下面的示例中,我使用了
EPSG:27700
,这是OSGB国家电网,因此我知道它以米为单位,我可以定义南部丘陵地区的某个地方的原点。通过将左下角X和Y坐标以及右上角X和Y坐标指定为
分辨率
乘以宽度和高度(加上左下角),所有数学运算都可以确保我的像素的大小为
分辨率

因此,现在保持简单,您可以执行以下操作:

    float[][] data;
    int width = 100;
    int height = 200;
    data = new float[width][height];
    int resolution = 5;
    for(int i=0;i<width;i++){
        for(int j=0;j<height;j++ ){
            data[i][j] = 0.0f;
        }
    }
    GridCoverageFactory gcf = new GridCoverageFactory();
    CoordinateReferenceSystem crs = CRS.decode("EPSG:27700");
    int llx = 500000;
    int lly = 105000;

    ReferencedEnvelope referencedEnvelope = new ReferencedEnvelope(llx, llx + (width * resolution), lly, lly + (height * resolution),
            crs);
    GridCoverage2D gc = gcf.create("name", data, referencedEnvelope);

您正在读取文件还是创建一个空文件?@IanTurton
WritableRaster raster2 = RasterFactory.createBandedRaster(java.awt.image.DataBuffer.TYPE_INT, width,
    height, 3, null);
for (int i = 0; i < width; i++) {//width...

        for (int j = 0; j < height; j++) {
                raster2.setSample(i, j, 0, rn.nextInt(200));
                raster2.setSample(i, j, 1, rn.nextInt(200));
                raster2.setSample(i, j, 2, rn.nextInt(200));
        }
}