Soy un usuario de ArcGIS Desktop que está entrando en el mundo del mapeo web por primera vez. Siguiendo los consejos que encontré aquí en GIS.SE, comencé con los tutoriales gratuitos de OpenGeo .
Sin embargo, comencé a darme cuenta de que la mayoría de las demostraciones y ejemplos estaban orientados a datos vectoriales. Mi proyecto principal consiste en la visualización de una serie temporal de 300 cuadros de rásteres de 5000 x 5000 píxeles. En mi computadora de escritorio, estos se almacenan en un solo binario BIP entero de 16 bits 5000x5000x300, que totaliza alrededor de 8GB. Mi objetivo es poder hacer clic en una celda (de un solo ráster en la serie de tiempo) y tener un gráfico emergente que muestre los valores de ese píxel en la serie de tiempo de 300 elementos. Los datos ráster utilizados para cada gráfico de series de tiempo deben almacenarse sin pérdidas, aunque los mapas de superposición en los que se hace clic pueden ser cachés con pérdidas.
¿Hay algo que pueda ser más adecuado para este proyecto (para un desarrollador novato de SIG web) que OpenGeo? ¿O debería seguir con esta configuración?
Como referencia, tengo experiencia en programación en Python, Java y PHP. No tengo mucha experiencia con SQL. Este es un proyecto abierto así que tengo mucho tiempo para aprender nuevos idiomas si es necesario. Ya tengo un servidor web, aunque probablemente tendré que cambiar de host porque GoDaddy no parece admitir PostgreSQL sin obtener un VPS.
¡Gracias por tu ayuda!
EDITAR: (13 de enero) Todavía estoy buscando información sobre la mejor manera de almacenar un ráster BIP tridimensional de 16 bits y poder consultar de manera eficiente una sola "columna" de datos del eje z. No quiero convertirlo a un formato de 32 bits (porque eso duplicaría su tamaño de archivo de su forma actual de 16 bits).
Respuestas:
Consultar un ráster de este tipo no debería plantear grandes problemas. Puede leer datos binarios directamente usando todos los lenguajes del programa, y el acceso es rápido. Solo asegúrese de almacenar sus datos en un formato de archivo que tenga todos los metadatos en un archivo separado. BIP es un formato
por ejemplo, en php, suponiendo que el archivo tiene un orden de fila mayor (de lo contrario, cambie x e y), con $ x y $ y la posición en su cuadrícula (contando desde 0), $ nx, $ ny y $ nz el número de píxeles en cada dimensión y $ nb el número de bytes por celda de cuadrícula:
Solo asegúrese de acceder al píxel correcto: el conteo comienza desde la parte superior izquierda o no, ...
Información adicional: después de leer los datos, debe convertirlos en flotantes. P.ej:
En caso de que su host no admita la carga de archivos grandes, podría, por ejemplo, dividir su archivo bip en, por ejemplo, 8 archivos bip.
Más información sobre cómo haría el resto del sitio web: dado que sus datos son estáticos, podría generar un pequeño visor de mapas usando gdal2tiles y openlayers. http://www.gdal.org/gdal2tiles.html De hecho, ya que usted dice que "Realmente no necesito escalabilidad, este proyecto es principalmente para permitir que algunos investigadores pares tengan un acceso más fácil a mis datos que enviar un Archivo de 8 GB y cargarlo en ENVI ". Tal vez podría incluso hacerlo sin usar una caja de herramientas webgis: simplemente deje que sus usuarios hagan clic en la imagen y capturen las coordenadas: http://www.emanueleferonato.com/2006/09/02/click -imagen-y-consigue-coordenadas-con-javascript /
(aunque debería encontrar una manera de presentar su imagen 5000x5000 muy bien)
fuente
Esto parece tres problemas separados: uno de infraestructura, uno de arquitectura y uno de manejo de eventos. Presentaré un enfoque posible, pero mi respuesta es necesariamente general.
Infraestructura
Recomiendo usar un servicio de alojamiento VPS como Linode (www.linode.com) para su servidor. Esto le brinda acceso completo (es decir, root) a un servidor mantenido profesionalmente, sin preocuparse por la falta de energía o la pérdida de su conexión a Internet.
Arquitectura
Hay tantas opciones aquí que puede ser realmente abrumador. Como ejemplo, ejecuto un par de sistemas con GeoServer y OpenLayers. GeoServer es servido por Tomcat 7. El front-end OpenLayers / jQuery es servido por Apache2. Puede incluir Postgres / PostGIS para almacenar datos vectoriales, pero esta no es una buena opción para datos ráster. También puede configurar un sistema Python usando Django o incluso web.py (http://webpy.org/) para un controlador bastante simple. GeoServer le permite almacenar datos ráster en los siguientes formatos:
Manejo de eventos
Cuando el usuario hace clic en el mapa, desea que aparezca un gráfico de serie temporal de los datos del campo en ese punto. Primero, configure un controlador, que podría escribirse en Python o Java, que escuche las solicitudes de URL con latitud y longitud. Este controlador devuelve una imagen estática renderizada en el servidor o datos json que el cliente (jQuery) puede convertir en un diagrama.
Luego, para obtener los datos XY en el mapa, puede utilizar una función como esta (consulte http://dev.openlayers.org/releases/OpenLayers-2.11/examples/click-handler.html ):
Espero que eso ayude.
fuente
Si entiendo correctamente su pregunta, crearía un servicio WMS horario, por ejemplo con MapServer .
De esta manera, será fácil mostrar el ráster correcto para cada fecha y hora (con una solicitud GetMap) y solicitar los valores para una celda en un rango de fecha y hora determinado (con una solicitud GetFeatureInfo).
fuente