On 26/12/09 22:11, Mark Burton wrote:
>
> Hi Chris,
>
>> Mark Burton schrieb:
>>
>>> So, is putting the coastline into a multipolygon a reasonable OSM
>>> thing?
>>
>> A coastline is often also a boundary and boundaries are
>> multipolygons in OSM.
>>
>>> If so, should mkgmap be breaking the coastline by removing its
>>> tags? If not, how do we fix that?
>>
>> My guess is, that the multipolygon handling in mkgmap is not working
>> perfectly.
>>
>> See an older thread on this list where I suggest a
>> workaround. (I check if the MP has no inner elements
>> and change the type=multipolygon to type=boundarypolygon
>> if this is the case).
>>
>> Chris
>
> OK, that's understood.
>
> But why do we have to trash the original ways when we make a
> multipolygon from them? Would it not be better to give the relation a
> duplicate of the way to trash so that the original way can go on to
> serve its original purpose. Perhaps we should do this:
>
> diff --git a/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
> b/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
> index acc5cf9..fbb1d57 100644
> --- a/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
> +++ b/src/uk/me/parabola/mkgmap/reader/osm/xml/Osm5XmlHandler.java
> @@ -266,10 +266,12 @@ class Osm5XmlHandler extends DefaultHandler {
> private void startInRelation(String qName, Attributes attributes) {
> if (qName.equals("member")) {
> long id = idVal(attributes.getValue("ref"));
> - Element el;
> + Element el = null;
> String type = attributes.getValue("type");
> - if ("way".equals(type)){
> - el = wayMap.get(id);
> + if ("way".equals(type)) {
> + Way way = wayMap.get(id);
> + if(way != null)
> + el = way.duplicate();
> } else if ("node".equals(type)) {
> el = nodeMap.get(id);
> if(el == null) {
>
> I just tried this patch and (just like magic) the coastline reappears.
But do you also magically get an extra unwanted polygon when the
relation is a cascading multipolygon?
Aside from that, the multipolygon code already does duplicate the way
before removing the tags from the original. Duplicating it again can't
be the right solution.
..Steve
_______________________________________________
mkgmap-dev mailing list
[email protected]
http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev