地理空间栅格数据有一定的数据结构和编码规则,这点在各种教材中都写的很详细。本文暂且从简单的栅格数据入手,调用GDAL的有关方法,创建一个GeoTiff格式的栅格数据。以便后期需要使用时,能快速上手。
二、实现思路首先获取驱动Driver,从驱动Driver创建栅格数据集,然后将提前定义的仿射变换参数、空间参考配置到数据集中,最后将含有业务数据数组写入波段Band中,存入磁盘、释放资源。
三、程序代码package com.myself.raster;
import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconst;
import org.gdal.osr.SpatialReference;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class RasterWriteDemo {
public static void main(String[] args) {
//注册
gdal.AllRegister();
SpatialReference spatialReference= new SpatialReference();
spatialReference.SetWellKnownGeogCS("WGS84");
//spatialReference.importFromEPSG(4326);
//dataset.SetProjection("GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AXIS["Latitude",NORTH],AXIS["Longitude",EAST],AUTHORITY["EPSG","4326"]]");
//定义仿射转换参数
double[] gt = { 85.0143599999999964, 0.1, 0.0, 17.7554, 0.0, -0.1 };
//指定文件路径
String filePath = "F:\raster\Demo_1.tif";
//定义横向像素个数
int xSize = 27;
//定义纵向像素个数
int ySize = 28;
//获取驱动
Driver driver = gdal.GetDriverByName("GTiff");
//获取数据集,一般来说需要指定数据类型,默认为Byte - 8位3无符号整型
Dataset dataset = driver.Create(filePath, xSize, ySize, 2,gdalconst.GDT_Float64);
//配置信息存入dataset中
dataset.SetGeoTransform(gt);
dataset.SetSpatialRef(spatialReference);
int bandcount = dataset.getRasterCount();
for(int i = 0;i
注意事项都写在注释里了。
四、使用QGIS查看
使用GQIS打开创建的栅格文件,如图所示。
查看属性:
2021-10-06 有待完善。



