¿Cómo mejorar el rendimiento de representación de un archivo shape muy grande?


20

Tengo un archivo de forma poligonal que tiene un archivo .dbf de 100 MB y un componente de archivo .shp de 500 MB. La razón por la que es tan grande es porque está clasificada como una base terrestre para todo un distrito.

Cada vez que veo el archivo en ArcCatalog, o ArcMap, y muevo la ventana de vista ligeramente, todo el archivo debe volver a dibujar desde cero. He intentado la indexación espacial y la importación en una geodatabase; ninguno de los enfoques proporciona ninguna mejora notable en el rendimiento con respecto al renderizado.

La página de ayuda de Esri sugiere que para mejorar el rendimiento del archivo de forma , el usuario puede generalizar el archivo . Si bien esto obviamente funcionaría, no quiero perder ninguna información. Dividir el archivo no es lo ideal, ya que estoy haciendo muchas consultas / geoprocesamiento con toda su área. Supongo que podría evitar ver toda el área de una vez, pero a veces, por ejemplo, es bueno ver qué partes del archivo ha seleccionado una consulta.

¿Hay algún otro enfoque que pueda adoptar para mejorar el rendimiento del renderizado?

(En teoría, construir "pirámides" de shapefile sería ideal, no estoy seguro de por qué ArcGIS nunca ha apoyado tal enfoque, al menos que yo sepa ...)


2
Tener un archivo de forma tan grande es solo pedir problemas. En mi experiencia, los archivos de forma grandes tienden a corromperse muy fácilmente. Consíguelo en una Geodatabase de archivos, para evitar la corrupción. Un mejor rendimiento de dibujo sería una ventaja adicional.
Devdatta Tengshe

Como mencioné brevemente anteriormente, descubrí que importar un gran archivo de forma a un gdb no crea ninguna mejora, desde un punto de vista puramente renderizado. Sin embargo, tiene toda la razón de que, desde una perspectiva general, tiene poco sentido no tener un archivo shp grande en un gdb (por todo tipo de razones).
youzer

2
¿Has considerado usar un ráster en lugar de un shapefile?
Kirk Kuykendall

Estoy confundido en una cosa, ¿y si el tamaño del archivo es de 2 GB y la memoria del ordenador también es de 2 GB entonces cómo ArcGIS manejarán estos datos de archivos, ya que conume de memoria llena
user2174920

si tienes millones de polígonos pequeños, debería haber usado raster es el dicho infame (a menos que estés haciendo una capa de suelo ...)
Si no lo sabes, solo GIS el

Respuestas:


22

Mis pensamientos son:

  1. Exporte su archivo de forma a una clase de entidad de geodatabase de archivos: creo que su rendimiento de dibujo será mejor, pero no estoy seguro de cuánto
  2. Si está utilizando ArcGIS Desktop 10.0 o posterior, muévalo a una capa de mapa base ; esto mejorará drásticamente el rendimiento del dibujo
  3. Si le gusta el sonido de las pirámides para los datos vectoriales, asegúrese de votar por esta Idea ArcGIS .

3
Excepto que no puede hacer análisis o selecciones en las capas del mapa base IIRC.
blah238

44
Sospeche que podría evitarse teniendo una segunda capa en TOC apuntando a la misma fuente y no una capa de mapa base, que generalmente está desactivada pero se puede mostrar cuando sea necesario para el análisis o la selección.
PolyGeo

PolyGeo: gracias por la respuesta. Probé la capa base y, de hecho, una mejora importante en el rendimiento es cuando se hace clic en "acercar a capa", el archivo no se procesa desde cero. La solución alternativa que sugiere dado el comentario de blah238 podría funcionar en algunos proyectos, pero descubrí que algo adicional que limita el uso de la capa base es que no puede visualizar el dbf usando ninguna simbología. Con esta limitación, también podría generar el archivo para referencia (no una capa base), y luego mostrar la capa "real" cuando sea necesario. Realmente no es una gran solución. ¡Voy a votar la idea de "pirámides" como sugieres!
youzer

6

Hay muchos consejos para mejorar el rendimiento de ArcMap que pueden ayudar, pero aquí hay tres sugerencias que he usado.

  1. Me aseguraría de que el sistema de coordenadas del Marco de datos coincida con mi shapefile y cualquier otra capa que tenga en el TOC; pero cuantas menos capas se muestren, mejor.
  2. Solo usaría mi simbología basada en líneas simples y rellenos sin transparencia u otras complejidades.
  3. Si necesita una visión general y la capacidad de desplazarse de cerca, considere usar la lupa o el visor.

En general muy buen consejo. De hecho, implementé todo esto en mis pruebas iniciales: parece que se necesitan más / diferentes trucos para lidiar con clases de entidad / archivos de forma muy grandes.
youzer

4

Puede mejorar el renderizado configurando los parámetros de visualización de la capa para que la capa no se muestre a grandes escalas (por ejemplo,> 1: 10,000). Puede encontrar esta opción en las propiedades de capa: Propiedades de capa> Pestaña General> "No mostrar capa cuando se aleja más allá de ..."

Además, la ubicación del almacenamiento es importante; por ejemplo, si se almacena en un servidor antiguo con un ancho de banda deficiente, se garantiza que tendrá un rendimiento deficiente. Rutinariamente manejo datos vectoriales de 1GB + a través de un servidor, lo que me hace cuestionar si las especificaciones de su sistema necesitan actualizarse (para referencia, estoy ejecutando 12GB RAM, 2a generación i7, tarjeta gráfica promedio).

ingrese la descripción de la imagen aquí


3

¿Necesita renderizar el mapa para hacer sus consultas? ¿Qué sucede si ejecutó scripts de python y accedió a los datos sin dibujar el mapa? No estoy seguro de su proceso exacto, necesidades, etc., sino un pensamiento.


3

Como un seguimiento de la respuesta de Aaron , también podría usar una consulta de definición para limitar el número de resultados devueltos para la visualización (e incluye análisis; creo que funciona de manera muy parecida a una selección). Si no se necesitan todas las funciones para ver en un momento dado y no está cambiando de región una tonelada, una consulta de definición podría ser una solución viable, aunque no una respuesta exacta a su pregunta o necesidades.


3

Escucho tu frustración. Rutinariamente trabajo con grandes archivos de forma como esta y no tengo problemas de visualización, en general. Estoy de acuerdo con todos los comentarios anteriores, especialmente asegurándome de que todo esté en la misma proyección, incluido el marco de datos. ¿Supongo que ha copiado el archivo localmente y no está intentando acceder a él a través de la red? Una cosa que causará problemas de visualización con los archivos de forma de este tamaño es si hay una cantidad extrema de vértices, como en una red de flujo. La única solución que he encontrado para esto es crear un script de Python para hacer definiciones de capa sobre la marcha, por lo que solo estoy dibujando algunas a la vez. Otra cosa sería actualizar la memoria gráfica y la tarjeta gráfica de su computadora.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.