syntax = "proto3"; import "ncStream.proto"; option java_package = "ucar.nc2.ft2.coverage.remote"; option java_outer_classname = "CdmrFeatureProto"; message CoordTransform { bool isHoriz = 1; string name = 2; // short name, unique within dataset repeated Attribute params = 3; } enum AxisType { // same as ucar.nc2.constants.AxisType RunTime=0; Ensemble=1; Time=2; GeoX=3; GeoY=4; GeoZ=5; Lat=6; Lon=7; Height=8; Pressure=9; RadialAzimuth=10; RadialDistance=11; RadialElevation=12; Spectral=13; TimeOffset=14; } enum AxisSpacing { // same as CoverageCoordAxis.Spacing regularPoint=0; irregularPoint=1; contiguousInterval=2; discontiguousInterval=3; regularInterval=4; } enum DependenceType { // same as CoverageCoordAxis.DependenceType independent=0; // has its own dimension, is a coordinate variable, eg x(x) dependent=1; // aux coordinate, reftime(time) or time_bounds(time); scalar=2; // reftime twoD=3; // lat(x,y) fmrcReg=4; // time(reftime, hourOfDay) } message CoordAxis { string name = 1; // short name, unique within dataset DataType dataType = 2; repeated Attribute atts = 3; // find calendar attribute here? AxisType axisType = 4; string units = 5; string description = 6; DependenceType depend = 7; repeated string dependsOn = 8; // depends on these axes, only for non-independent axes repeated uint32 shape = 9; // the shape of the axis (>1D only) int64 nvalues = 10; AxisSpacing spacing = 11; double startValue = 12; double endValue = 13; double resolution = 14; // resolution = (end-start) / (nvalues-1) bytes values = 15; // big endian doubles; not used for regular, may be deferred } message CoordSys { string name = 1; // must be unique in dataset's CoordSys repeated string axisNames = 2; repeated string transformNames = 3; CoverageType coverageType = 5; } enum Calendar { // same as ucar.nc2.time.Calendar proleptic_gregorian=0; gregorian=1; noleap=2; all_leap=3; uniform30day=4; julian=5; none=6; } message CalendarDateRange { int64 start = 1; int64 end = 2; Calendar calendar = 3; } message Rectangle { double startx = 1; double starty = 2; double incx = 3; double incy = 4; } ////////////////////////////////////////////////////// // Coverage enum CoverageType { General=0; Curvilinear=1; Grid=2; Swath=3; Fmrc=4; } message Coverage { string name = 1; // short name, unique within dataset DataType dataType = 2; repeated Attribute atts = 4; string coordSys = 5; string units = 6; string description = 7; } message CoverageDataset { string name = 1; repeated Attribute atts = 2; Rectangle latlonRect = 3; Rectangle projRect = 4; CalendarDateRange dateRange = 5; repeated CoordSys coordSys = 6; repeated CoordTransform coordTransforms = 7; repeated CoordAxis coordAxes = 8; repeated Coverage grids = 9; CoverageType coverageType = 10; } message GeoReferencedArray { string coverageName = 1; // full escaped name. DataType dataType = 2; bool bigend = 3; uint32 version = 4; // set to >= 3 for proto3 Compress compress = 5; uint64 uncompressedSize = 6; repeated uint32 shape = 7; // the shape of the returned array repeated string axisName = 8; // each dimension corresponds to this axis string coordSysName = 9; // must have coordAxes corresponding to shape bytes primdata = 10; // rectangular, primitive array } message CoverageDataResponse { repeated CoordAxis coordAxes = 1; // may be shared if asking for multiple grids repeated CoordSys coordSys = 2; // " repeated CoordTransform coordTransforms = 3; // " repeated GeoReferencedArray geoArray = 4; } // cd netcdf-java/cdm/src/main // protoc --proto_path=. --java_out=. java/ucar/nc2/ft2/coverage/remote/cdmrfeature.proto