Update vendored vtzero dependency to v1.1.0 (#6871)

This commit is contained in:
Dennis Luxen
2024-05-07 22:19:48 +02:00
committed by GitHub
parent 79de092bb2
commit 10237b8761
43 changed files with 16229 additions and 9674 deletions
+88 -76
View File
@@ -17,85 +17,97 @@
#include <vector>
int main() {
vtzero::tile_builder tile;
vtzero::layer_builder layer_points{tile, "points"};
vtzero::layer_builder layer_lines{tile, "lines"};
vtzero::layer_builder layer_polygons{tile, "polygons"};
try {
vtzero::tile_builder tile;
vtzero::layer_builder layer_points{tile, "points"};
vtzero::layer_builder layer_lines{tile, "lines"};
vtzero::layer_builder layer_polygons{tile, "polygons"};
vtzero::key_index<std::unordered_map> idx{layer_points};
vtzero::key_index<std::unordered_map> idx{layer_points};
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(1);
feature.add_points(1);
feature.set_point(10, 10);
feature.add_property("foo", "bar");
feature.add_property("x", "y");
feature.rollback();
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(1);
feature.add_points(1);
feature.set_point(10, 10);
feature.add_property("foo", "bar");
feature.add_property("x", "y");
feature.rollback();
}
const auto some = idx("some");
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(2);
feature.add_point(20, 20);
feature.add_property(some, "attr");
feature.commit();
}
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(3);
feature.add_point(20, 20);
feature.add_property(idx("some"), "attr");
feature.commit();
}
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(4);
feature.add_point(20, 20);
feature.add_property(idx("some"), "otherattr");
feature.commit();
}
vtzero::point_feature_builder feature1{layer_points};
feature1.set_id(5);
feature1.add_point(vtzero::point{20, 20});
feature1.add_property("otherkey", "attr");
feature1.commit();
vtzero::value_index<vtzero::sint_value_type, int32_t, std::unordered_map> maxspeed_index{layer_lines};
{
vtzero::linestring_feature_builder feature{layer_lines};
feature.set_id(6);
feature.add_linestring(3);
feature.set_point(10, 10);
feature.set_point(10, 20);
feature.set_point(vtzero::point{20, 20});
std::vector<vtzero::point> points = {{11, 11}, {12, 13}};
feature.add_linestring_from_container(points);
feature.add_property("highway", "primary");
feature.add_property(std::string{"maxspeed"}, maxspeed_index(50));
feature.commit();
}
{
vtzero::polygon_feature_builder feature{layer_polygons};
feature.set_id(7);
feature.add_ring(5);
feature.set_point(0, 0);
feature.set_point(10, 0);
feature.set_point(10, 10);
feature.set_point(0, 10);
feature.set_point(0, 0);
feature.add_ring(4);
feature.set_point(3, 3);
feature.set_point(3, 5);
feature.set_point(5, 5);
feature.close_ring();
feature.add_property("natural", "wood");
feature.add_property("number_of_trees", vtzero::sint_value_type{23402752});
feature.commit();
}
const auto data = tile.serialize();
write_data_to_file(data, "test.mvt");
} catch (const std::exception& e) {
std::cerr << "Fatal error: " << e.what() << '\n';
return 1;
}
const auto some = idx("some");
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(2);
feature.add_point(20, 20);
feature.add_property(some, "attr");
}
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(3);
feature.add_point(20, 20);
feature.add_property(idx("some"), "attr");
}
{
vtzero::point_feature_builder feature{layer_points};
feature.set_id(4);
feature.add_point(20, 20);
feature.add_property(idx("some"), "otherattr");
}
vtzero::point_feature_builder feature1{layer_points};
feature1.set_id(5);
feature1.add_point(vtzero::point{20, 20});
feature1.add_property("otherkey", "attr");
feature1.commit();
vtzero::value_index<vtzero::sint_value_type, int32_t, std::unordered_map> maxspeed_index{layer_lines};
{
vtzero::linestring_feature_builder feature{layer_lines};
feature.set_id(6);
feature.add_linestring(3);
feature.set_point(10, 10);
feature.set_point(10, 20);
feature.set_point(vtzero::point{20, 20});
std::vector<vtzero::point> points = {{11, 11}, {12, 13}};
feature.add_linestring_from_container(points);
feature.add_property("highway", "primary");
feature.add_property(std::string{"maxspeed"}, maxspeed_index(50));
}
{
vtzero::polygon_feature_builder feature{layer_polygons};
feature.set_id(7);
feature.add_ring(5);
feature.set_point(0, 0);
feature.set_point(10, 0);
feature.set_point(10, 10);
feature.set_point(0, 10);
feature.set_point(0, 0);
feature.add_ring(4);
feature.set_point(3, 3);
feature.set_point(3, 5);
feature.set_point(5, 5);
feature.close_ring();
feature.add_property("natural", "wood");
feature.add_property("number_of_trees", vtzero::sint_value_type{23402752});
}
const auto data = tile.serialize();
write_data_to_file(data, "test.mvt");
return 0;
}
+2
View File
@@ -138,5 +138,7 @@ int main(int argc, char* argv[]) {
out.back() = ' ';
std::cout << '\n' << out << "]\n";
return 0;
}
+72 -65
View File
@@ -21,81 +21,88 @@
#include <string>
int main(int argc, char* argv[]) {
std::string filename;
std::string layer_num_or_name;
std::string idstr;
std::string output_file{"filtered.mvt"};
try {
std::string filename;
std::string layer_num_or_name;
std::string idstr;
std::string output_file{"filtered.mvt"};
bool help = false;
bool help = false;
const auto cli
= clara::Opt(output_file, "FILE")
["-o"]["--output"]
("write output to FILE")
| clara::Help(help)
| clara::Arg(filename, "FILENAME").required()
("vector tile")
| clara::Arg(layer_num_or_name, "LAYER-NUM|LAYER-NAME").required()
("layer")
| clara::Arg(idstr, "ID")
("feature_id");
const auto cli
= clara::Opt(output_file, "FILE")
["-o"]["--output"]
("write output to FILE")
| clara::Help(help)
| clara::Arg(filename, "FILENAME").required()
("vector tile")
| clara::Arg(layer_num_or_name, "LAYER-NUM|LAYER-NAME").required()
("layer")
| clara::Arg(idstr, "ID")
("feature_id");
const auto result = cli.parse(clara::Args(argc, argv));
if (!result) {
std::cerr << "Error in command line: " << result.errorMessage() << '\n';
return 1;
}
if (help) {
std::cout << cli
<< "\nFilter contents of vector tile.\n";
return 0;
}
if (filename.empty()) {
std::cerr << "Error in command line: Missing file name of vector tile to read\n";
return 1;
}
if (layer_num_or_name.empty()) {
std::cerr << "Error in command line: Missing layer number or name\n";
return 1;
}
const auto data = read_file(filename);
vtzero::vector_tile tile{data};
auto layer = get_layer(tile, layer_num_or_name);
std::cerr << "Found layer: " << std::string(layer.name()) << "\n";
vtzero::tile_builder tb;
if (idstr.empty()) {
tb.add_existing_layer(layer);
} else {
char* str_end = nullptr;
const int64_t id = std::strtoll(idstr.c_str(), &str_end, 10);
if (str_end != idstr.c_str() + idstr.size()) {
std::cerr << "Feature ID must be numeric.\n";
return 1;
}
if (id < 0) {
std::cerr << "Feature ID must be >= 0.\n";
const auto result = cli.parse(clara::Args(argc, argv));
if (!result) {
std::cerr << "Error in command line: " << result.errorMessage() << '\n';
return 1;
}
const auto feature = layer.get_feature_by_id(static_cast<uint64_t>(id));
if (!feature.valid()) {
std::cerr << "No feature with that id: " << id << '\n';
if (help) {
std::cout << cli
<< "\nFilter contents of vector tile.\n";
return 0;
}
if (filename.empty()) {
std::cerr << "Error in command line: Missing file name of vector tile to read\n";
return 1;
}
vtzero::layer_builder layer_builder{tb, layer};
layer_builder.add_feature(feature);
if (layer_num_or_name.empty()) {
std::cerr << "Error in command line: Missing layer number or name\n";
return 1;
}
const auto data = read_file(filename);
vtzero::vector_tile tile{data};
auto layer = get_layer(tile, layer_num_or_name);
std::cerr << "Found layer: " << std::string(layer.name()) << "\n";
vtzero::tile_builder tb;
if (idstr.empty()) {
tb.add_existing_layer(layer);
} else {
char* str_end = nullptr;
const int64_t id = std::strtoll(idstr.c_str(), &str_end, 10);
if (str_end != idstr.c_str() + idstr.size()) {
std::cerr << "Feature ID must be numeric.\n";
return 1;
}
if (id < 0) {
std::cerr << "Feature ID must be >= 0.\n";
return 1;
}
const auto feature = layer.get_feature_by_id(static_cast<uint64_t>(id));
if (!feature.valid()) {
std::cerr << "No feature with that id: " << id << '\n';
return 1;
}
vtzero::layer_builder layer_builder{tb, layer};
layer_builder.add_feature(feature);
}
std::string output = tb.serialize();
write_data_to_file(output, output_file);
} catch (const std::exception& e) {
std::cerr << "Fatal error: " << e.what() << '\n';
return 1;
}
std::string output = tb.serialize();
write_data_to_file(output, output_file);
return 0;
}
+2 -2
View File
@@ -26,7 +26,7 @@ public:
void points_begin(const uint32_t /*count*/) const noexcept {
}
void points_point(const vtzero::point point) const {
static void points_point(const vtzero::point point) {
std::cout << " POINT(" << point.x << ',' << point.y << ")\n";
}
@@ -111,7 +111,7 @@ struct print_value {
}; // struct print_value
static void print_layer(vtzero::layer& layer, bool print_tables, bool print_value_types, int& layer_num, int& feature_num) {
static void print_layer(vtzero::layer& layer, bool print_tables, bool print_value_types, int layer_num, int& feature_num) {
std::cout << "=============================================================\n"
<< "layer: " << layer_num << '\n'
<< " name: " << std::string(layer.name()) << '\n'
+16 -10
View File
@@ -20,17 +20,23 @@ int main(int argc, char* argv[]) {
return 1;
}
std::string input_file{argv[1]};
const auto data = read_file(input_file);
try {
std::string input_file{argv[1]};
const auto data = read_file(input_file);
vtzero::vector_tile tile{data};
vtzero::vector_tile tile{data};
while (const auto layer = tile.next_layer()) {
std::cout.write(layer.name().data(), static_cast<std::streamsize>(layer.name().size()));
std::cout << ' '
<< layer.num_features() << ' '
<< layer.key_table().size() << ' '
<< layer.value_table().size() << '\n';
while (const auto layer = tile.next_layer()) {
std::cout.write(layer.name().data(), static_cast<std::streamsize>(layer.name().size()));
std::cout << ' '
<< layer.num_features() << ' '
<< layer.key_table().size() << ' '
<< layer.value_table().size() << '\n';
}
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
return 1;
}
}
return 0;
}
+5 -3
View File
@@ -58,14 +58,14 @@ int main(int argc, char* argv[]) {
while (auto feature = layer.next_feature()) {
if (keep_feature(feature)) {
vtzero::geometry_feature_builder feature_builder{layer_builder};
if (feature.has_id()) {
feature_builder.set_id(feature.id());
}
feature_builder.copy_id(feature);
feature_builder.set_geometry(feature.geometry());
while (auto idxs = feature.next_property_indexes()) {
feature_builder.add_property(mapper(idxs));
}
feature_builder.commit();
}
}
@@ -75,5 +75,7 @@ int main(int argc, char* argv[]) {
std::cerr << "Error: " << e.what() << '\n';
return 1;
}
return 0;
}