option java_package = "net.osmand.binary"; //protoc --java_out=../.. osmand_odb.proto // // STORAGE LAYER: Storing primitives. // // IMPORTANT : These messages are not intented to be parsed by google engine (because of the size) // The main difference that size of that messages is not var int and is always fixed int size message OsmAndStructure { required uint32 version = 1; // encoded as fixed32 length delimited repeated OsmAndMapIndex mapIndex = 2; // encoded as fixed32 length delimited repeated OsmAndAddressIndex addressIndex = 3; } message OsmAndMapIndex { // encoded as fixed32 length delimited repeated MapRootLevel levels = 1; } message MapRootLevel { required int32 maxZoom = 1; required int32 minZoom = 2; required int32 left = 3; required int32 right = 4; required int32 top = 5; required int32 bottom = 6; // encoded as fixed32 length delimited repeated MapTree root = 7; } message MapTree { required sint32 left = 1; // delta encoded required sint32 right = 2; // delta encoded required sint32 top = 3; // delta encoded required sint32 bottom = 4; // delta encoded optional StringTable stringTable = 5; optional uint64 baseId = 6; // encoded as fixed32 length delimited repeated MapTree subtrees = 7; repeated MapData leafs = 8; } // These messages could be read directly /** String table, contains the common strings in each block. */ message StringTable { repeated string s = 1; } /// Simple messages message MapData { required bytes coordinates = 1; // array of delta x,y sint32 (CodedIinputStream) >> 5 // first x delta to Tree.left, y to delta Tree.top (next delta to previous) required bytes types = 2; // array of fixed int16 required sint64 id = 3; // delta encoded optional uint32 stringId = 4; optional bytes restrictions = 5; // array of SInt64 delta encoded (to baseId !) optional int32 highwayMeta = 6; } /// ADDRESS INFORMATION TEST ----- message OsmAndAddressIndex { required string name = 1; optional string name_en = 2; // encoded as fixed32 length delimited optional CitiesIndex cities = 5; // cities and towns // encoded as fixed32 length delimited optional PostcodesIndex postcodes = 6; // encoded as fixed32 length delimited optional CitiesIndex villages = 7; // suburbs and villages } message CitiesIndex { // encoded as fixed32 length delimited repeated CityIndex cities = 1; } message PostcodesIndex { // encoded as fixed32 length delimited repeated PostcodeIndex postcodes = 1; } message CityIndex { required uint32 city_type = 1; // 0-5 enum CityType required string name = 2; optional string name_en = 3; optional uint64 id = 4; required fixed32 x = 5; // x tile of 31 zoom required fixed32 y = 6; // y tile of 31 zoom repeated StreetIndex streets = 7; } message PostcodeIndex { required string postcode = 1; repeated StreetIndex streets = 5; } message StreetIndex { required string name = 1; optional string name_en = 2; optional uint64 id = 6; required sint32 x = 3; // delta encoded to parent 24 zoom required sint32 y = 4; // delta encoded to parent 24 zoom repeated BuildingIndex buildings = 5; } message BuildingIndex { required string name = 1; optional string name_en = 2; optional uint64 id = 5; optional string postcode = 6; required sint32 x = 3; // delta encoded to street 24 zoom required sint32 y = 4; // delta encoded to street 24 zoom }