ucar.nc2.ft2.coverage.remote.cdmrfeature.proto Maven / Gradle / Ivy
The newest version!
syntax = "proto3";
import "ucar/nc2/stream/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 c:/dev/github/thredds/cdm/src/main/java
// protoc --proto_path=. --java_out=. ucar/nc2/ft2/coverage/remote/cdmrfeature.proto