Home    |    Concepts   |   API   |   Samples
Concepts > Geometry > Coordinate References
Basic Principles
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.

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.

feedback | privacy | legal