write method

  1. @override
void write(
  1. String path
)
override

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.");
  }
}