diff --git a/src/lib/marble/StyleBuilder.cpp b/src/lib/marble/StyleBuilder.cpp --- a/src/lib/marble/StyleBuilder.cpp +++ b/src/lib/marble/StyleBuilder.cpp @@ -538,6 +538,7 @@ s_defaultStyle[GeoDataFeature::NaturalBeach] = StyleBuilder::Private::createWayStyle( "#FFF1BA", "#FFF1BA", true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/beach.png") ); s_defaultStyle[GeoDataFeature::NaturalWetland] = StyleBuilder::Private::createWayStyle( "#DDECEC", "#DDECEC", true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/wetland.png") ); s_defaultStyle[GeoDataFeature::NaturalGlacier] = StyleBuilder::Private::createWayStyle( "#DDECEC", "#DDECEC", true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/glacier.png") ); + s_defaultStyle[GeoDataFeature::NaturalIceShelf] = StyleBuilder::Private::createWayStyle( "#8ebebe", "#8ebebe", true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/glacier.png") ); s_defaultStyle[GeoDataFeature::NaturalScrub] = StyleBuilder::Private::createWayStyle( "#B5E3B5", "#B5E3B5", true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/scrub.png") ); s_defaultStyle[GeoDataFeature::NaturalCliff] = StyleBuilder::Private::createWayStyle( Qt::transparent, Qt::transparent, true, false, Qt::SolidPattern, MarbleDirs::path("bitmaps/osmcarto/patterns/cliff2.png") ); s_defaultStyle[GeoDataFeature::NaturalHeath] = StyleBuilder::Private::createWayStyle( "#d6d99f", QColor("#d6d99f").darker(150), true, false ); diff --git a/src/lib/marble/geodata/data/GeoDataFeature.h b/src/lib/marble/geodata/data/GeoDataFeature.h --- a/src/lib/marble/geodata/data/GeoDataFeature.h +++ b/src/lib/marble/geodata/data/GeoDataFeature.h @@ -151,6 +151,7 @@ NaturalBeach, NaturalWetland, NaturalGlacier, + NaturalIceShelf, NaturalScrub, NaturalCliff, NaturalHeath, diff --git a/src/lib/marble/geodata/data/GeoDataFeature.cpp b/src/lib/marble/geodata/data/GeoDataFeature.cpp --- a/src/lib/marble/geodata/data/GeoDataFeature.cpp +++ b/src/lib/marble/geodata/data/GeoDataFeature.cpp @@ -228,6 +228,7 @@ s_visualCategoryNames[NaturalBeach] = "NaturalBeach"; s_visualCategoryNames[NaturalWetland] = "NaturalWetland"; s_visualCategoryNames[NaturalGlacier] = "NaturalGlacier"; + s_visualCategoryNames[NaturalIceShelf] = "NaturalIceShelf"; s_visualCategoryNames[NaturalScrub] = "NaturalScrub"; s_visualCategoryNames[NaturalCliff] = "NaturalCliff"; s_visualCategoryNames[NaturalHeath] = "NaturalHeath"; diff --git a/src/lib/marble/layers/GeometryLayer.cpp b/src/lib/marble/layers/GeometryLayer.cpp --- a/src/lib/marble/layers/GeometryLayer.cpp +++ b/src/lib/marble/layers/GeometryLayer.cpp @@ -163,6 +163,7 @@ s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalBeach); s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalWetland); s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalGlacier); + s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalIceShelf); s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalCliff); s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::NaturalPeak); s_paintLayerOrder << createPaintLayerOrder("Polygon", GeoDataFeature::MilitaryDangerArea); @@ -236,6 +237,7 @@ s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::NaturalBeach); s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::NaturalWetland); s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::NaturalGlacier); + s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::NaturalIceShelf); s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::NaturalScrub); s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::LeisurePark); s_paintLayerOrder << createPaintLayerOrder("Point", GeoDataFeature::LeisurePlayground); @@ -269,6 +271,7 @@ s_defaultMinZoomLevels[GeoDataFeature::NaturalBeach] = 10; s_defaultMinZoomLevels[GeoDataFeature::NaturalWetland] = 10; s_defaultMinZoomLevels[GeoDataFeature::NaturalGlacier] = 3; + s_defaultMinZoomLevels[GeoDataFeature::NaturalIceShelf] = 3; s_defaultMinZoomLevels[GeoDataFeature::NaturalScrub] = 10; s_defaultMinZoomLevels[GeoDataFeature::NaturalCliff] = 15; s_defaultMinZoomLevels[GeoDataFeature::NaturalPeak] = 11; diff --git a/src/lib/marble/osm/OsmPresetLibrary.cpp b/src/lib/marble/osm/OsmPresetLibrary.cpp --- a/src/lib/marble/osm/OsmPresetLibrary.cpp +++ b/src/lib/marble/osm/OsmPresetLibrary.cpp @@ -231,6 +231,7 @@ s_visualCategories[ OsmTag( "natural", "beach" ) ] = GeoDataFeature::NaturalBeach; s_visualCategories[ OsmTag( "natural", "wetland" ) ] = GeoDataFeature::NaturalWetland; s_visualCategories[ OsmTag( "natural", "glacier" ) ] = GeoDataFeature::NaturalGlacier; + s_visualCategories[ OsmTag( "glacier:type", "shelf" ) ] = GeoDataFeature::NaturalIceShelf; s_visualCategories[ OsmTag( "natural", "scrub" ) ] = GeoDataFeature::NaturalScrub; s_visualCategories[ OsmTag( "natural", "cliff" ) ] = GeoDataFeature::NaturalCliff; @@ -637,6 +638,10 @@ return GeoDataFeature::Building; } + if( osmData.containsTag("natural", "glacier") && osmData.containsTag("glacier:type", "shelf") ){ + return GeoDataFeature::NaturalIceShelf; + } + for (auto iter = osmData.tagsBegin(), end=osmData.tagsEnd(); iter != end; ++iter) { QString const keyValue = QString("%1=%2").arg(iter.key()).arg(iter.value()); GeoDataFeature::GeoDataVisualCategory category = osmVisualCategory(keyValue); diff --git a/tools/shp2osm/polyshp2osm.py b/tools/shp2osm/polyshp2osm.py --- a/tools/shp2osm/polyshp2osm.py +++ b/tools/shp2osm/polyshp2osm.py @@ -248,7 +248,8 @@ 'ocean': [('natural', 'water')], 'channel': [('natural', 'water')], 'Playa': [('natural', 'water'), ('water', 'lake'), ('salt', 'yes')], - 'Antarctic Ice Shelf': [(' glacier:type','shelf'), ('natural', 'glacier')], #Marble does not support the glacier:type tag + #glacier:type is a proposed OSM tag - http://wiki.openstreetmap.org/wiki/Proposed_features/Glaciers_tags + 'Antarctic Ice Shelf': [('natural', 'glacier'), ('glacier:type','shelf')], 'Antarctic Ice Shelf Edge': [('glacier:edge', 'calving_line')], #marble does not support this osm tag 'Glaciated areas': [('natural', 'glacier')], 'Admin-0 Tiny Countries': [], @@ -629,7 +630,7 @@ """Run the converter. Requires open_file, file_name, id_counter, file_counter, counter to be defined in global space; not really a very good singleton.""" - global id_counter, file_counter, counter, file_name, open_file, namespace, non_geom, non_fcla_dict, nodes, ways, relations + global id_counter, file_counter, counter, file_name, open_file, namespace, non_geom, non_fcla_dict, nodes, ways, relations, geom_counter open_file = None file_name = None