示例#1
0
    p0.exterior_ring.add_coord(0,0);

    std::int32_t x = 0;
    std::int32_t y = 0;
    std::string feature_str;
    protozero::pbf_writer feature_writer(feature_str);
    vector_tile::Tile_Feature feature;
    REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y));
    feature.ParseFromString(feature_str);
    REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON);

    // MoveTo, ParameterInteger, ParameterInteger
    // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger
    // Close
    // 3 commands + 8 Params = 11
    REQUIRE(feature.geometry_size() == 11);
    // MoveTo(0,0)
    CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9
    CHECK(feature.geometry(1) == 0);
    CHECK(feature.geometry(2) == 0);
    // LineTo(0,10)
    CHECK(feature.geometry(3) == ((3 << 3) | 2u));
    CHECK(feature.geometry(4) == 0);
    CHECK(feature.geometry(5) == 20);
    // LineTo(-10,10)
    CHECK(feature.geometry(6) == 19);
    CHECK(feature.geometry(7) == 0);
    // LineTo(-10,0)
    CHECK(feature.geometry(8) == 0);
    CHECK(feature.geometry(9) == 19);
    // Close