Skip to content

Commit aba552e

Browse files
committed
Add raster shadedrelief command
1 parent 5c7ac12 commit aba552e

File tree

4 files changed

+75
-0
lines changed

4 files changed

+75
-0
lines changed

README.rst

+2
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,8 @@ raster divide raster --name1 topo --name2 reduce --output-format topo_new --outp
255255

256256
raster stylize --name raster --output-format raster_stylized --output-name raster_stylized
257257

258+
raster shadedrelief --name raster --output-format shaded --output-name shaded --scale 1.0 --altitude 25.0 --azimuth 35.0
259+
258260
style
259261
-----
260262
style create --params "stroke=navy stroke=width=5" --file earth_outline.sld

examples/raster_shadedrelief.txt

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
format open --name raster --input raster.tif
2+
3+
raster open --format raster --raster raster --name raster
4+
5+
format open --name shaded --input shaded.tif
6+
7+
raster shadedrelief --name raster --output-format shaded --output-name shaded --scale 1.0 --altitude 25.0 --azimuth 35.0
8+
9+
map open --name map
10+
11+
map add raster --name map --raster shaded
12+
13+
map draw --name map
14+
15+
map close --name map
16+
17+
open --file image.png

src/main/groovy/org/geoshell/raster/RasterCommands.groovy

+32
Original file line numberDiff line numberDiff line change
@@ -603,4 +603,36 @@ class RasterCommands implements CommandMarker {
603603
}
604604
}
605605

606+
@CliCommand(value = "raster shadedrelief", help = "Create a shaded relief raster")
607+
String shadedRelief(
608+
@CliOption(key = "name", mandatory = true, help = "The Raster name") RasterName name,
609+
@CliOption(key = "output-format", mandatory = true, help = "The output Format Workspace") FormatName formatName,
610+
@CliOption(key = "output-name", mandatory = false, help = "The output Raster name") String outputRasterName,
611+
@CliOption(key = "scale", mandatory = true, help = "The scale") double scale,
612+
@CliOption(key = "altitude", mandatory = true, help = "The altitude") double altitude,
613+
@CliOption(key = "azimuth", mandatory = true, help = "The azimuth") double azimuth,
614+
@CliOption(key = "resx", mandatory = false, specifiedDefaultValue = "0.5", unspecifiedDefaultValue = "0.5", help = "The x resolution") double resX,
615+
@CliOption(key = "resy", mandatory = false, specifiedDefaultValue = "0.5", unspecifiedDefaultValue = "0.5", help = "The y resolution") double resY,
616+
@CliOption(key = "zetafactory", mandatory = false, specifiedDefaultValue = "1.0", unspecifiedDefaultValue = "1.0", help = "The zeta factory") double zetaFactory,
617+
@CliOption(key = "algorithm", mandatory = false, specifiedDefaultValue = "DEFAULT", unspecifiedDefaultValue = "DEFAULT", help = "The x resolution") String algorithm
618+
) throws Exception {
619+
Raster raster = catalog.rasters[name]
620+
if (raster) {
621+
Format format = catalog.formats[formatName]
622+
if (format) {
623+
Raster shadedReliefRaster = raster.createShadedRelief(scale, altitude, azimuth, resX: resX, resY: resY, zetaFactory: zetaFactory, algorithm: algorithm)
624+
format.write(shadedReliefRaster)
625+
if (!outputRasterName) {
626+
outputRasterName = formatName.name
627+
}
628+
catalog.rasters[new RasterName(outputRasterName)] = format.read(outputRasterName)
629+
"Create shaded relief ${outputRasterName} from ${name}!"
630+
} else {
631+
"Unable to find Raster Format ${formatName}"
632+
}
633+
} else {
634+
"Unable to find Raster ${name}"
635+
}
636+
}
637+
606638
}

src/test/groovy/org/geoshell/raster/RasterCommandsTest.groovy

+24
Original file line numberDiff line numberDiff line change
@@ -485,4 +485,28 @@ class RasterCommandsTest {
485485
assertEquals(214.0, outRaster.getValue(10,10,0), 0.1)
486486
assertEquals(212.0, outRaster.getValue(30,20,0), 0.1)
487487
}
488+
489+
@Test void shadedRelief() {
490+
Catalog catalog = new Catalog()
491+
File file = new File(getClass().getClassLoader().getResource("raster.tif").toURI())
492+
Format format = Format.getFormat(file)
493+
catalog.formats[new FormatName("raster")] = format
494+
catalog.rasters[new RasterName("raster")] = catalog.formats[new FormatName("raster")].read()
495+
496+
File outFile = new File(temporaryFolder.newFolder("shaded"), "shaded.tif")
497+
Format outFormat = Format.getFormat(outFile)
498+
catalog.formats[new FormatName("shaded")] = outFormat
499+
500+
RasterCommands cmds = new RasterCommands(catalog: catalog)
501+
cmds.open(new FormatName("raster"), new RasterName("raster"), "raster")
502+
503+
String result = cmds.shadedRelief(new RasterName("raster"), new FormatName("shaded"), "shaded", 1.0, 15.0, 15.0, 0.5, 0.5, 1.0, "DEFAULT")
504+
assertEquals("Create shaded relief shaded from raster!", result)
505+
Raster outRaster = catalog.rasters[new RasterName("shaded")]
506+
assertNotNull outRaster
507+
assertEquals(67.0, outRaster.getValue(0,0,0), 0.1)
508+
assertEquals(67.0, outRaster.getValue(10,10,0), 0.1)
509+
assertEquals(1.0, outRaster.getValue(30,20,0), 0.1)
510+
}
511+
488512
}

0 commit comments

Comments
 (0)