Me pregunto qué método de almacenamiento dará lugar a la lectura más rápida de los vectores del mapa para la representación. ¿SHP? ¿PostGres? ¿SQLite? No cambian a menudo y no necesito funciones espaciales de estos vectores.
Respuestas
¿Demasiados anuncios?En Pruebas De Velocidad
Hay algunas pruebas de velocidad de shapefiles frente a la base de datos (PostGIS) para MapServer en esta presentación (desde 2007).
En resumen:
- Para un conjunto de datos de 3 millones de las características de las solicitudes de ejecución de 30 características de una después de la otra PostGIS era más rápido que el shapefile (aunque esto puede haber cambiado desde entonces por una revisión de la lectura de los shapefile índice)
- Para un conjunto de datos de 10.000 características shapefile fue ligeramente más rápido.
- Para solicitudes simultáneas shapfile fue más rápido
Y los tiempos en detalle, que también puede ayudar a decidir si el formato de almacenamiento es un factor importante.
PostGIS Shapefile
Start mapserv process 15ms 15ms
Load mapfile 3ms 3ms
Connect to DB 14ms n/a
Query 20ms n/a
Fetch 7ms n/a
Draw 11ms 28ms
Write Image 8ms 8ms
Network Delay 3ms 3ms
Siempre usar FastCGI en MapServer si el uso de una base de datos, como las conexiones de base de datos pueden ser reutilizados, de lo contrario una nueva conexión deben ser creados en cada solicitud.
Implementaciones de Shapefile de los Lectores
La velocidad de lectura de un archivo shapefile (y los datos de una base de datos) depende de la codificación específica de aplicación.
El código fuente de MapServer la apertura de un archivo shapefile puede ser visto aquí. A raíz de los comentarios que usted puede ver lo importante que es tener un índice. Normalmente sólo se puede leer un archivo en una dirección para conseguir un récord, pero con un índice que se puede leer en dos direcciones.
345 /* Read the .shx file to get the offsets to each record in */
346 /* the .shp file.
Otro ejemplo de la apertura de un archivo shapefile se puede ver en la fuente de Python para PyShp. De nuevo se puede ver cómo se usa un índice para encontrar formas específicas directamente.
Otros Factores a Condsider
Las limitaciones del formato DBF (límites sobre el tamaño del campo, no nulo apoyo, los límites de almacenamiento de texto), también deben ser tomados en consideración a la hora de decidir si utilizar o no una base de datos.
Una base de datos también ofrece medios de protección de datos, más fácil de unirse y creación de vistas, la tala de árboles y muchas otras características que no se consigue con un archivo independiente.
Contrariamente a lo que dariapra dice, mi experiencia en el desarrollo de Maperitive me dice que el mayor cuello de botella está en carga real de los datos antes de representación. Todo mucho depende de cómo es grande es el conjunto de datos almacenado total y cómo es grande es el conjunto de datos que intenta hacer de una sola vez. Si usted puede cargar todo en memoria, archivos son probablemente mejores que un motor de base de datos.
¿Programa que va a utilizar para la representación? Esto puede influir en los resultados. De todas formas, tener un shapefile con un índice espacial (por ejemplo, http://mapserver.org/utilities/shptree.html ) que se utiliza a menudo es la técnica más rápida. Aparte de eso: depende de la aplicación y almacenamiento en caché los resultados prestados a menudo es mucho más útil para mejorar el rendimiento.
Shapefile es el más rápido y probablemente su mejor apuesta. Hay encima de la cabeza para cualquier base de datos SQL, entonces allí es gestionar la devolución de conjuntos de resultados grandes (conversión de tipos de datos base de datos a tipos de datos nativos también desacelerará las cosas).
Pruebe a utilizar un paquete de código abierto de maptools.org hacer sus lecturas. Las herramientas del ArcGIS, aunque construido, tiene un poco de arriba para empezar y son caros.
Espero que esto ayude