Question

ArcSDE: Write empty geometry instead of NULL geometry in FME

  • 4 December 2017
  • 3 replies
  • 15 views

Hi

I have an issue with NULL geometry features in ArcGIS. Such point features occur when I write them without a geometry to a ArcSDE DB by using FME. We found out that not only FME has problems reading such NULL geometry features (when using an ArcSDE Reader), but also when reading them through ESRI Mapping Services. However, when using an empty geometry instead of a NULL geometry, no errors occur.

In the Oracle database, a NULL and an empty geometry are differently defined:

NULL geometry: NULL

 

Empty geometry: MDSYS.SDO_GEOMETRY(3001,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,0,998,1,1,1),MDSYS.SDO_ORDINATE_ARRAY(1,1,1))

Is it somehow possible to write empty geometry features in FME (2016/2017)?

Greetings,

 

André


3 replies

Userlevel 4
Badge +13
Can you clarify a little? Are you wanting simply a Table? or a specific feature class with a specific geometry (e.g., points) to have features with no geometry?

 

Also it might help to know which Reader/Writer you are working with. For the best stability you should be working with the 'Esri Geodatabase (ArcSDE Geodb)' format not the 'Esri Legacy ArcSDE' (also known as SDE30).

 

 

Badge +11
Hi @andr_

 

Matt raises a good point - ensure you are using the Esri Geodatabase.

 

 

From your final comment it sounds like you have a need to write an empty geometry in the form: MDSYS.SDO_GEOMETRY(3001,2056,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,0,998,1,1,1),MDSYS.SDO_ORDINATE_ARRAY(1,1,1)). I don't think the Esri Geodatabase writer would be able to do this regardless.

 

 

However, since this is an Oracle Databse you could use the "SQL to Run After Writer" parameter on the Esri Geodatabase Writer after you write the null geometries to update the NULL geometries rows to the above empty geometry

 

 

Alternatively, you could use the Esri Geodatabase Writer (via FeatureWriter) to write the null geometry as you do now and then follow this up with an SQLExecutor that updates the NULL geometries rows entries.

 

 

I'm curious to learn the requirement to be able to write this empty geometry?

The Feature class itself has the geometry type 'Point'. However, some of the features do not have a geometry (geometry is optional). And yes, I use the ArcSDE Geodb Writer Format, not SDE30.

There are two issues with having NULL geometry objects in a feature class:

* FME (tested with 2016.1.3.1) will give you an error when reading the feature class. When there is only one Reader in the Workspace, the error won't cause the translation to fail. However, with two or more Readers, the error will stop the translation.

* Our ESRI Server Objects Extension (SOE) and ESRI Mapping Server cannot deal with NULL geometry and won't find the respective Features.

Writing NULL geometry in the ifrst place and the updating it with an empty geometry (which is accepted by FME and ESRI ArcGIS) is what I am doing at the moment as a workaround, but it is not exactely an elegant solution with having ESRI Archiving enabled.

Reply