Defining a coordinate reference
ArcSDE adds some additional requirements for a coordinate transformation in
that floating point real-world units must be converted to positive integer
system units for storage in the database.
This conversion requires the following false origin and scale information:
- falsex: A false origin for x-coordinate values.
- falsey: A false origin for y-coordinate values.
- xyunits: A scale factor to convert from world units to integer x,y-system units.
- falsez: A false origin for z-coordinate values.
- zunits: A scale factor to convert from elevation units to integer z system
units.
- falsem: A false origin for measure coordinate values.
- munits: A scale factor to convert from measure units to integer m-system units.
ArcSDE can use either 32-bit or 64-bit positive integers, depending on the
RDBMS being used. When using 32-bit positive integers, they must be between 0 and 2147483645. The
values must be between 0 and ???. This format provides better data accuracy,
data integrity, and processing speed than real numbers. Because real world coordinates are often neither positive nor integer, ArcSDE
requires an offset distance (a false origin) to ensure numbers are positive and
a minimum resolution multiplier (called the scale factor) to convert real
numbers to integers.
The conversion algorithm is:
ArcSDE X = truncate ((( X coordinate - false X ) * xyunits ) + 0.5 )
ArcSDE Y = truncate ((( Y coordinate - false Y ) * xyunits ) + 0.5 )
ArcSDE Z = truncate ((( Z coordinate - false Z ) * zunits ) + 0.5 )
ArcSDE M = truncate ((( M coordinate - false M ) * munits ) + 0.5 )
0.5 is added to round off numbers. ArcSDE coordinates are converted back
to plane coordinates with the following formula:
X coordinate = (( ArcSDE X / xyunits ) + false X)
Y coordinate = (( ArcSDE Y / xyunits ) + false Y)
Z coordinate = (( ArcSDE Z / zunits ) + false Z)
M coordinate = (( ArcSDE M / munits ) + false M) |
False origin
The false origin (false x, false y, false z) translates the origin of the layer in either a positive or negative direction along any of the three axes. As a rule,
the false origin of a layer should be set to its minimum x, y, z plane coordinate. The z-origin should be set to 0 for two-dimensional layers.
A false origin is mandatory for layers that have negative world coordinates.
In the adjoining figure of USA, coordinates are in latitude-longitude decimal degrees.
All coordinates must be positive, so the false origin is set
to at least the minimum x-value (125.652), but probably even further to
move all features into positive space. You want to be sure you allow for
more features to be added in all directions. If Hawaii and Alaska are
added to the layer, you'll need to shift the false origin to about -180,18.
The false origin is moved so that the minimum x-coordinate will be positive. The y-values are all positive, but you can extend the y false origin in case other
data is added to the database.
![](../../../../images/coord_def_03.jpg)
A false origin can also improve coordinate precision, especially for maps that
cover a very small area. For example, the extent of the lots layer shown below
has more than 10 digits, so ArcSDE will not keep all of them if you are using
32-bit integers. You can offset the origin in the positive direction because all
coordinates are the same for the first two digits in the x-direction (2400000)
and one digit in the y-direction. You could set the false origin to 2400000,
700000, 0. This preserves the precision of the numbers when they are converted
to integers. This type of manipulation is much less necessary when using 64-bit
integers.
Minimum resolution
The minimum resolution below which the precision of a plane coordinate is
truncated is called the scale. It's the value that real world coordinates are
multiplied by when converting to integer values. The scale is the inverse of the
data's precision. For instance, for a layer with units of measure in meters and
a data precision of no less than half a centimeter, the xyscale would be set to
200. Remember that digital data is only as accurate as its source. z-coordinates
and measures also can have scales.
You can translate the precision of real numbers to the scale. In the example
above, the coordinates are stored to three decimal places. A scale of 1000 will
convert the numbers to integers and preserve the same resolution.
Double-precision coordinates may have up to six decimal places. ArcSDE integers
can have up to ten digits (about two billion), so you need to consider the
number of digits to the left of the decimal place plus the number to the right
in deciding the system unit.
A quick look at the coordinate values of your data will show you the number of
decimal places you can use to determine the system unit.
|