do not recheck for polygon tags in MPs
The tag type=multipolygon already indicates an area, no matter what the other tags say. Fixes #866.1.2.x
parent
914ff8b605
commit
57686107b8
|
@ -253,14 +253,6 @@ function filter_tags_relation_member (keyvalues, keyvaluemembers, roles, memberc
|
|||
elseif (type == "multipolygon") then
|
||||
-- Treat as polygon
|
||||
polygon = 1
|
||||
filter = 1
|
||||
-- Count the number of polygon tags of the object
|
||||
for i,k in ipairs(polygon_keys) do
|
||||
if keyvalues[k] then
|
||||
filter = 0
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Add z_order key/value combination and determine if the object should also be added to planet_osm_roads
|
||||
|
|
|
@ -160,7 +160,6 @@ bool c_tagtransform_t::filter_tags(osmium::OSMObject const &o, int *polygon,
|
|||
if (o.type() == osmium::item_type::relation &&
|
||||
strcmp("type", k) == 0) {
|
||||
out_tags.emplace_back(k, v);
|
||||
filter = false;
|
||||
continue;
|
||||
}
|
||||
/* Allow named islands to appear as polygons */
|
||||
|
@ -210,7 +209,6 @@ bool c_tagtransform_t::filter_rel_member_tags(
|
|||
int *roads, export_list const &exlist, taglist_t &out_tags,
|
||||
bool allow_typeless)
|
||||
{
|
||||
auto const &infos = exlist.get(osmium::item_type::way);
|
||||
//if it has a relation figure out what kind it is
|
||||
const std::string *type = rel_tags.get("type");
|
||||
bool is_route = false, is_boundary = false, is_multipolygon = false;
|
||||
|
@ -239,6 +237,10 @@ bool c_tagtransform_t::filter_rel_member_tags(
|
|||
out_tags.push_dedupe(rel_tag);
|
||||
}
|
||||
|
||||
if (out_tags.empty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (is_route) {
|
||||
const std::string *netw = rel_tags.get("network");
|
||||
int networknr = -1;
|
||||
|
@ -313,25 +315,9 @@ bool c_tagtransform_t::filter_rel_member_tags(
|
|||
*make_boundary = 1;
|
||||
} else if (is_multipolygon) {
|
||||
*make_polygon = 1;
|
||||
|
||||
// Check if any of the tags is polygon-like
|
||||
int flags = 0;
|
||||
bool filter = false;
|
||||
for (const auto &tag : out_tags) {
|
||||
check_key(infos, tag.key.c_str(), &filter, &flags, false);
|
||||
}
|
||||
|
||||
if (!(flags & FLAG_POLYGON)) {
|
||||
out_tags.clear();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (out_tags.empty()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
add_z_order(out_tags, roads);
|
||||
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -89,17 +89,17 @@ sql_test_statements=[
|
|||
( 51, 'Basic hstore point count', 'SELECT count(*) FROM planet_osm_point;', 1360 ),
|
||||
( 52, 'Basic hstore line count', 'SELECT count(*) FROM planet_osm_line;', 3254 ),
|
||||
( 53, 'Basic hstore road count', 'SELECT count(*) FROM planet_osm_roads;', 375 ),
|
||||
( 54, 'Basic hstore polygon count', 'SELECT count(*) FROM planet_osm_polygon;', 4130 ),
|
||||
( 54, 'Basic hstore polygon count', 'SELECT count(*) FROM planet_osm_polygon;', 4131 ),
|
||||
( 55, 'Basic post-diff point count', 'SELECT count(*) FROM planet_osm_point;', 1475 ),
|
||||
( 56, 'Basic post-diff line count', 'SELECT count(*) FROM planet_osm_line;', 3297 ),
|
||||
( 57, 'Basic post-diff road count', 'SELECT count(*) FROM planet_osm_roads;', 380 ),
|
||||
( 58, 'Basic post-diff polygon count', 'SELECT count(*) FROM planet_osm_polygon;', 4277 ),
|
||||
( 58, 'Basic post-diff polygon count', 'SELECT count(*) FROM planet_osm_polygon;', 4278 ),
|
||||
( 59, 'Extra hstore full tags point count',
|
||||
'SELECT count(*) FROM planet_osm_point WHERE tags ? \'osm_user\' and tags ? \'osm_version\' and tags ? \'osm_uid\' and tags ? \'osm_changeset\'', 1360),
|
||||
( 60, 'Extra hstore full tags line count',
|
||||
'SELECT count(*) FROM planet_osm_line WHERE tags ? \'osm_user\' and tags ? \'osm_version\' and tags ? \'osm_uid\' and tags ? \'osm_changeset\'', 3254),
|
||||
( 61, 'Extra hstore full tags polygon count',
|
||||
'SELECT count(*) FROM planet_osm_polygon WHERE tags ? \'osm_user\' and tags ? \'osm_version\' and tags ? \'osm_uid\' and tags ? \'osm_changeset\'', 4130),
|
||||
'SELECT count(*) FROM planet_osm_polygon WHERE tags ? \'osm_user\' and tags ? \'osm_version\' and tags ? \'osm_uid\' and tags ? \'osm_changeset\'', 4131),
|
||||
( 62, 'removed', 'really', 0),
|
||||
( 63, 'removed', 'really', 0),
|
||||
( 64, 'Multipolygon non copying of tags from outer with polygon tags on relation',
|
||||
|
@ -152,11 +152,11 @@ sql_test_statements=[
|
|||
( 93, 'Basic number of hstore points tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_point;', 4228),
|
||||
( 94, 'Basic number of hstore roads tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_roads;', 2317),
|
||||
( 95, 'Basic number of hstore lines tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_line;', 10387),
|
||||
( 96, 'Basic number of hstore polygons tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_polygon;', 9536),
|
||||
( 96, 'Basic number of hstore polygons tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_polygon;', 9538),
|
||||
( 97, 'Diff import number of hstore points tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_point;', 4352),
|
||||
( 98, 'Diff import number of hstore roads tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_roads;', 2336),
|
||||
( 99, 'Diff import number of hstore lines tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_line;', 10505),
|
||||
( 100, 'Diff import number of hstore polygons tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_polygon;', 9830),
|
||||
( 100, 'Diff import number of hstore polygons tags', 'SELECT sum(array_length(akeys(tags),1)) FROM planet_osm_polygon;', 9832),
|
||||
#**** Tests to check if inner polygon appears when outer tags change after initially identicall inner and outer way tags in a multi-polygon ****
|
||||
#**** These tests are currently broken and noted in trac ticket #2853 ****
|
||||
( 101, 'Multipolygon identical tags on inner and outer (presence of relation)',
|
||||
|
|
Loading…
Reference in New Issue