Esri dispone de dos formatos de datos principales para almacenar información geográfica: shapefiles y geodatabases. Los shapefiles se desarrollaron para proporcionar un formato sencillo que permitiera almacenar información geográfica y de atributos. Debido a su simplicidad, los shapefiles son un formato de transferencia abierta de datos muy popular. Mientras que puede parecer que los shapefiles son una opción sencilla debido a la simplicidad, hay limitaciones en el uso de esa dirección de geodatabases. En términos generales, entre las limitaciones se incluyen:
- Los datos geográficos no son simplemente las entidades y los atributos que puede almacenar un shapefile. Por ejemplo, hay anotaciones, relaciones con atributos, relaciones de topología, dominios y subtipos de atributos, precisión y resolución de coordenadas, y numerosas capacidades que son compatibles con las geodatabases, pero no con los shapefiles.
- Los shapefiles utilizan el formato de archivo dBASE (archivo .dbf) para almacenar atributos. dBASE es un formato que no es de Esri y que se desarrolló a comienzos de 1980 y era, en ese momento, el formato más popular para almacenar tablas de atributos. Sin embargo, con el tiempo fueron quedando desactualizados, y hubo una cantidad de mejoras en la representación de datos, como el estándar Unicode, para admitir la mayoría de los sistemas de escritura del mundo. Este es uno de los motivos por los cuales los shapefiles no son convenientes para almacenar información en otro idioma que no sea el inglés.
- A diferencia de las clases de entidad de una geodatabase, los shapefiles no mantienen los campos de longitud y área de forma.
Los shapefiles son una opción deficiente para la administración de bases de datos activas. No manejan el ciclo de vida actual de la creación, edición, versión y archivado de datos.
Los shapfiles pueden ser útiles en estas circunstancias:
- Cuando exporta datos para utilizarlos en una aplicación de software que no es de Esri.
- Para escribir rápidamente entidades y atributos simples.
Con algunas excepciones que se observan a continuación, los shapefiles se aceptan para almacenar geometría de entidad simple. Sin embargo, los shapfiles presentan problemas para los atributos. Por ejemplo, los shapfiles no pueden almacenar valores nulos, redondean números al alza, tienen poca compatibilidad con las cadenas de caracteres Unicode, no permiten nombres de campo con más de 10 caracteres y no pueden almacenar la hora en un campo de fecha. Además, no son compatibles con las capacidades que se encuentran en las geodatabases, como los dominios y subtipos. Por lo tanto, a menos que sus datos tengan atributos muy simples y no requieran capacidades de la geodatabase, no utilice shapefiles.
Componentes de shapefile y extensiones de archivo
Los shapefiles se almacenan en tres o más archivos que tienen el mismo prefijo y se almacenan en la misma carpeta. Los archivos individuales pueden verse al visualizar la carpeta en File Explorer, no en ArcGIS Pro.
Extensión | Descripción | ¿Se requiere? |
---|---|---|
.shp | El archivo principal que almacena la geometría de la entidad. No se almacena ningún atributo en este archivo, solo la geometría. | Sí |
.shx | Un archivo que acompaña al archivo .shp que almacena la posición de los Id. de entidades individuales en el archivo .shp. | Sí |
.dbf | La tabla de dBASE que almacena la información de atributos de las entidades. | Sí |
.sbn y .sbx | Archivos que almacenan el índice espacial de las entidades. | No |
.atx | Generado para cada índice de atributo de dBASE. | No |
.ixs y .mxs | Índice de geocodificación para leer y escribir shapefiles. | No |
.prj | El archivo que almacena información del sistema de coordenadas. | No |
.xml | Metadatos para ArcGIS; almacena información sobre el shapefile. | No |
Limitaciones de shapefile
Los shapefiles presentan estas limitaciones:
- Hay un límite de tamaño de 2 GB para cualquier archivo de componente de shapefile, que se traduce a un máximo de aproximadamente 70 millones de entidades de punto. El número de entidades de línea o polígono de un shapefile depende del número de vértices en cada línea o polígono (un vértice es equivalente a un punto).
- Los shapefiles no contienen una tolerancia x,y como sí lo hacen las clases de entidad de geodatabase. La tolerancia x,y es la distancia mínima entre las coordenadas antes de que se las considere iguales. Esta tolerancia x,y se utiliza al evaluar relaciones entre entidades dentro de la misma clase de entidad o entre varias clases de entidad. También se utiliza extensivamente cuando se editan las entidades. Si utiliza una operación que implica la comparación entre entidades, como las herramientas del conjunto de herramientas de Superposición, la herramienta Recortar, la herramienta Seleccionar capa por ubicación o cualquier herramienta que toma dos o más clase de entidades como entrada, utilice clases de entidades de geodatabase (que tengan una tolerancia de x,y) en lugar de shapefiles.
- Debido a los métodos de compresión de formas, un shapefile puede ocupar entre tres y cinco veces más espacio que un archivo o una geodatabase empresarial.
- Los shapefiles admiten multiparches, pero no son compatibles con las siguientes capacidades multiparche avanzadas:
- Coordenadas de textura
- Texturas y color de partes
- Normales de iluminación
- El índice espacial para un shapefile es ineficiente en comparación con el de una clase de entidad de geodatabase. Esto significa que las consultas espaciales (como la selección de entidades en un polígono) tardan más tiempo en comparación con una clase de entidad de geodatabase. Esta ineficiencia solo es perceptible al manejar grandes cantidades de entidades.
- Las curvas definidas paramétricamente (también conocidas como curvas de arco circular) no son compatibles con los shapefiles. Las curvas paramétricas se crean editando clases de entidad de geodatabase, tal y como se describe en Crear arcos circulares. Las curvas de arco circular utilizan una fórmula matemática para dibujar la curva. Al exportar una clase de entidad de geodatabase que contiene entidades de curva de arco circular en un shapefile, las entidades curvadas se transforman en entidades de línea simples con vértices apenas separados para capturar la forma curva.
Limitaciones de atributo
La atribución en los shapefiles presenta estas limitaciones:
- A diferencia de otros formatos, los shapefiles almacenan atributos numéricos en formato de carácter en lugar de formato binario. Para los números reales (es decir, números que contienen posiciones decimales), esto puede producir errores de redondeo. Esta limitación no se aplica a las coordenadas de forma, solo a los atributos. La siguiente tabla resume el ancho del campo para cada tipo de datos de atributos.
Tipo de datos de la geodatabase Tipo de campo dBASE Ancho del campo dBASE (cantidad de caracteres) Id. de objeto
Número
9
Entero corto
Número
4
Entero largo
Número
9
Flotante
Flotante
13
Doble
Flotante
13
Texto
Carácter
254
Fecha
Fecha
8
Anchos del campo en un dBASE - El estándar de archivo de dBASE solo admite caracteres ANSI en los nombres y valores de campo. Esri incluye compatibilidad para archivos dBASE que admiten nombres de archivo y valores Unicode. Sin embargo, puede que esta compatibilidad adicional no esté disponible en aplicaciones que no son de Esri.
- Los campos de datos solo admiten fechas, no la hora.
Precaución:
La incompatibilidad de incluir la hora en los campos de fecha es una limitación importante para cualquier herramienta que realice un análisis temporal.
- Los nombres de campo no pueden ser de más de 10 caracteres.
- La longitud máxima de registro de un atributo es de 4.000 bytes. La longitud del registro es el número de bytes que se utiliza para definir todos los campos, no el número de bytes que se utiliza para almacenar los valores reales.
- El número máximo de campos es 255. Una conversión a shapefile convertirá los primeros 255 campos si se supera este límite.
- El archivo de dBASE debe contener al menos un campo. Al crear un shapefile o una tabla dBASE, de forma predeterminada se incluye un campo de Id. de enteros.
- Los archivos dBASE no admiten los tipos de campo BLOB, GUID, Id. global o Ráster.
- Los archivos de dBASE tienen poca compatibilidad SQL aparte de una cláusula WHERE.
- Los índices de atributo se eliminan al guardar los cambios y deben volver a crearse desde cero.
Representación del valor nulo
Los valores nulos no están permitidos en los shapefiles. Si una clase de entidad que contiene valores nulos se convierte en un shapefile, o si una tabla de base de datos se convierte en un archivo dBASE, los valores nulos se modificarán como se describe en la siguiente tabla.
Precaución:
Cuando se utilizan shapefiles o archivos dBASE (.dbf) como entradas para las herramientas, ArcGIS no puede determinar si un valor de campo representa un valor nulo o un valor legítimo.
Tipo de dato que contiene un valor nulo | Sustitución del valor nulo |
---|---|
Número: cuando la herramienta requiere que la salida tenga un valor NULO, infinito o NaN, sigla de Not a Number (no un número) | -1.7976931348623158e+308 (estándar IEEE para el valor máximo negativo) |
Número (todas las demás herramientas de geoprocesamiento) | 0 |
Texto | " " (blanco, un espacio) |
Fecha | Almacenado como cero, pero muestra <nulo> |
Capacidades no compatibles
Los shapefiles no tienen tipos de datos extendidos ni en el espacio de trabajo ni a nivel de clase de entidad. Cualquier conversión a shapefile a partir de una clase de entidad de geodatabase u otro formato resultará en la pérdida de lo siguiente:
- Subtipos
- Dominios de atributo
- Redes geométricas
- Topologías
- Anotación
Longitud y área de forma
Para las clases de entidad de línea o poligonal almacenadas en una geodatabase, ArcGIS calcula y mantiene un campo shape_length y un campo shape_area. Al editar la geometría de una línea o polígono de una clase de entidad de geodatabase, los valores de los campos shape_length y shape_area se actualizan automáticamente. No ocurre lo mismo con los shapfiles. Aunque un shapefile tenga un campo shape_area o shape_leng, el campo no se actualizará si se realizan cambios en el shapefile.
Shapefiles y geoprocesamiento
La mayoría de las herramientas de geoprocesamiento que generan una clase de entidad admiten tanto shapefiles como clases de entidad de geodatabase como formato de salida. De forma parecida, la mayor parte de herramientas que generan un atabla admiten archivos dBASE (.dbf) y tablas de geodatabase como salida.
Cuando se utiliza una herramienta del panel Geoprocesamiento, la herramienta genera automáticamente una ruta de tabla o una clase de entidad de salida. Si el entorno Espacio de trabajo actual se establece en una carpeta, y no en una geodatabase, la ruta de la clase de entidad de salida será un shapefile o un archivo dBASE. De forma predeterminada, el entorno Espacio de trabajo actual se establece en una geodatabase.
Más información sobre los entornos de geoprocesamiento
Debido a que los shapefiles escriben rápido, a veces se utilizan para escribir datos intermedios en los modelos, ya que esto hace que la ejecución del modelo sea más rápida. Sin embargo, escribir en una geodatabase de archivos es casi tan rápido como escribir en un shapefile; por lo tanto, a menos que la velocidad de ejecución sea crítica, es preferible utilizar una geodatabase de archivos para datos intermedios y de salida. Una alternativa al uso de shapefiles para datos intermedios es escribir entidades en el espacio de trabajo de memoria.
Referencia espacial y shapefiles
Referencia espacial y geoprocesamiento aborda la importancia de las propiedades de la referencia espacial cuando se utilizan herramientas de geoprocesamiento. Hay una cantidad de entornos de geoprocesamiento que controlan la referencia espacial que utilizan las herramientas. Los siguientes entornos no se respetan cuando la salida de una herramienta es un shapefile: