Me pregunto qué método de almacenamiento dará como resultado la lectura más rápida de los vectores de mapa para la representación. SHP? PostGres? SQLite? (No cambian a menudo y no necesito funciones espaciales para estos vectores).
Me pregunto qué método de almacenamiento dará como resultado la lectura más rápida de los vectores de mapa para la representación. SHP? PostGres? SQLite? (No cambian a menudo y no necesito funciones espaciales para estos vectores).
Respuestas:
Hay algunas pruebas de velocidad muy de archivos de forma frente a la base de datos (PostGIS) para MapServer en esta presentación (desde 2007).
En resumen:
Y los tiempos en detalle, lo 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
Utilice siempre FastCGI en MapServer si usa una base de datos, ya que las conexiones de la base de datos se pueden reutilizar; de lo contrario, se debe crear una nueva conexión en cada solicitud.
La velocidad de lectura de un archivo de forma (y datos de una base de datos) depende de la implementación de codificación específica.
El código fuente para MapServer abriendo un archivo de forma se puede ver aquí . Después de los comentarios, puede ver lo importante que es tener un índice. Normalmente solo puede leer un archivo en una dirección para obtener un registro, pero con un índice 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 abrir un shapefile se puede ver en la fuente de Python para PyShp . Una vez más, puede ver cómo se utiliza un índice para buscar formas específicas directamente.
Las limitaciones del formato DBF (límites en el tamaño del campo, sin soporte nulo, límites en el almacenamiento de texto), también deben tenerse en cuenta al decidir si usar o no una base de datos.
Una base de datos también ofrece medios para proteger los datos, unir y crear vistas más fácilmente, iniciar sesión y muchas otras funciones que no obtendrá con un archivo independiente.
Al contrario de lo que dice dariapra, mi experiencia en el desarrollo de Maperitive me dice que el mayor cuello de botella está en la carga real de los datos antes de la representación. Todo depende en gran medida de qué tan grande sea el conjunto de datos almacenado en general y qué tan grande sea el conjunto de datos que está tratando de procesar de una vez. Si puede cargarlo todo en la memoria, entonces los archivos de forma probablemente sean mejores que usar un motor de base de datos.
¿Qué programa usarás para renderizar? Esto puede influir en los resultados. De todos modos, tener un shapefile con un índice espacial (p. Ej. Http://mapserver.org/utilities/shptree.html ) que se usa es a menudo la técnica más rápida. Aparte de eso: depende de su aplicación, pero el almacenamiento en caché de los resultados renderizados suele ser mucho más útil para mejorar el rendimiento.
Shapefile será la apuesta más rápida y probablemente la mejor. Existe una sobrecarga para cualquier base de datos SQL, luego se gestiona el retorno de grandes conjuntos de resultados (la conversión de tipos de datos de bases de datos a tipos de datos nativos también ralentizará las cosas).
Intente usar un paquete de código abierto de maptools.org para hacer sus lecturas. Las herramientas de ArcGIS, aunque están diseñadas específicamente, tienen un poco de sobrecarga para comenzar y son caras.
Espero que esto ayude