瀏覽代碼

v.in.ogr: disable unreliable OGR extents for spatial filter

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@73577 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 6 年之前
父節點
當前提交
a4399ded88
共有 1 個文件被更改,包括 7 次插入4 次删除
  1. 7 4
      vector/v.in.ogr/main.c

+ 7 - 4
vector/v.in.ogr/main.c

@@ -2179,6 +2179,8 @@ int create_spatial_filter(ds_t Ogr_ds, OGRGeometryH *poSpatialFilter,
 
 	    /* use OGR extents if possible, needed to skip corrupted data
 	     * in OGR dsn/layer */
+	    /* BUT: OGR extents are unreliable, 
+	     * sometimes excluding valid features */
 	    have_ogr_extent[layer] = 1;
 	}
 	/* OGR_L_GetExtent(): 
@@ -2236,7 +2238,10 @@ int create_spatial_filter(ds_t Ogr_ds, OGRGeometryH *poSpatialFilter,
     for (layer = 0; layer < nlayers; layer++) {
 	int have_filter = 0;
 
-	if (have_ogr_extent[layer]) {
+	/* OGR extents are unreliable, 
+	 * sometimes excluding valid features:
+	 * disabled */
+	if (0 && have_ogr_extent[layer]) {
 	    if (*xmin <= *xmax && *ymin <= *ymax) {
 		/* check for any overlap */
 		if (xminl[layer] > *xmax || xmaxl[layer] < *xmin ||
@@ -2257,9 +2262,7 @@ int create_spatial_filter(ds_t Ogr_ds, OGRGeometryH *poSpatialFilter,
 		    ymaxl[layer] = MIN(ymaxl[layer], *ymax);
 		}
 	    }
-	    /* disable spatial filter based on extents as reported by OGR
-	     * because these extents can be wrong */ 
-	    /* have_filter = 1; */
+	    have_filter = 1;
 	}
 	else if (*xmin <= *xmax && *ymin <= *ymax) {
 	    xminl[layer] = *xmin;