write method
Write a raster to file.
Implementation
@override
void write(String path) {
if (writeMode) {
if (isEsriAsc) {
var outFile = File(path);
if (outFile.existsSync()) {
outFile.deleteSync();
}
var header = """
ncols ${_geoInfo!.cols}
nrows ${_geoInfo!.rows}
xllcorner ${_geoInfo!.worldEnvelope.getMinX()}
yllcorner ${_geoInfo!.worldEnvelope.getMinY()}
cellsize ${_geoInfo!.xRes}
NODATA_value ${_geoInfo!.noValue}\n""";
var raFile = outFile.openSync(mode: FileMode.append);
try {
raFile.writeStringSync(header);
dataList.forEach((row) {
row.forEach((n) {
raFile.writeStringSync(n.toString());
raFile.writeStringSync(" ");
});
raFile.writeStringSync("\n");
});
} finally {
raFile.close();
}
// write prj if available
if (geoInfo!.prjWkt != null) {
var prjPath = GeoimageUtils.getPrjFile(path, alsoIfNotExists: true);
if (prjPath != null) {
var prjFile = File(prjPath);
prjFile.writeAsStringSync(geoInfo!.prjWkt!);
}
}
} else {
throw UnsupportedError(
"Only writing of esri asc grids is supported right now.");
}
} else {
throw StateError("This raster is not in write mode.");
}
}