<table><tr><td style="">tandon created this revision.<br />tandon added reviewers: nienhueser, rahn.<br />tandon added subscribers: nienhueser, rahn.<br />tandon set the repository for this revision to rMARBLE Marble.</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D1992" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p><strong>Issue</strong><br />
For displaying ice shelves Marble needs to parse the following tags [('glacier:type','shelf'), ('natural', 'glacier')]. Due to the ('natural', 'glacier') key-valye pair, the corresponding placemark gets a visual category of NaturalGlacier however since the OSM way also contains an additional tag ('glacier:type','shelf'), the placemark must be styled differently from a plain NaturalGlacier. Now an antarctic ice shelf can either be a single GeoDataLinearRing or it may be a GeoDataPolygon which consists of several inner and outer rings.</p>

<p>Currently when Marble parses an OSM relation which describes a multipolygon, it does not store the the tags(key-value) pairs of a relation's component ways. During parsing it just determines the visual category of the OSM multipolygon relation from its component ways and stores it into the corresponding placemark. Also it stores the key-value pairs of the OSM relation but discards the key-value pairs of the OSM relation's component ways which effects the conditional styling of certain placemarks.</p>

<p><strong>Problem</strong><br />
In spite of modifying the OSM parsing classes so as to handle the above issues I am not able to store the key-value pairs of the OSM relation's component ways into its OsmPlacemarkData. When I tried to add a few qDebug() statements in OsmParser.cpp and OsmRelation.cpp to check any mistake which I may be making, these statements are displaying nothing, i.e qDebug() is not working when I use it inside OsmParser.cpp or OsmRelation.cpp**</p>

<p><strong>Current Rendering</strong><br />
<a href="https://phabricator.kde.org/F157800" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F157800: shelf.png</a></p>

<p>As you can see in the image below, the GeoDataLinearRings i.e rings which don't have any holes are rendered properly, but GeoDataPolygons i.e rings which have holes in them are rendered as if they are plain NaturalGlaciers and not ice shelves.<br />
<a href="https://phabricator.kde.org/F157801" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;" rel="noreferrer">F157801: shelf2.png</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>rMARBLE Marble</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D1992" rel="noreferrer">https://phabricator.kde.org/D1992</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>src/lib/marble/StyleBuilder.cpp<br />
src/lib/marble/osm/OsmPlacemarkData.cpp<br />
src/lib/marble/osm/OsmPlacemarkData.h<br />
src/plugins/runner/osm/OsmParser.cpp<br />
src/plugins/runner/osm/OsmParser.h<br />
src/plugins/runner/osm/OsmRelation.cpp<br />
src/plugins/runner/osm/OsmRelation.h<br />
tools/shp2osm/polyshp2osm.py</div></div></div><br /><div><strong>EMAIL PREFERENCES</strong><div><a href="https://phabricator.kde.org/settings/panel/emailpreferences/" rel="noreferrer">https://phabricator.kde.org/settings/panel/emailpreferences/</a></div></div><br /><div><strong>To: </strong>tandon, nienhueser, rahn<br /><strong>Cc: </strong>rahn, nienhueser, marble-devel<br /></div>