Skip to main content

I'm not sure how the FeatureReader is working when using the spatial filter on Oracle SDE data. I see the following entry in my log file:

Notice - reader format `GEODATABASE_SDE' does not support querying by spatial predicate, but supports envelope queries. FME will create equivalent results by performing spatial predicate calculations locally

If you have the geometries stored as SDO_GEOMETRY type, you could use the Oracle Spatial reader instead of the ESRI geodatabase reader.

The Oracle Spatial reader supports spatial filters if the table is indexed spatially.


So does this mean that the spatial filter in the FeatureReader does not work for Oracle SDE then? We don't have Oracle Spatial.


If you add the SDE Geodatabase Reader you'll see it has the "Use Search Envelope" option but nothing else.

As erik_jan eludes to do you could use his approach if your geometry is stored in SDO_GEOMETRY (native Oracle geometry)

There also looks like another way that you might be able to do this with the SDE Geodatabase Reader (in the FeatureReader as well) using the WHERE clause and you could pass an SDO_FILTER or SDO_RELATE spatial query to the Geodatabase. But your geometry must be stored in SDO_GEOMETRY in the database and you'll be faced with creating the interacting geometry in this where clause - which could be involved.

See the last section on this page: http://desktop.arcgis.com/en/arcmap/latest/manage-data/gdbs-in-oracle/sdogeometry-feature-classes.htm

I suspect you will have better luck in both cases by creating an MBR of the interacting feature and passing this to the Reader using just the four values representing Lower Right and Upper Left coordinates of the search envelope.


@jlindahl Looks like on the FeatureReader set the Spatial Filter to "Envelope Intersects" and ensure the initiator features is an MBR feature. BoundingBoxReplacer would get you the MBR of a feature and this could be passed to the FeatureReader.


Reply