Cuando crea una tabla o agrega una columna a una tabla de una base de datos, define un tipo de datos específico para la columna. Los tipos de datos determinan lo siguiente:
- Qué valores puede almacenar en la columna
- Qué operaciones puede utilizar en los datos de la columna
- Cómo se almacenan los datos de la columna en la base de datos
ArcGIS funciona con tipos de datos específicos. Cuando usted accede a una tabla de base de datos a través de una Conexión de base de datos, una capa de consulta o un servicio web, ArcGIS filtra todos los tipos de datos no compatibles. ArcGIS no muestra los tipos de datos no compatibles, ni usted puede editar los tipos de datos no compatibles a través de ArcGIS. De igual modo, cuando utiliza ArcGIS para copiar y pegar tablas que contienen tipos de datos no compatibles de una base de datos a otra, ArcGIS solo pega las columnas que utilizan un tipo de datos compatible.
La primera columna de la tabla siguiente enumera los tipos de datos de ArcGIS. En la segunda columna hay una lista de los tipos de datos PostgreSQL que crea ArcGIS. La tercera columna muestra qué otros tipos de datos PostgreSQL, si los hay, se asignan al tipo de datos de ArcGIS cuando ve una tabla creada fuera de ArcGIS (no registrada con la geodatabase). La última columna ofrece información adicional cuando es necesario.
Tipos de datos de ArcGIS | Tipos de datos de PostgreSQL creados | Otros tipos de datos de PostgreSQL que se pueden visualizar | Notas |
---|---|---|---|
BLOB | bytea | ||
Fecha | timestamp without time zone | date, time without time zone, time with time zone, timestamp with time zone | |
Doble | numeric(p,s) | double precision | La precisión y la escala especificadas en ArcGIS pueden afectar a los tipos de datos resultantes creados en la base de datos. Consulte Tipos de datos de campo de ArcGIS para obtener más información. |
Flotante | numeric(p,s) | decimal, double precision, numeric, real | La precisión y la escala especificadas en ArcGIS pueden afectar a los tipos de datos resultantes creados en la base de datos. Consulte Tipos de datos de campo de ArcGIS para obtener más información. |
Geometría | ST_Geometry, Geometry (PostGIS), Geography (PostGIS) | En una geodatabase, el ajuste GEOMETRY_STORAGE de la palabra clave de configuración empleada al crear la clase de entidad determina el tipo de datos que se crea en la base de datos. Para usar ST_Geometry en una base de datos (no una geodatabase), debe instalarlo. Consulte Agregar el tipo ST_Geometry a una base de datos de PostgreSQL para obtener información. Para utilizar el tipo de geometría o geografía de PostGIS, debe instalar PostGIS en su clúster de base de datos de PostgreSQL y la base de datos debe estar habilitada para utilizar PostGIS. Consulte la documentación de PostgreSQL para obtener más información. | |
Id. global | varchar(38) | Solo se admite en las geodatabases. | |
GUID | varchar(38) | UUID | |
Entero largo | entero | serie | |
Id. de objeto | Entero en una geodatabase Serie en una base de datos | El tipo de ArcGIS ObjectID es la columna de Id. de fila registrada de la tabla (o clase de entidad). Solo puede haber una por tabla. | |
Ráster | bytea | Los rásteres solo son compatibles con las geodatabases. | |
Entero corto | smallint | ||
Texto | character varying | character, text | Si crea un campo de texto utilizando un cliente SQL o una aplicación de terceros y no define una longitud (en otras palabras, la longitud es 0), ArcGIS lee este campo como un CLOB. |
Si su tabla contiene una columna con un tipo de datos que no es compatible con ArcGIS, puede convertir la columna a texto. Sin embargo, solo debe hacer esto si nada más desea ver los valores de la columna; no lo haga si necesita realizar cualquier análisis que utilice los valores de esa columna. Por ejemplo, podría ejecutar una declaración SELECT para elegir las columnas en tablab y convertir la columna decimal (total) a texto:
SELECT id, name, total::text
FROM me.mydb.tableb;
Tipos de geometría
Como se indica en la tabla, ArcGIS crea y puede trabajar con tres tipos de datos espaciales en PostgreSQL: Esri ST_Geometry, geometría de PostGIS y geografía de PostGIS. En las dos secciones siguientes se proporciona más información sobre estos tipos de datos.
ST_Geometry
La siguiente es una descripción general del tipo de datos espaciales ST_Geometry. Para obtener información específica de la implementación de PostgreSQL, consulte ST_Geometry en PostgreSQL.
El tipo de datos ST_Geometry implementa la especificación SQL 3 de los tipos de datos definidos por el usuario (UDT), lo que permite crear columnas capaces de almacenar datos espaciales como la ubicación de un hito, una calle o una parcela de tierra. Proporciona acceso de lenguaje estructurado de consultas (SQL) compatible con la Organización Internacional para la Estandarización (ISO) y Open Geospatial Consortium, Inc. (OGC) a la geodatabase y a la base de datos. Este almacenamiento amplía las capacidades de la base de datos proporcionando almacenamiento para objetos (puntos, líneas y polígonos) que representan entidades geográficas. Se diseñó para utilizar de un modo eficiente los recursos de las bases de datos, para ser compatible con funciones de base de datos como la replicación y la partición y para brindar un acceso rápido a los datos espaciales.
ST_Geometry en sí misma es una superclase abstracta sin instancias creadas. Sin embargo, se pueden crear. La creación de una instancia de tipo de datos se puede definir como una columna de tabla y posee valores de su tipo insertados en ella.
Aunque puede definir una columna como tipo ST_Geometry, no puede insertar valores ST_Geometry en la columna ya que no se pueden crear instancias. En su lugar, debe insertar los valores de las subclases.
Las subclases de ST_Geometry se dividen en dos categorías: las subclases de geometría base y las subclases de colecciones homogéneas. Las geometrías base incluyen ST_Point, ST_LineString y ST_Polygon, mientras que los conjuntos homogéneos incluyen ST_MultiPoint, ST_MultiLineString y ST_MultiPolygon. Como lo indica su nombre, los conjuntos homogéneos son conjuntos de geometrías base. Además, para compartir las propiedades de geometría base, los conjuntos homogéneos poseen algunas de sus propias propiedades.
Cada subclase almacena el tipo de geometría que implica su nombre; por ejemplo, ST_MultiPoint almacena multipuntos. Una lista de las subclases y sus descripciones se encuentra en la siguiente tabla:
Subtipo | Descripción |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
Observe que cada subclase hereda las propiedades de la superclase ST_Geometry pero también posee sus propias propiedades. Las funciones que operan en el tipo de datos ST_Geometry aceptan cualquiera de los tipos de entidad de subclase. Sin embargo, algunas funciones se han definido en el nivel de subclase y solo aceptan ciertas subclases. Por ejemplo, la función ST_GeometryN solo toma los valores del subtipo ST_MultiLinestring, ST_MultiPoint o ST_MultiPolygon como entrada.
Tipos de datos espaciales de PostGIS
PostGIS es un producto que habilita espacialmente las bases de datos de PostgreSQL. PostGIS sigue la especificación Simple Features del OGC para un SQL. Utiliza las representaciones de geometría de binario conocido (WKB) y de texto conocido (WKT) del OGC.
PostGIS tiene dos opciones de tipo espacial: geometría y geografía. Para utilizarlos, debe instalar PostGIS en su clúster de base de datos PostgreSQL y utilizar la base de datos de plantillas de PostGIS para crear la base de datos en la que almacenará su geodatabase. Recuerde instalar una versión de PostGIS compatible con la versión de ArcGIS que desee usar.
Al utilizar el tipo de almacenamiento espacial de PostGIS con ArcGIS, se debe tener en cuenta lo siguiente:
- Debe utilizarse la plantilla de base de datos PostGIS para crear la base de datos PostgreSQL que utiliza para la geodatabase o habilitar PostGIS en la base de datos.
Nota:
Si crea la geodatabase utilizando la herramienta de geoprocesamiento Crear geodatabase corporativa, la base de datos se crea usando una plantilla distinta a la plantilla PostGIS. Por tanto, si va a utilizar el tipo de geometría o geografía de PostGIS, debe crear manualmente una base de datos utilizando la plantilla PostGIS. A continuación, puede especificar la base de datos existente cuando ejecute la herramienta de geoprocesamiento Crear geodatabase corporativa y la geodatabase se creará en esta base de datos habilitada para PostGIS.
- El usuario sde y cualquier otro usuario que acceda a datos de PostGIS en la geodatabase o base de datos deben contar con permisos sobre vistas PostGIS específicas.
- Las clases de entidad que se crean solo pueden usar las referencias espaciales incluidas en la vista public.spatial_ref_sys de PostGIS. Si se especifica una referencia que no se encuentre en ese lugar, se produce un error en la creación de la clase de entidad.
- Debe especificar una palabra clave de configuración que tenga el parámetro GEOMETRY_STORAGE con el valor PG_GEOMETRY (para geometría de PostGIS) o PG_GEOGRAPHY (para geografía de PostGIS) para crear una clase de entidad que utiliza uno de estos tipos de datos espaciales.
- Las clases de entidad de una geodatabase de PostgreSQL que utilicen los tipos de PostGIS incluirán un campo para el almacenamiento CAD y de curvas, GDB_GEOMATTR_DATA. Si crea una tabla espacial fuera de ArcGIS y registra la tabla con la geodatabase, este campo se agrega a la tabla.
- El tipo de geografía de PostGIS limita el tamaño de las formas que puede procesar. Consulte la documentación de PostGIS para obtener más detalles.
Otorgar los privilegios para crear columnas de geometría o geografía de PostGIS
Cuando se habilita una base de datos para PostGIS, este agrega tres vistas al esquema público: geometry_columns, geography_columns y spatial_ref_sys. Debe otorgar privilegios SELECT para las vistas geometry_columns, geography_columns y spatial_ref_sys a todos los usuarios de la geodatabase, incluido el usuario sde.
GRANT select
ON public.geometry_columns
TO <login_name>;
GRANT select
ON public.geography_columns
TO <login_name>;
GRANT select
ON public.spatial_ref_sys
TO <login_name>;
Crear clases de entidad que usen el tipo de datos espaciales PostGIS
ArcGIS usa un ajuste del parámetro de configuración para determinar qué tipo de datos espaciales se usarán cuando cree una clase de entidad. Dicho parámetro es GEOMETRY_STORAGE. En las geodatabases de PostgreSQL, este puede tener el valor ST_GEOMETRY, PG_GEOMETRY (el ajuste del tipo de geometría de PostGIS) o PG_GEOGRAPHY (el ajuste del tipo de geografía de PostGIS). Por tanto, debe especificar la palabra clave de configuración que contiene el parámetro GEOMETRY_STORAGE definida con el tipo de datos espaciales que necesite: PG_GEOMETRY o PG_GEOGRAPHY.
De forma predeterminada, las nuevas clases de entidad usan almacenamiento ST_Geometry. Si desea almacenar la mayor parte de los datos en tipos de almacenamiento de PostGIS, cambie el valor del parámetro GEOMETRY_STORAGE bajo la palabra clave de configuración DEFAULTS. O bien, si desea almacenar algunas de las clases de entidad en el tipo de almacenamiento PostGIS, puede especificar la palabra clave de configuración PG_GEOMETRY o PG_GEOGRAPHY al crear la clase de entidad. Cuando se exporta desde la geodatabase, estas palabras clave aparecen de la siguiente forma:
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
##PG_GEOGRAPHY GEOMETRY_STORAGE "PG_GEOGRAPHY" UI_TEXT "User Interface text description for POSTGIS geography storage" END
El resto de los parámetros de almacenamiento se obtienen de la palabra clave DEFAULTS. Para obtener más información sobre los parámetros de configuración, consulte Parámetros de configuración de PostgreSQL.
Usar tablas de geometría o geografía existentes
ArcGIS puede utilizar tablas que contienen columnas de geometría o geografía de PostGIS creadas externamente mediante otras aplicaciones o mediante SQL (algunas veces denominadas tablas de terceros), siempre que las tablas cumplan con los requisitos previos siguientes:
- Cada tabla debe tener una única columna espacial. De no ser así, defina una capa de consulta o una vista que incluya solo una de las columnas espaciales.
- Las tablas no deben tener otras columnas de tipo definido por el usuario.
- Las tablas deben tener un único tipo de entidad (puntos, líneas o polígonos), aunque el tipo de entidad puede ser multiparte.
- Cada tabla debe tener una columna única de enteros, que no sea NULL, adecuada como columna Id. de objeto.
- Deben tener un índice espacial.
Para obtener información sobre la creación de tablas con una columna PostGIS mediante SQL, consulte la documentación de PostGIS.
Es posible conectarse a una base de datos PostgreSQL desde ArcGIS Desktop y registrar en la geodatabase tablas que contengan columnas de PostGIS. Consulte Registrar una tabla o vista con la geodatabase para obtener más información.