[QGIS Commit] r11698 - trunk/qgis/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Sep 21 15:48:40 EDT 2009


Author: jef
Date: 2009-09-21 15:48:38 -0400 (Mon, 21 Sep 2009)
New Revision: 11698

Modified:
   trunk/qgis/src/core/qgsvectorfilewriter.cpp
   trunk/qgis/src/core/qgsvectorfilewriter.h
Log:
fix #1941

Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp	2009-09-21 19:47:42 UTC (rev 11697)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp	2009-09-21 19:48:38 UTC (rev 11698)
@@ -116,7 +116,9 @@
   QgsDebugMsg( "creating " + QString::number( fields.size() ) + " fields" );
 
   mFields = fields;
+  mAttrIdxToOgrIdx.clear();
 
+  int ogrIdx = 0;
   QgsFieldMap::const_iterator fldIt;
   for ( fldIt = fields.begin(); fldIt != fields.end(); ++fldIt )
   {
@@ -178,6 +180,8 @@
       mError = ErrAttributeCreationFailed;
       return;
     }
+
+    mAttrIdxToOgrIdx.insert( fldIt.key(), ogrIdx++ );
   }
 
   QgsDebugMsg( "Done creating fields" );
@@ -218,9 +222,15 @@
       continue;
     }
 
-    int ogrField = fldIt.key();
-    const QVariant& attrValue = feature.attributeMap()[ ogrField ];
+    if ( !mAttrIdxToOgrIdx.contains( fldIt.key() ) )
+    {
+      QgsDebugMsg( QString( "no ogr field for field %1" ).arg( fldIt.key() ) );
+      continue;
+    }
 
+    const QVariant& attrValue = feature.attributeMap()[ fldIt.key()];
+    int ogrField = mAttrIdxToOgrIdx[ fldIt.key()];
+
     switch ( attrValue.type() )
     {
       case QVariant::Int:

Modified: trunk/qgis/src/core/qgsvectorfilewriter.h
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.h	2009-09-21 19:47:42 UTC (rev 11697)
+++ trunk/qgis/src/core/qgsvectorfilewriter.h	2009-09-21 19:48:38 UTC (rev 11698)
@@ -98,6 +98,9 @@
 
     /** geometry type which is being used */
     QGis::WkbType mWkbType;
+
+    /** map attribute indizes to OGR field indexes */
+    QMap<int, int> mAttrIdxToOgrIdx;
 };
 
 #endif



More information about the QGIS-commit mailing list