mirror of
https://github.com/mapbox/tippecanoe.git
synced 2025-04-19 00:06:59 +00:00
Fix elevation inconsistencies
This commit is contained in:
parent
1ddaa92166
commit
b68c19042b
@ -1145,6 +1145,7 @@ static int clip(double *x0, double *y0, double *x1, double *y1, double xmin, dou
|
||||
y = *y0 + (*y1 - *y0) * (xmax - *x0) / (*x1 - *x0);
|
||||
x = xmax;
|
||||
|
||||
e.resize(0);
|
||||
for (size_t i = 0; i < e0->size() && i < e1->size(); i++) {
|
||||
e.push_back((*e0)[i] + ((*e1)[i] - (*e0)[i]) * (xmax - *x0) / (*x1 - *x0));
|
||||
}
|
||||
@ -1152,6 +1153,7 @@ static int clip(double *x0, double *y0, double *x1, double *y1, double xmin, dou
|
||||
y = *y0 + (*y1 - *y0) * (xmin - *x0) / (*x1 - *x0);
|
||||
x = xmin;
|
||||
|
||||
e.resize(0);
|
||||
for (size_t i = 0; i < e0->size() && i < e1->size(); i++) {
|
||||
e.push_back((*e0)[i] + ((*e1)[i] - (*e0)[i]) * (xmin - *x0) / (*x1 - *x0));
|
||||
}
|
||||
|
10
mvt.cpp
10
mvt.cpp
@ -314,7 +314,7 @@ bool mvt_tile::decode(std::string &message, bool &was_compressed) {
|
||||
protozero::pbf_reader feature_reader(layer_reader.get_message());
|
||||
mvt_feature feature;
|
||||
std::vector<uint32_t> geoms;
|
||||
size_t dimensions = 2;
|
||||
size_t dimensions = 0;
|
||||
std::vector<double> elevations;
|
||||
|
||||
while (feature_reader.next()) {
|
||||
@ -391,7 +391,7 @@ bool mvt_tile::decode(std::string &message, bool &was_compressed) {
|
||||
|
||||
mvt_geometry decoded = mvt_geometry(op, px, py);
|
||||
|
||||
for (size_t i = 2; i < dimensions; i++) {
|
||||
for (size_t i = 0; i < dimensions; i++) {
|
||||
if (elevation_index < elevations.size()) {
|
||||
decoded.elevations.push_back(elevations[elevation_index]);
|
||||
elevation_index++;
|
||||
@ -515,7 +515,7 @@ std::string mvt_tile::encode() {
|
||||
for (size_t f = 0; f < layers[i].features.size(); f++) {
|
||||
std::string feature_string;
|
||||
protozero::pbf_writer feature_writer(feature_string);
|
||||
size_t dimensions = 2;
|
||||
size_t dimensions = 0;
|
||||
|
||||
feature_writer.add_enum(3, layers[i].features[f].type);
|
||||
feature_writer.add_packed_uint32(2, std::begin(layers[i].features[f].tags), std::end(layers[i].features[f].tags));
|
||||
@ -562,7 +562,7 @@ std::string mvt_tile::encode() {
|
||||
py = wwy;
|
||||
length++;
|
||||
|
||||
if (geom[g].elevations.size() + 2 > dimensions) {
|
||||
if (geom[g].elevations.size() > dimensions) {
|
||||
dimensions = geom[g].elevations.size();
|
||||
}
|
||||
} else if (op == mvt_closepath) {
|
||||
@ -579,7 +579,7 @@ std::string mvt_tile::encode() {
|
||||
|
||||
feature_writer.add_packed_uint32(4, std::begin(geometry), std::end(geometry));
|
||||
|
||||
if (dimensions > 2) {
|
||||
if (dimensions > 0) {
|
||||
std::vector<double> elevations;
|
||||
|
||||
for (size_t g = 0; g < geom.size(); g++) {
|
||||
|
@ -379,7 +379,7 @@ void write_coordinates(json_writer &state, lonlat const &p) {
|
||||
state.json_write_float(p.lat);
|
||||
|
||||
for (size_t i = 0; i < p.elevations.size(); i++) {
|
||||
state.json_write_number(p.elevations[i]);
|
||||
state.json_write_float(p.elevations[i]);
|
||||
}
|
||||
|
||||
state.json_end_array();
|
||||
|
Loading…
x
Reference in New Issue
Block a user