Cuestiones de geoprocesamiento para el shapefile de salida
Con los años, Esri desarrolló 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,
- 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. (Puede encontrar la especificación de formato shapefile en http://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 utilizar en una aplicación de software que no es de Esri.
- Cuando exporta datos para utilizar en ArcView GIS 3 o ArcInfo Workstation
- Cuando necesita escribir rápidamente entidades y atributos simples, como para los servicios de geoprocesamiento (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, tienen poca compatibilidad con las cadenas de caracteres Unicode, no permiten nombres de campo con más de 10 caracteres y no pueden almacenar fecha y hora en un campo. 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 creado en ArcCatalog. |
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értices es equivalente a un punto).
- Los shapefiles no contienen una tolerancia de x,y como las clases de entidades de geodatabase. La tolerancia de x,y es la distancia mínima entre las coordenadas antes de que se las considere iguales. Esta tolerancia de x,y se utiliza cuando se evalúan relaciones entre las entidades dentro de la misma clase de entidad o entre varias clases de entidades diferentes. También se utiliza extensivamente cuando se editan las entidades. Si realiza alguna clase de operación que implica la comparación entre las entidades, como el uso de lasherramientas de Superposición, la herramientaRecortar, la herramienta Seleccionar capa por Ubicación o cualquier herramienta que toma dos o más clases de entidades como entrada, debe utilizar clases de entidades de geodatabase (que tengan una tolerancia de 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 entidades de geodatabase, según se describe en Crear una curva. 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.
Anchos del campo en un dBASETipo 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
Fecha
Fecha
8
- El estándar de archivo de dBASE solo admite caracteres ANSI en los nombres y valores de campo. Esri agregó compatibilidad con Unicode extensivo 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. La compatibilidad con Unicode en dBASE constituye un esfuerzo constante en Esri, lo que significa que se siguen encontrando y solucionando problemas.Nota:
Si requiere compatibilidad con Unicode en los nombres de campos o valores de campo, le sugerimos que utilice geodatabases en lugar de shapefiles.
- Los campos de fecha admiten la fecha o la hora, pero no ambos en el mismo campo.
- 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 nuevo shapefile o tabla de dBASE, se crea un campo de Id. de enteros como 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 a un shapefile o una tabla de base de datos se convierte a un archivo de dBASE, entonces los valores nulos se cambiarán como se describe en la siguiente tabla.
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, sin 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 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 modificaciones 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 modificació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 la 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, como se ilustra a continuación.
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 en lugar de utilizar shapefiles para datos intermedios es escribir entidades en el espacio de trabajo in_memory.
Más información sobre el espacio de trabajo in_memory
Referencia espacial y shapefiles
Referencia espacial y geoprocesamiento trata sobre 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: