Thanks muchly.<br><br>I implemented the fieldname launderer and the warning suppression - and all tests pass:<br><a href="https://github.com/AIFDR/riab/commit/ced28719d4878d4dfc3a70a08aebbd5f98bca744">https://github.com/AIFDR/riab/commit/ced28719d4878d4dfc3a70a08aebbd5f98bca744</a><br>
<a href="https://github.com/AIFDR/riab/commit/a1e3632fc452af58d6288771b8528432403b8d0c">https://github.com/AIFDR/riab/commit/a1e3632fc452af58d6288771b8528432403b8d0c</a><br><br><br>Thanks heaps for all your help<br>Ole<br>
<br><br><div class="gmail_quote">On Wed, Sep 7, 2011 at 12:16 PM, Even Rouault <span dir="ltr">&lt;<a href="mailto:even.rouault@mines-paris.org">even.rouault@mines-paris.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Le mercredi 07 septembre 2011 02:36:35, Ole Nielsen a écrit :<br>
<div class="im">&gt; Yes this seems to work. However, I get a huge amounts of warnings of the<br>
&gt; form<br>
&gt;<br>
&gt; &gt;&gt;&gt; lyr.CreateField(fd)<br>
&gt;<br>
&gt; Warning 6: Normalized/laundered field name: &#39;A slightly long name&#39; to &#39;A<br>
&gt; slightly&#39;<br>
&gt; 0<br>
&gt;<br>
&gt; They obviously tell what name has been derived, but I don&#39;t want this<br>
&gt; output to clutter, and since that name is already available through your<br>
&gt; procedure they really should be suppressed. Can that be done?<br>
<br>
</div>Yes, you can surround the CreateField() call with :<br>
<br>
gdal.PushErrorHandler(&#39;CPLQuietErrorHandler&#39;)<br>
...<br>
gdal.PopErrorHandler()<br>
<div><div></div><div class="h5"><br>
&gt; Many thanks<br>
&gt; Ole<br>
&gt;<br>
&gt; On Tue, Sep 6, 2011 at 10:10 PM, Even Rouault<br>
&gt;<br>
&gt; &lt;<a href="mailto:even.rouault@mines-paris.org">even.rouault@mines-paris.org</a>&gt;wrote:<br>
&gt; &gt; Selon Ole Nielsen &lt;<a href="mailto:ole.moller.nielsen@gmail.com">ole.moller.nielsen@gmail.com</a>&gt;:<br>
&gt; &gt; &gt; Thanks - I was hoping I could rely on the library to do the intelligent<br>
&gt; &gt; &gt; truncation, but couldn&#39;t work it out.<br>
&gt; &gt; &gt; Can I just clarify that the name to use with SetField would then be<br>
&gt; &gt; &gt; what<br>
&gt; &gt;<br>
&gt; &gt; is<br>
&gt; &gt;<br>
&gt; &gt; &gt; provided by your last line?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;  layer_defn.GetFieldDefn(last_field_idx).GetNameRef()<br>
&gt; &gt;<br>
&gt; &gt; Yes<br>
&gt; &gt;<br>
&gt; &gt; &gt; Cheers and thanks<br>
&gt; &gt; &gt; Ole<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Tue, Sep 6, 2011 at 9:26 PM, Even Rouault<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &lt;<a href="mailto:even.rouault@mines-paris.org">even.rouault@mines-paris.org</a>&gt;wrote:<br>
&gt; &gt; &gt; &gt; Selon Ole Nielsen &lt;<a href="mailto:ole.moller.nielsen@gmail.com">ole.moller.nielsen@gmail.com</a>&gt;:<br>
&gt; &gt; &gt; &gt; &gt; Hi Even<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Thanks again for all your help - all tests now pass using either<br>
&gt; &gt; &gt; &gt; &gt; gdal<br>
&gt; &gt;<br>
&gt; &gt; 1.6<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; or<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; 1.8. Just to summarise, there were three issues as I see them:<br>
&gt; &gt; &gt; &gt; &gt;    1. Bounding boxes for raster data are computed differently (but<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; better)<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    in newer versions<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Specific to PixelIsPoint in the GTiff driver.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    2. While v1.6 of ogre would allow an single number of type<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; numpy.ndarray<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    this is no longer allow. Casting it to a float solves the<br>
&gt; &gt; &gt; &gt; &gt;    problem.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I wasn&#39;t aware it could work before. There&#39;s perhaps now an ambiguity<br>
&gt; &gt;<br>
&gt; &gt; on<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; which<br>
&gt; &gt; &gt; &gt; method to use, due to the addition of new possibilities for<br>
&gt; &gt; &gt; &gt; SetField() (just a<br>
&gt; &gt; &gt; &gt; bling guess).<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    3. New versions of ogre will not allow attribute names of length<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; longer<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    than 10 (at least when using the ESRI driver). Formerly, I think<br>
&gt; &gt;<br>
&gt; &gt; it<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; silently<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;    truncated, now it is up to the user. That&#39;s at least what I did.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I&#39;ve a looked quickly a bit at your code and I&#39;ve the feeling that<br>
&gt; &gt; &gt; &gt; you truncate<br>
&gt; &gt; &gt; &gt; yourself, instead of relying on OGR. The Shapefile driver does more<br>
&gt; &gt;<br>
&gt; &gt; than<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; truncating. It also ensures uniqueness of the truncated names. For<br>
&gt; &gt;<br>
&gt; &gt; example,<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; if<br>
&gt; &gt; &gt; &gt; you try creating &quot;a_very_long_name&quot; and &quot;a_very_long_name_again&quot;,<br>
&gt; &gt; &gt; &gt; they<br>
&gt; &gt;<br>
&gt; &gt; will<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; be<br>
&gt; &gt; &gt; &gt; respectively truncated to &quot;a_very_lon&quot; and &quot;a_very_l_1&quot;. A safer<br>
&gt; &gt;<br>
&gt; &gt; solution<br>
&gt; &gt;<br>
&gt; &gt; &gt; &gt; to get<br>
&gt; &gt; &gt; &gt; the field name that got to the file would be to :<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; field_defn = ogr.FieldDefn(&quot;a_very_long_name&quot;, ogr.OFTString)<br>
&gt; &gt; &gt; &gt; lyr.CreateField(field_defn)<br>
&gt; &gt; &gt; &gt; layer_defn = lyr.GetLayerDefn()<br>
&gt; &gt; &gt; &gt; last_field_idx = layer_defn.GetFieldCount() - 1<br>
&gt; &gt; &gt; &gt; real_field_name =<br>
&gt; &gt; &gt; &gt; layer_defn.GetFieldDefn(last_field_idx).GetNameRef()<br>
</div></div></blockquote></div><br>