[gdal-dev] Open source vector geoprocessing libraries?
Mateusz Loskot
mateusz at loskot.net
Wed Jan 13 15:59:25 EST 2010
Jason Roberts wrote:
> Mateusz,
>
> Thank you very much for your insight. I have a few more questions I'm
> hoping you could answer.
>
>> Alternative is to try to divide the tasks: 1. Query features from
>> data source using spatial index capability of data source. 2.
>> Having only subject features selected, apply geometric processing.
>
> That sounds like a reasonable approach. Considering just the simpler
> scenarios, such as the one I mentioned, is it possible to implement
> efficiently it with OGR compiled with GEOS?
Should be, but OGRGeometry -> geos::Geometry translation may be an overhead.
> I believe OGR can pass through SQL directly to the data source
> driver, allowing the caller to submit SQL containing spatial
> operators. In principle, one could submit a spatial query to PostGIS
> or SpatiaLite and efficiently get back the features (including
> geometry) that could possibly intersect a bounding box. Then one
> could use the GEOS functions on OGRGeometry to do the actual
> intersecting. Is that what you were suggesting?
Yes, that's the concept
> Of course, it may be that PostGIS or SpatiaLite can handle both steps
> 1 and 2 in a single query. If so, would it be best to do it that way?
>
It's usually a good idea to let the DBMS engine to do as much as
possible, so looks like a good idea to me.
> It appears that the OGR shapefile driver supports a spatial indexing
> scheme (.qix file) that is respected by OGRLayer::SetSpatialFilter.
> The documentation says that "Currently this test is may be
> inaccurately implemented, but it is guaranteed that all features
> who's envelope (as returned by OGRGeometry::getEnvelope()) overlaps
> the envelope of the spatial filter will be returned." Therefore, it
> appears that the shapefile driver can implement step 1 but not step
> 2. Is that correct?
Yes.
>> The problem with OGR and GEOS is cost of translation from OGR
>> geometry to GEOS geometry. It can be a bottleneck.
>
> Is it correct that this cost would only be incurred when you call OGR
> functions implemented by GEOS, such as OGRGeometry::Intersects,
> OGRGeometry::Disjoint, etc?
Yes.
Namely, here potential cost takes place:
http://trac.osgeo.org/gdal/browser/trunk/gdal/ogr/ogrgeometry.cpp#L333
>> It's plenty of combinations and my point is that if performance
>> (it's not only in terms of speed, but any resource) is critical, it
>> would be extremely difficult to provide efficient implementation
>> of such features in OGR with guaranteed or even determinable degree
>> of complexity. Without these guarantees, I see little of use of
>> such solution.
>
> Yes, I see what you mean. But I suggest to the open source community
> that there is still value in implementing such features, either as
> part of OGR or another library, even if optimal performance cannot be
> guaranteed in all scenarios.
Perhaps you'll find these inspiring:
http://trac.osgeo.org/qgis/browser/trunk/qgis/src/analysis/vector
Look at the Java camp too.
Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
More information about the gdal-dev
mailing list