Spatial references

Spatial references include a coordinate system for x-, y-, and z-values. In enterprise geodatabases, the spatial reference also includes tolerance and resolution values. All this information together helps indicate where on the earth the shapes on your flat map represent.

Each spatial reference also has an identifier (often called a well-known ID, spatial reference ID, or SRID) and a well-known text definition of the coordinate system. There are certain standard IDs, such as those defined by the European Petroleum Survey Group (EPSG) or Esri, but the ID for spatial references is not always standard. This has implications when moving your spatial data between databases. See the section "How the spatial reference system is used in ArcGIS" in this topic for more information.

When created through ArcGIS, a spatial reference system with a specific SRID is assigned to the feature class. If a spatial reference is not assigned, the feature class has an unknown spatial reference. This spatial reference and SRID apply to all rows in the feature class.

When spatial tables are created directly in the database (outside of ArcGIS), each record in a spatial table can be assigned a different SRID and spatial reference. However, when you use these database tables with ArcGIS, ArcGIS only recognizes one SRID and spatial reference for the whole table. You can define a query layer to specify which SRID will be used, and all rows with that SRID will be accessible in ArcGIS. Otherwise, ArcGIS reads the SRID of the first row in the table, and only rows that have that SRID defined will be accessible in ArcGIS.

Spatial reference tables

In enterprise geodatabases and databases supported by ArcGIS, all spatial reference systems are stored in a system table.

Spatial reference tables in geodatabases

Beginning with ArcGIS 10.1, the system table used for ST_Geometry in Oracle (sde.st_spatial_references) and PostgreSQL (public.sde_spatial_references) is prepopulated with spatial reference systems that use EPSG codes for the spatial reference IDs (SRIDs). Upgraded geodatabases in Oracle and PostgreSQL will have the spatial reference systems added to the sde.st_spatial_references and public.sde_spatial_references tables.

For a definition of all the columns in the spatial reference tables in geodatabases in each database management system, see the respective system table topics:

Dive-inDive-in:

These are the technical details of how the spatial reference system is used in a geodatabase:

Internal functions use the parameters of a spatial reference system to translate and scale each floating-point coordinate of the geometry into a 64-bit positive integer prior to storage. Upon retrieval, the coordinates are restored to their external floating-point format.

The floating-point coordinates are converted to integers by subtracting the false x- and false y-values, which translates to the false origin; scaling by multiplying by the x,y units; adding a half unit; then truncating the remainder.

The optional z-coordinates and measures are dealt with similarly, except they are translated with false z- and false m-values and scaled with z-units and m-units, respectively.

Spatial reference tables in databases

With the exception of the ST_Geometry type installed in an Oracle, PostgreSQL, or SQLite database, databases that use an SQL geometry type do not contain an ArcGIS system table. Each DBMS has its own system table or tables to store spatial reference metadata. In general, those tables store the coordinate system's well-known text and ID but do not store precision or tolerance values.

Most databases use EPSG codes for their spatial reference IDs.

See your DBMS documentation for details.

How the spatial reference system is used in ArcGIS

When you create a feature class in ArcGIS, you choose a spatial reference. If you are storing your data in a geodatabase, ArcGIS calculates default x-, y-, z-, and m-units and offsets based on the spatial reference you choose.

When data is pasted or imported into a database or enterprise geodatabase using ArcGIS, ArcGIS takes the well-known text description and ID of the coordinate system of the incoming data, along with the tolerance and resolution if present, and compares it to values in the spatial reference system table. If a match is found, the existing spatial reference is used. If a match is not found—for example, if the incoming data has a custom spatial reference—what happens depends on the spatial type used for the spatial column of the table created in the target database or geodatabase.

See What is an SRID for a list of what SRID is used in the target PostgreSQL, Oracle, SQL Server, or Netezza database when importing or pasting spatial data.

Spatial data with an unknown spatial reference cannot be published as a service from ArcGIS. To publish the data, create a query layer on it and specify a spatial reference on the query layer.

Related Topics

6/19/2015