A lo largo de los años, Esri ha desarrollado tres formatos de datos principales para almacenar información geográfica: coberturas, 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. Cuando utiliza shapefiles, debe tener en cuenta las limitaciones. 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.
- Debido a que los shapefiles son un formato abierto popular para la transferencia de datos, varios paquetes de software que no son de Esri generan shapefiles. (Encontrará la especificación del formato shapefile en https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf). Lamentablemente, estos paquetes no siempre hacen un buen trabajo de creación de shapefiles con el formato correcto. Es posible que ya haya experimentado la frustración de recibir shapefiles dañados de otra fuente.
- 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 en una geodatabase, ArcGIS no calcula ni mantiene los campos de longitud y área de forma.
Estos problemas (y más) significan que los shapefiles son una opción extremadamente 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.
¿Cuándo debo utilizar un shapefile?
- Cuando exporta datos para utilizarlos en una aplicación de software que no es de Esri.
- Cuando necesita escribir rápidamente entidades y atributos simples. (Sin embargo, debe tener en cuenta las limitaciones que se detallan a continuación).
¿Cuándo no debo utilizar un shapefile?
Con algunas excepciones que se observan a continuación, los shapefiles se aceptan para almacenar geometría de entidad simple. Sin embargo, tienen problemas importantes con los atributos. Por ejemplo, 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. Estos son solo los problemas principales. 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 tenga atributos muy simples y no requiera 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 del sistema (espacio de trabajo de shapefiles). Verá los archivos individuales cuando visualice la carpeta en el Explorador de Windows, no en ArcCatalog.
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 .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 geometría
- 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. La cantidad real de entidades de línea o polígono que puede almacenar en 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 realiza alguna clase de operación que implica comparar entidades, como usar el conjunto de herramientas Superposición, la herramienta Recortar, la herramienta Seleccionar capa por ubicación o cualquier herramienta que tome dos o más clases de entidad como entrada, debería utilizar clases de entidad de geodatabase (que tengan una tolerancia x,y) en lugar de shapefiles.
- Un shapefile puede tomar de tres a cinco veces tanto espacio como una geodatabase de archivos o SDE debido a los métodos de compresión de forma.
- 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 al editar clases de entidad de geodatabase, tal y como se describe en Crear una curva mediante puntos de inicio, mitad y final (arco). Las curvas de arco circular utilizan una fórmula matemática para dibujar la curva. Si exporta 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
- 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) Object ID
Número
9
Entero corto
Número
4
Entero largo
Número
9
Flotante
Flotante
13
Doble
Flotante
13
Texto
Carácter
254
Date
Date
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 agregó más compatibilidad con Unicode para los archivos de dBASE, lo que permite almacenar nombres y valores de campo Unicode. Pero esta compatibilidad adicional reside solamente en ArcGIS y no está disponible en las aplicaciones que no son de Esri.
- Los campos de fecha solo admiten fechas. No admiten horas.
- 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. Cuando crea un shapefile o tabla dBASE, se crea un campo de Id. de enteros como valor predeterminado.
- Los archivos dBASE no admiten tipos blob, guid, Id. global, Id. de coordenada o tipos de campo ráster.
- Los archivos de dBASE tienen poca compatibilidad SQL aparte de una cláusula WHERE.
- Los índices de atributo se eliminan cuando guarda las ediciones, y debe volver a crearlos 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.
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) |
Date | 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 shape_length y un campo shape_area; es decir, cuando edite la forma de una línea o un polígono en una clase de entidad de geodatabase, los valores de los campos shape_length y shape_area se vuelven a calcular para reflejar las ediciones realizadas en las entidades. Este no es el caso con los shapefiles. Aunque su shapefile tenga un campo shape_area o shape_leng, no se actualizará si se realiza alguna edición en el shapefile.
Shapefiles y geoprocesamiento
Toda herramienta de geoprocesamiento que tiene como salida una clase de entidad le permite elegir un shapefile o una clase de entidad de geodatabase como el formato de salida. Del mismo modo, una herramienta que tiene como salida una tabla le permite elegir un archivo dBASE (.dbf) o una tabla de geodatabase como salida. Siempre debe ser consciente del formato que utiliza y las consecuencias de la conversión de una entrada de geodatabase en una salida de shapefile.
Las herramientas de geoprocesamiento generan automáticamente una tabla o clase de entidad de salida. Esta salida generada automáticamente se basa en una cantidad de factores como se describe enUtilizar los entornos del espacio de trabajo actual y temporal. Si el entorno del espacio de trabajo temporal se establece en una carpeta del sistema, y no en una geodatabase, la clase de entidad de salida generada automáticamente será un shapefile o archivo de dBASE.
Se sugiere que establezca el espacio de trabajo temporal en una geodatabase de archivos para que la salida generada automáticamente se escriba en una geodatabase de archivos, no en un shapefile o tabla .dbf.
Más información sobre los entornos de geoprocesamiento
Debido a que los shapefiles escriben rápido, se utilizan con frecuencia 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, siempre debe utilizar una geodatabase de archivos para datos intermedios y de salida. Si utiliza shapefiles, tenga en cuenta las limitaciones como se describió anteriormente y utilice solamente shapefiles para las entidades y atributos simples. Una alternativa al uso de shapefiles para datos intermedios es escribir las entidades en el espacio de trabajo de la memoria.
Más información sobre el espacio de trabajo in_memory
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 distinguen cuando la salida de una herramienta es un shapefile: