<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">I also forgot to mention that I see 1000 instances of this error... I’m not sure if it’s related.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ERROR 1: String buffer too small<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I tried setting CPL_DEBUG to “OSM” and didn’t see obvious errors. The output looks like this:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: OGR_INTERLEAVED_READING = 1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer points, new max size is 128<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: Ways processed : 10000<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ERROR 1: String buffer too small<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ERROR 1: String buffer too small<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">...<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">ERROR 1: String buffer too small<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">More than 1000 errors or warnings have been reported. No more will be reported from now.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 128<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 320<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 608<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 1040<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 1688<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 2660<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 4118<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 6305<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 9585<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer lines, new max size is 14505<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer other_relations, new max size is 128<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: Remaining standalone polygons<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer multipolygons, new max size is 128<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer multipolygons, new max size is 320<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: For layer multipolygons, new max size is 608<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: Switching to 'lines' as they are no more feature in 'points'<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: Switching to 'multipolygons' as they are no more feature in 'lines'<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">OSM: Switching to 'other_relations' as they are no more feature in 'multipolygons'<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Tim Harris
<br>
<b>Sent:</b> Wednesday, July 12, 2017 3:31 PM<br>
<b>To:</b> 'gdal-dev@lists.osgeo.org'<br>
<b>Subject:</b> OSM driver won't generate feature for relation<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’m trying to extract water vectors from OSM using my own local Overpass API server and OGR. It works for the most part, but there are some water features missing in my output. One particularly large omission is Lake Huron.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I put an example OSM file here: <a href="https://s3.amazonaws.com/gdal-osm-data/lake_huron.osm">
https://s3.amazonaws.com/gdal-osm-data/lake_huron.osm</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can see a <relation> in the file that corresponds to Lake Huron, it’s the last element near the end of the file, <relation id=”1205151”>. It’s got 12797 <member> elements that reference the 12797 <way> elements in the file (I think).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve been looking at <a href="http://www.gdal.org/drv_osm.html">
http://www.gdal.org/drv_osm.html</a> and saw a few tips, like setting OGR_INTERLEAVED_READING to YES and using the example do/while loop. Here’s my Python translation:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">import gdal<o:p></o:p></p>
<p class="MsoNormal">import ogr<o:p></o:p></p>
<p class="MsoNormal">import geojson<o:p></o:p></p>
<p class="MsoNormal">gdal.SetConfigOption("OGR_INTERLEAVED_READING", "YES")<o:p></o:p></p>
<p class="MsoNormal">ds = ogr.Open("test_water.osm")<o:p></o:p></p>
<p class="MsoNormal">feats = []<o:p></o:p></p>
<p class="MsoNormal">nonempty = True<o:p></o:p></p>
<p class="MsoNormal">while nonempty:<o:p></o:p></p>
<p class="MsoNormal">    nonempty = False<o:p></o:p></p>
<p class="MsoNormal">    for i in range(0, ds.GetLayerCount()):<o:p></o:p></p>
<p class="MsoNormal">        layer = ds.GetLayerByIndex(i)<o:p></o:p></p>
<p class="MsoNormal">        feat = layer.GetNextFeature()<o:p></o:p></p>
<p class="MsoNormal">        while feat is not None:<o:p></o:p></p>
<p class="MsoNormal">            feats.append(feat)<o:p></o:p></p>
<p class="MsoNormal">            nonempty = True<o:p></o:p></p>
<p class="MsoNormal">            feat = layer.GetNextFeature()<o:p></o:p></p>
<p class="MsoNormal">with open("output.geojson", "w") as fobj:<o:p></o:p></p>
<p class="MsoNormal">    fc = geojson.FeatureCollection(features=[geojson.loads(feat.ExportToJson()) for feat in feats])<o:p></o:p></p>
<p class="MsoNormal">    geojson.dump(fc, fobj)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When I load output.geojson into QGIS and look at the line strings and polygons, I don’t see a multipolygon for Lake Huron. I do see the outline as a bunch of line strings, but no polygon. I get a similar result if I load the OSM file into
 QGIS directly... no lake polygon. Just a few random smaller polygons around the perimiter. It seems like OGR just isn’t producing a feature for that last relation.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve tried messing around with osmconf.ini, including using the one from the QGIS plugin “QuickOSM”. My most recent version of that file is here:
<a href="https://s3.amazonaws.com/gdal-osm-data/osmconf.ini">https://s3.amazonaws.com/gdal-osm-data/osmconf.ini</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is there some setting I’m missing in osmconf.ini that would result in a multipolygon for the lake? The relation is there and it has a “type” tag set to “multipolygon”.<o:p></o:p></p>
</div>
</body>
</html>