[gdal-dev] Precision Mystery (FGDB)

Ragi Burhum ragi at burhum.com
Fri Jul 1 13:56:52 EDT 2011


Paul,

The one line that I think is making the difference is

<HighPrecision>true</HighPrecision>

because, if memory serves me right, it kicks in logic for using
64bit-coordinates internally (actually I remember something about the sign
and the mantissa being 53bits - can't recall exactly). ESRI migrated to what
they call high precision coordinate system in ArcGIS
9.2<http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=Migrating_to_high_precision>.
So all the software really expects the coordinate system to be declared that
way by now. There is a good white paper on the ESRI site that describes how
ArcGIS manages its coordinate systems
internally<http://downloads.esri.com/support/whitepapers/ao_/UnderstandingCoordinateManagement_June2007.pdf>.
I hope that helps.

- Ragi



Date: Thu, 30 Jun 2011 13:26:21 -0700
> From: Paul Ramsey <pramsey at cleverelephant.ca>
> Subject: Re: [gdal-dev] Precision Mystery (FGDB)
> To: gdal-dev at lists.osgeo.org
> Message-ID: <BANLkTikNQyhsDkuNFNdEkN3S6GiHL5ihDQ at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> OKAY, found it, and it's an odd one. It has nothing to do with the
> shape buffers or the transit into PostGIS... I just wrote a small
> program that uses the FGDB API almost exclusively, it only uses OGR to
> write the shape buffer.
>
> And the difference is in the declaration of the SRS... when I declare
> a UTM srs with the following extra XML
>
>                                    <XOrigin>-5120900</XOrigin>
>                                    <YOrigin>-9998100</YOrigin>
>                                    <XYScale>10000</XYScale>
>                                    <ZOrigin>-100000</ZOrigin>
>                                    <ZScale>10000</ZScale>
>                                    <MOrigin>-100000</MOrigin>
>                                    <MScale>10000</MScale>
>                                    <XYTolerance>0.001</XYTolerance>
>                                    <ZTolerance>0.001</ZTolerance>
>                                    <MTolerance>0.001</MTolerance>
>                                    <HighPrecision>true</HighPrecision>
>
> Then writing the POINT(1 2 3) and reading back with ogrinfo I get
>
> FID Column = OBJECTID
> Geometry Column = SHAPE
> OGRFeature(test):1
>  POINT (1 2 3)
>
> But if I omit those lines, I get:
>
> FID Column = OBJECTID
> Geometry Column = SHAPE
> OGRFeature(test):1
>  POINT (1.000001729731139 1.999981429457875 0.0)
>
> Weird precision changes and my Z is gone! So those things matter...
> but what do they do...
>
> P.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20110701/84a132ce/attachment.html


More information about the gdal-dev mailing list