[gdal-dev] Intersection of two Layers
Ari Jolma
ari.jolma at gmail.com
Mon Jan 18 23:40:30 PST 2016
18.01.2016, 11:56, Kai Muehlbauer kirjoitti:
> Hi,
>
> at the moment I calculate the intersection of two OGR Layers (A, B) by
> iterating over features/geometries (GA) of layer A and then calling
> GA.Intersection(GB) for every Feature/Geometry (GB) of B. I set a
> spatial filter for layer B with every GA. The intersections
> features/geometries are written to a result layer (C).
>
> In my use case the features/geometries of layer B are much smaller
> than the features of layer A. Means that quite a big number of B's
> geometries are fully contained in A's geometries.
>
> To speed things up, I check for containment GA.contains(GB). If GB is
> contained in GA, I just copy GB to C, otherwise I calculate
> GA.Intersection(GB) and write this to C.
>
> I found that I also could use the layer intersection function
> (OGRLayer::Intersection). Unfortunately the intersection is calculated
> for every feature/geometry.
>
> Would it be possible to extend the layer intersection function to
> allow for containment check (eg. as an option) and just copy the
> contained geometries without calculation of expensive intersection?
> Suggestions, opinions?
There's the Options argument, which could be used. Something like
"PRETEST=CONTAINMENT" could indicate a wish to test containment before
intersection.
A test dataset and a patch would be useful.
Ari
>
> In my use case I get improvements of around 20% of processing time.
>
> Cheers,
> Kai
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
More information about the gdal-dev
mailing list