False origin and system units

When you add a spatial reference system to the spatial_references table, you include a false origin and system unit to store all of your coordinate values at an acceptable scale.

Restriction: Do not change a spatial reference system's false origin and system units after you inserted spatial data into a table with the corresponding SRID. The false origin and system units translate and scale your data before storage. If you change these values, you cannot retrieve your original floating point coordinate data.

You must know the range of your data and the scale to maintain. Because coordinates are stored as positive 54-bit integers, the maximum range of values that are allowed is 0 - 9 007 199 254 740 991, but the actual range is dependent on the false origin and system units of the spatial reference system.

A negative false origin shifts the range of values in the negative direction. A positive false origin shifts the range of values in the positive direction. For example, a false origin of –1000, with a system unit of one, stores a range of values from –1000 through 253 –1000.

The system unit scales the data and cannot be less than one. The larger the system unit the greater the scale that can be stored, but the smaller the range of values. For example, given a system unit of 1000 and a false origin of zero, data with 3 digits to the right of the decimal point are supported; the range of possible values is reduced to 0.001 to 250.

If you want to maintain a scale of 3 digits to the right of the decimal point, set your system units to 1000. Set the false origin to less than the minimum coordinate value in your data set. The false origin must be small enough to account for any buffering of the data. If the minimum coordinate value is –10 000 and your application includes functions that buffer the data by 5000, the false origin must be at least –15 000. Finally, make sure that the maximum ordinate value is not greater than 253 by applying the following formula to the maximum value. This formula converts floating point coordinates into system units:
stored value = truncate(((ordinate - false origin) * system unit) + 0.5)

The SE_CreateSRID() function computes the false origin and system units for the specified X and Y extents of a spatial data set.