فهرست منبع

v.in.ogr: set spatial filter to correct geometry field if geom option is given

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@74137 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 6 سال پیش
والد
کامیت
42c64f06b1
1فایلهای تغییر یافته به همراه15 افزوده شده و 0 حذف شده
  1. 15 0
      vector/v.in.ogr/main.c

+ 15 - 0
vector/v.in.ogr/main.c

@@ -768,7 +768,22 @@ int main(int argc, char *argv[])
 
 	for (layer = 0; layer < nlayers; layer++) {
 	    Ogr_layer = ds_getlayerbyindex(Ogr_ds, layers[layer]);
+#if GDAL_VERSION_NUM >= 1110000
+	    if (param.geom->answer) {
+		Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
+		igeom = OGR_FD_GetGeomFieldIndex(Ogr_featuredefn, param.geom->answer);
+		if (igeom < 0)
+		    G_fatal_error(_("Geometry column <%s> not found in input layer <%s>"),
+				  param.geom->answer, OGR_L_GetName(Ogr_layer));
+
+		OGR_L_SetSpatialFilterEx(Ogr_layer, igeom, poSpatialFilter[layer]);
+	    }
+	    else {
+		OGR_L_SetSpatialFilter(Ogr_layer, poSpatialFilter[layer]);
+	    }
+#else
 	    OGR_L_SetSpatialFilter(Ogr_layer, poSpatialFilter[layer]);
+#endif
 	    if (OGR_L_SetAttributeFilter(Ogr_layer, attr_filter) != OGRERR_NONE)
 		G_fatal_error(_("Error setting attribute filter '%s'"),
 			      attr_filter);