Skip to content

Instantly share code, notes, and snippets.

@leearmstrong
Created February 13, 2020 14:14
Show Gist options
  • Save leearmstrong/f0110cf486068a962abb78089c72fa9c to your computer and use it in GitHub Desktop.
Save leearmstrong/f0110cf486068a962abb78089c72fa9c to your computer and use it in GitHub Desktop.
func GenerateESRIASC(data *input) {
f, err := os.Create("/tmp/esri.asc")
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
yBottom := (data.FirstRowStartLine - data.IntervalBetweenColumns*(float32(data.NumberOfRowsInField)-1.0))
f.WriteString(fmt.Sprintf("ncols %d\n", data.NumberOfColumsInField))
f.WriteString(fmt.Sprintf("nrows %d\n", data.NumberOfRowsInField))
f.WriteString(fmt.Sprintf("xllcenter %f\n", data.FirstPointFirstRow))
f.WriteString(fmt.Sprintf("yllcenter %f\n", yBottom))
f.WriteString(fmt.Sprintf("cellsize %f\n", data.IntervalBetweenColumns))
f.WriteString(fmt.Sprintf("nodata_value %f\n", data.Float32MissingDataValue))
log.Println(data.NumberOfRowsInField, "rows")
log.Println(data.NumberOfColumsInField, "columns")
log.Println(data.IntervalBetweenColumns, "pixel size")
numRows := int(data.NumberOfRowsInField)
numCols := int(data.NumberOfColumsInField)
for i := 0; i < numRows; i++ {
for j := 0; j < numCols-1; j++ {
f.WriteString(fmt.Sprintf("%d ", data.DataBlock[i*numCols+j]))
}
f.WriteString(fmt.Sprintf("%d\n", data.DataBlock[i*numCols+numCols-1]))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment