// Grib2 Index version 9 (gbx9) syntax = "proto2"; option java_package = "ucar.nc2.grib.grib2"; option java_outer_classname = "Grib2IndexProto"; message GribIdSection { required uint32 center_id = 1; required uint32 subcenter_id = 2; required uint32 master_table_version = 3; required uint32 local_table_version = 4; required uint32 significanceOfRT = 5; repeated uint32 refDate = 6 [packed=true]; // year, month, day, hour, minute, second; required uint32 productionStatus = 7; required uint32 processedDataType = 8; } message GribGdsSection { required bytes gds = 2; } // we have the info in Grib2Record to reconstruct the indicator, id, gds, pds, drs, bms sections // we need to read from original raf to get bitmap, Grib2Drs, and data message Grib2Record { required bytes header = 1; // indicator section optional uint64 gribMessageStart = 15; required uint64 gribMessageLength = 2; required uint32 discipline = 3; // id section required GribIdSection ids = 4; // other sections optional bytes lus = 5; required uint32 gdsIdx = 6; // index into gdsList required bytes pds = 7; // drs section required uint64 drsPos = 8; required uint32 drsTemplate = 9; required uint32 drsNpoints = 10; // bms section required uint64 bmsPos = 11; // if original is 254, replace with previously defined (starting with version 6) required uint32 bmsIndicator = 12; optional bool bmsReplaced = 16 [default = false]; // data section required uint64 dataPos = 13; required uint32 dataLen = 14; optional uint32 scanMode = 17 [default = 9999]; // scanMode from gds added in version 4.5 } message Grib2Index { required string filename = 1; repeated GribGdsSection gdsList = 2; // GDS factored out repeated Grib2Record records = 3; reserved 4; // version / proto_version, do not use again } // cd netcdf-java/grib/src/main/java // protoc --proto_path=. --java_out=. ucar/nc2/grib/grib2/grib2Index.proto