Hi Takashi,
Just an idea : what happens if you specify a tolerance instead of letting the FGDB API to decide it for you?
Itay
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
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
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
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
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
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
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
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
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
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!