Work on reading dimension descriptions

This commit is contained in:
Eric Fischer 2018-09-13 17:04:22 -07:00
parent 7154c06984
commit 4bcef2cb11
2 changed files with 57 additions and 0 deletions

49
mvt.cpp
View File

@ -144,6 +144,7 @@ bool mvt_tile::decode(std::string &message, bool &was_compressed) {
{
protozero::pbf_reader layer_reader(reader.get_message());
mvt_layer layer;
std::vector<mvt_dimension> dimensions;
while (layer_reader.next()) {
switch (layer_reader.tag()) {
@ -277,6 +278,54 @@ bool mvt_tile::decode(std::string &message, bool &was_compressed) {
break;
}
case 10: /* dimensions */
{
protozero::pbf_reader dimension_reader(layer_reader.get_message());
mvt_dimension dimension;
dimension.scale = 1;
dimension.global_offset = 0;
dimension.offset = 0;
while (dimension_reader.next()) {
switch (dimension_reader.tag()) {
case 2:
dimension.is_elevation = dimension_reader.get_bool();
break;
case 3:
dimension.offset = dimension_reader.get_sint64();
break;
case 4:
dimension.scale = dimension_reader.get_sint64();
break;
case 8:
dimension.scale = dimension_reader.get_double();
break;
case 5:
dimension.global_offset = dimension_reader.get_sint64();
break;
case 9:
dimension.global_offset = dimension_reader.get_double();
break;
case 10:
dimension.name = dimension_reader.get_string();
break;
default:
dimension_reader.skip();
break;
}
}
break;
}
case 15: /* version */
layer.version = layer_reader.get_uint32();
break;

View File

@ -112,6 +112,14 @@ struct mvt_value {
}
};
struct mvt_dimension {
bool is_elevation;
long offset;
double scale;
double global_offset;
std::string name;
};
struct mvt_layer {
int version = 0;
std::string name = "";