Skip to main content
Question

FILEGDB Writer: How to avoid change of coordinate value precision

  • August 8, 2013
  • 11 replies
  • 94 views

takashi
Celebrity
Hi,

 

 

I have an XML document containing coordinate values having 3 decimal places: e.g. <X>259.042</X><Y>1521.734</Y>. My workspace transforms (X, Y) values to point geometries with 2DPointReplacer and writes those into a File Geodatabase with FILEGDB writer. Translation finished successfully, but when I confirmed the GDB with the Inspector, I noticed that the precision of coordinate values has been changed like this: Source XML: (259.042, 1521.734) Destination GDB: (259.0419921875,1521.73400878906)   In addition "XY Tolerence" parameter of the FILEGDB writer is set to default (i.e. blank), and the environment is: FME 2013 SP2 Build 13499 Win32.   When I wrote the same data into a shape file via the same workspace for comparison, such a change has not been occurred in the shape file. So I guess the FILEGDB writer caused the change. I can modify the precision using the CoordinateRounder after reading GDB, but ideally, of course, I want to avoid the change when writing. Does anyone know the reason for the change, and how to avoid it?   Thanks in advance.

 

 

Takashi
This post is closed to further activity.
It may be an old question, an answered question, an implemented idea, or a notification-only post.
Please check post dates before relying on any information in a question or answer.
For follow-up or related questions, please post a new question or idea.
If there is a genuine update to be made, please contact us and request that the post is reopened.

11 replies

fmelizard
Safer
Forum|alt.badge.img+20
  • Safer
  • 3719 replies
  • August 8, 2013
Hi Takashi,

 

Just an idea : what happens if you specify a tolerance instead of letting the FGDB API to decide it for you?

 

 

Itay

takashi
Celebrity
  • Author
  • 7843 replies
  • August 8, 2013
Hi Itay,   Thank you for the reply. I made some tests with various XY tolerance settings ("0.01", "0.001", "0.0001" etc.), but I got always the same result unfortunately (:-(   I uploaded simplified data and workspaces here: data.xml writer.fmw: read XML, create points and write GDB and Shape reader.fmw: read and inspect GDB and Shape   "writer.fmw" will reproduce the issue. Please try it If you are interested in this issue.

 

 

Takashi

fmelizard
Safer
Forum|alt.badge.img+20
  • Safer
  • 3719 replies
  • August 8, 2013
Hi Takashi,

 

 

I have had a look at your data and also wrote it to a ArcObjects gdb with the same results.

 

I can only conclude what you have stated previously, the difference is created when written to the gdb, so obviously it is a matter that is incoorporated in the gdb.

 

 

Itay

takashi
Celebrity
  • Author
  • 7843 replies
  • August 8, 2013
Hi Itay,

 

 

Thanks for your suggestions.

 

So... it seems that this problem cannot be avoided at present. According to checking the data properties using the ArcCatalog, it seems that the GDB data written with XY tolerance = 0.001 is treated in the same tolerance by the ArcGIS. Since the client will use the GDB data with the ArcGIS, it may not be a practical problem.

 

Regards, Takashi

  • 22 replies
  • August 8, 2013
Hi Takashi,

 

 

This seems to be a restriction or bug in the FILEGDB writer.

 

 

There are 2 possible workarounds:

 

1) Use the GEODATABASE_FILE writer

 

or

 

2) Create the FileGeodatabase and the FeatureClass using ArcCatalog and write then in this FeatureClass with the FILEGDB writer

 

 

Regards,

 

Thomas

takashi
Celebrity
  • Author
  • 7843 replies
  • August 9, 2013
Hi Thomas,   Thanks for your suggestions. I made tests on the two workarounds, but I couldn't get expected results. I uploaded test workspaces including those workarounds here, for your information. data.xml

 

data3.gdb: empty geodatabase including pre-defined feature class writer2.fmw: read XML, create points and write GDB and Shape reader2.fmw: read and inspect GDB and Shape

 

 

This issue might be a restriction of the File Geodatabase format itself.

 

I also requested Safe support, hoping they can provide a solution.

 

 

Regards,

 

Takashi

takashi
Celebrity
  • Author
  • 7843 replies
  • August 15, 2013
Safe support suggested 3 workarounds against my request.

 

 

1) Set the coordinate system as it will generally use the 'best' default precision

 

I specify LL84 or LL-JGD2K, output geometreis will have indeed 3 decimal points precision. However, the coordinate system of the source data is a plane rectangular CS (JGD2K-**), and  I couldn't get preferable result in the actual coordinate system.

 

 

2) Use GDB (ArcObjects) writer with a template file

 

I couldn't find how to create a template file for the writer, so I have not confirm this workaround yet.

 

 

3) Use GDB (ArcObjects) writer with specifying X origin, Y origin, X,Y scale parameters

 

After specifying X origin = 0, Y origin = 0, X,Y scale = 1000, I got output  with preferable coordinate precision i.e. 3 decimal places.

 

It can be a solution for my current project :-)

 

 

Thanks again for your helps.

 

 

Takashi

takashi
Celebrity
  • Author
  • 7843 replies
  • August 16, 2013
Sharing the information.

 

Safe support additionally provided me the information about how to create XML template file for the GDB (ArcObjects) writer: Creating Geodatabases based on existing Geodatabases

 

 

But XML document exporting functionality seems to be supported in "Standard" or higher ArcGIS license. Since my current ArcGIS license is "Basic", I still can't confirm this way.

 

 

Takashi

  • 6 replies
  • August 27, 2013
Hi

 

 

We had the same problem and the workaround 3) solves only part of the problem.

 

If you create with ArcGIS a FGDB you can set the resolution and tolerance. With FME the tolerance is derived from the resolution (as far as I know).  

 

 

ESRI Help:
  • X/Y resolution: The precision with which coordinates within a feature class are recorded

     

     
  • X/Y tolerance: A cluster tolerance used to cluster features with coincident geometry; used in topology, feature overlay, and related operations

I tried the xml export and it didn't work for me. Do you know if there is a possibility to set the ESRI tolerance independent from the resolution?

 

 

thanks for any hint

 

felix

takashi
Celebrity
  • Author
  • 7843 replies
  • August 29, 2013
Hi felix,

 

 

The tolerance seems to be determined depending on the resolution when the feature class is created via FME GDB (ArcObjects) writer.

 

In my testing, the resolution was set to 1 / X,Y Scale parameter of the writer, the tolerance always became twice the resolution.

 

X,Y Scale | Resolution | Tolerance

 

1000 | 0.001 | 0.002

 

5000 | 0.0002 | 0.0004

 

10000 | 0.0001 | 0.0002

 

50000 | 0.00002 | 0.00004

 

100000 | 0.00001 | 0.00002

 

 

I have no idea how to set the tolerance independent from the resolution.

 

Additionally, even if creating new feature class via ArcCatalog, the tolerence and the resolution seem to be related each other. I guess there is a restriction like "the tolerance has to be equal to or greater than twice the resolution".

 

 

Takashi

ostoja
Contributor
Forum|alt.badge.img+6
  • Contributor
  • 26 replies
  • September 9, 2019

Hi @takashi,

I see this is an old post, but nevertheless could you please tell me if you have some hint how to avoid this coordinate value change?

I have the same problem in FME 2019 and difference in coordinate values is not small. Problem is described on Coordinates precision changed when writting to ESRI FGDB.

Thanks in advance!