GlobCOLOUR CDR, 10-11 Jul 2006
ENVIRONMENTAL INFORMATICSGEOINFORMATION PRODUCTS BROCKMANN CONSULT
Development of DDS ToolsN. Fomferra, R. Quast, Brockmann Consult
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Purpose and Requirements
1. Visual inspection of– Mapped Level-2 DDS– Mapped Level-3 PPS, FPS– Binned Level-2 DDS– Binned Level-3 DDS, PPS,
FPS
2. Validation– Match-up of Level 2 DDS
OC data with in-situ data– Match-up of Level-2 DDS
and Level-3 DDS OC data– Statistical analysis and
report of match-up results
Binned Level-2 DDS
(4.6 km)
In-SituData
BinnedLevel-3 DDS
(4.6 km)
MappedLevel-2 DDS
(1.0 km)
Uses as reference
Relative validation of Level-3 DDS against validated Level-2 DDS
Absolute validation of Level-2 DDS against in-situ measurement data
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Status of Development1. Release 1.0
– Import of mapped and binned DDS, FPS, PPS products
– On-the-fly resampling from ISIN to Plate-Carree
– On-the-fly expansion of stored data into mean and variances
– Flag-codings and bitmask overlays enabled
– Handling of no-data values– Automatic attachment of
pins at diagnostic sites– VISAT facilities
2. JIRA issue tracking– Tracking of bugs and
feature requests– Automated generation of
release notes– Web interface
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Design Definition FileDirectory or File Description
readme.html Describes the installation, usage, build and test of the DDS tools.
changelog.html Contains the changes from version to version.
api-doc Contains the detailed design documentation for the DDS tools.
lib Contains necessary third-party libraries, currently only junit.jar
src The application source code (Java)
src-junit The unit level test code (Jave)
build.xml The Ant build script used to build and test the DDS tools.
build.properties A configuration file for the Ant build script. E.g. defines the path to the local BEAM installation.
GlobCOLOUR-DDS-Tools-1.0.0.jar The DDS tools BEAM plug-in. This JAR (Java Archive) contains the DDS tools binary code.
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Open Issues
1. Release 1.0– Which technique to use for resampling of ISIN gridded
data onto Plate-Carree?– Flag-coding specification incomplete– No-data value undefined
• Further planning– Focus on automated analysis of large amounts of data
(e.g. time series) instead of visual per-pixel inspection– Identification of use cases concerning match-up and
statistical analysis– Review of software requirements in collaboration with the
validation team– Consideration of alternative approaches: Is it favourable
to implement the match-up processing as a web service?
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Architectural Design (1)
getStartTime(): ProductData.UTCgetStopTime(): ProductData.UTCgetNumBands(): intgetBandAt(i): BandgetBand(name): BandaddBand(band:Band): voidremoveBand(band:Band): void
Product
readProductNodes(...): ProductreadBandRasterData(band:Band, …): void
<<interface>>ProductReader
DDSGranuleReader
<<factory for one>>
getFormatDescription(): StringgetFormatNames(): String[]getFileExtensions(): String[]canDecodeInput(): BooleancreateReader(input:Object): ProductReader
<<interface>>ProductReaderPlugIn
DDSGranuleReaderPlugIn
1plugIn
0..1reader
<<factory for multiple>>
addReaderPlugIn(plugIn): voidremoveReaderPlugIn(plugIn): voidsetInstance(): ProductIOPlugInManager
ProductIOPlugInManager
0..*
<<registry for multiple>>
<<added to>>
ProductIO
<<uses>>
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Architectural Design(2)
getName(): StringgetSceneRasterWidth(): intgetSceneRasterHeight(): intgetStartTime(): ProductData.UTCgetStopTime(): ProductData.UTC
Product
getGeoPos(pp:PixelPos): GeoPosgetPixelPos(gp:GeoPos): PixelPos
<<interface>>GeoCoding
getName(): StringgetDataType(): intgetNoDataValue(): doublereadPixels(…, pixels:int[]): voidreadPixels(…, pixels:float[]): void
Band0..*
bands
readProductNodes(...): ProductreadBandRasterData(band:Band, …, buffer:ProductData): void
<<interface>>ProductReader
getElem<Type>(index:int): <Type>setElem<Type>(index:int, value:<Type>): void
ProductData
ProductData.<Type>
DDSGranuleReader
MapGeoCoding
0..1reader
1product
Implements the interface of abstract ProductData class for <Type> = o Byte, o UByte, o Short, o UShort, o Int, o UInt, o Float, o Double, o UTC
<<uses>>
Implements the GeoCoding interface for a coordinate reference system and a map projection. Others exists, e.g TiePointGeoCoding, PixelGeoCoding.
<<uses>>
<<factory for>>
0..1geoCoding
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Architectural Design (3)
Client codewithin
DDS tools
product:Product
DDSGranuleReader
dispose()
ProductIO
product = readProduct(file)new
new
[for each band b]bands[b] = getBand(names[b])
processPixels (bands)
close()
readProductNodes()
addBand(band)
DDSGranuleReaderPlugIn
canDecodeInput()
BROCKMANN CONSULT
GlobCOLOUR CDR, 10-11 Jul 2006
GlobCOLOUR DDS Tools
Architectural Design (4)
Band
Client codewithin
DDS tools Product
[for all bands b]readPixels(bands[b], …,pixels)
getProductReader()
DDSGranuleReader
readRasterData(data)
data:ProductData.<Type>
new
setElem<Type>(i,pixel)
[for all pixels i in the raster]pixels[i] = getElemFloat(i)
read from NetCDF file
processPixels(bands)
processPixels(pixels)
data = createCompatibleRasterData()
scale()