Просмотр исходного кода

vlib: ignore fid column when writing attributes for OGR layers

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47799 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 13 лет назад
Родитель
Сommit
d4e98d9503
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      lib/vector/Vlib/write_ogr.c

+ 3 - 2
lib/vector/Vlib/write_ogr.c

@@ -417,7 +417,8 @@ dbDriver *create_table(OGRLayerH hLayer, const struct field_info *Fi)
 	sqltype = db_get_column_sqltype(column);
 	ogrtype = sqltype_to_ogrtype(sqltype);
 		
-	if (OGR_FD_GetFieldIndex(hFeatureDefn, colname) > -1) {
+	if (strcmp(OGR_L_GetFIDColumn(hLayer), colname) == 0 ||
+	    OGR_FD_GetFieldIndex(hFeatureDefn, colname) > -1) {
 	    /* field already exists */
 	    continue;
 	}
@@ -425,7 +426,7 @@ dbDriver *create_table(OGRLayerH hLayer, const struct field_info *Fi)
 	hFieldDefn = OGR_Fld_Create(colname, ogrtype);
 	/* OGR_Fld_SetWidth(hFieldDefn, length); */
 	if (OGR_L_CreateField(hLayer, hFieldDefn, TRUE) != OGRERR_NONE) {
-	    G_warning(_("Creating field <%s> failed\n"), colname);
+	    G_warning(_("Creating field <%s> failed"), colname);
 	    db_close_database_shutdown_driver(driver);
 	    return NULL;
 	}