@@ -227,7 +227,8 @@ static void msOGRSetPoints( OGRGeometryH hGeom, lineObj *line, int bWant2DOutput
227
227
/************************************************************************/
228
228
229
229
static int msOGRWriteShape ( layerObj * map_layer , OGRLayerH hOGRLayer ,
230
- shapeObj * shape , gmlItemListObj * item_list )
230
+ shapeObj * shape , gmlItemListObj * item_list ,
231
+ int nFirstOGRFieldIndex )
231
232
232
233
{
233
234
OGRGeometryH hGeom = NULL ;
@@ -435,7 +436,7 @@ static int msOGRWriteShape( layerObj *map_layer, OGRLayerH hOGRLayer,
435
436
/* -------------------------------------------------------------------- */
436
437
/* Set attributes. */
437
438
/* -------------------------------------------------------------------- */
438
- out_field = 0 ;
439
+ out_field = nFirstOGRFieldIndex ;
439
440
for ( i = 0 ; i < item_list -> numitems ; i ++ ) {
440
441
gmlItemObj * item = item_list -> items + i ;
441
442
@@ -641,6 +642,7 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
641
642
const char * value ;
642
643
char * pszWKT ;
643
644
int reproject = MS_FALSE ;
645
+ int nFirstOGRFieldIndex = -1 ;
644
646
645
647
if ( !layer -> resultcache || layer -> resultcache -> numresults == 0 )
646
648
continue ;
@@ -792,6 +794,11 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
792
794
msOGRCleanupDS ( datasource_name );
793
795
return MS_FAILURE ;
794
796
}
797
+
798
+ /* The index of the first field we create is not necessarily 0 */
799
+ if ( nFirstOGRFieldIndex < 0 )
800
+ nFirstOGRFieldIndex = OGR_FD_GetFieldCount (
801
+ OGR_L_GetLayerDefn ( hOGRLayer ) ) - 1 ;
795
802
}
796
803
797
804
/* -------------------------------------------------------------------- */
@@ -868,7 +875,7 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
868
875
869
876
if ( status == MS_SUCCESS )
870
877
status = msOGRWriteShape ( layer , hOGRLayer , & resultshape ,
871
- item_list );
878
+ item_list , nFirstOGRFieldIndex );
872
879
873
880
if (status != MS_SUCCESS ) {
874
881
OGR_DS_Destroy ( hDS );
0 commit comments