11 votos

¿Software de mapeo Web de una serie de tiempo de la gran trama?

Soy un usuario de ArcGIS Desktop que está entrando en el mundo de la web de cartografía por primera vez. Siguiendo los consejos que encontré aquí en el SIG.SÍ, empecé con los tutoriales gratis de OpenGeo.

Sin embargo, comencé a darme cuenta de que la mayoría de las demostraciones y ejemplos fueron dirigidas hacia el vector de datos. Mi principal proyecto consiste en la visualización de un 300 marco de la serie de tiempo de 5000 x 5000 píxeles rásteres. En mi equipo de escritorio, estos se almacenan en un único 5000x5000x300 entero de 16 bits BIP binario, que asciende a alrededor de 8 GB. Mi objetivo es ser capaz de hacer clic en una celda (de una sola trama en la serie de tiempo) y tiene un gráfico aparecerá mostrando los valores de píxel en el 300 elementos de la serie de tiempo. La trama de datos utilizados para cada serie de tiempo de la gráfica debe ser almacenado sin pérdida, a pesar de la superposición de los mapas que se hace clic en puede ser con cachés.

Hay algo que puede ser más adecuado para este proyecto (para un novato SIG web developer) de OpenGeo? O debo seguir adelante con esta configuración?

Para referencia, tengo experiencia en programación en Python, Java y PHP. Yo no tengo mucha experiencia con SQL. Este es un final abierto del proyecto, así que tengo un montón de tiempo para aprender nuevos idiomas si es necesario. Ya tengo un servidor web, aunque probablemente voy a tener que cambiar de host porque GoDaddy no parece soporte de PostgreSQL sin llegar a un VPS.

Gracias por su ayuda!

EDIT: (13 de enero) todavía estoy buscando información sobre exactamente la mejor forma de almacenar un 3 dimensiones entero de 16 bits BIP raster y ser capaz de dirigir eficazmente a la consulta de un solo eje z "columna" de datos. No quiero convertirlo a un formato de 32 bits (porque eso sería el doble de su tamaño del archivo de su actual formulario de 16 bits).

7voto

Martin Duys Puntos 121

Esto se parece a tres cuestiones distintas: una, la de la infraestructura, uno de arquitectura y uno de manejo de eventos. Voy a presentar un enfoque posible, pero mi respuesta es necesariamente de carácter general.

Infraestructura

Recomiendo el uso de un servicio de hosting VPS como Linode (www.linode.com) para el servidor. Esto te dará pleno (es decir, de la raíz) el acceso a un mantenido profesionalmente servidor - no se preocupe del poder salir o perder su conexión a Internet.

La arquitectura

Hay muchas opciones de que puede ser muy abrumadora. Como un ejemplo, tengo un par de sistemas con GeoServer y OpenLayers. GeoServer es servido por Tomcat 7. El OpenLayers/jQuery delantera es servido por Apache2. Puede incluir Postgres/PostGIS para el almacenamiento de datos vectoriales, pero esto no es una buena opción para datos ráster. También se podría configurar un sistema Python utilizando Django o incluso web.py (http://webpy.org/) para un lugar controlador simple. GeoServer permite almacenar una trama de datos en los siguientes formatos:

  • ArcGrid - Arco De Cobertura De La Red De Formato
  • GeoTIFF - Tagged Image File Format con la información Geográfica
  • Gtopo30 - Gtopo30 Cobertura De Formato
  • ImageMosaic - Imagen mosaicking plugin
  • WorldImage - Un archivo raster acompañado por un archivo de datos espaciales

Manejo De Eventos

Cuando el usuario hace clic en el mapa en el que quieres emergente de un tiempo-el gráfico de la serie de los datos de campo en ese punto. En primer lugar, configurar un controlador, el cual puede ser escrito en Python o Java, que está a la escucha de solicitudes de url con la latitud y la longitud. Este controlador devuelve una imagen estática representa en el servidor o json de datos que el cliente (jQuery) se puede convertir en una parcela.

A continuación, para obtener el XY datos en el mapa podría utilizar una función como esta (ver http://dev.openlayers.org/releases/OpenLayers-2.11/examples/click-handler.html):

onClick: function(evt) {
    var clickSpot = evt.xy;
    // pass clickSpot to the controller ...
}

Espero que le ayude.

7voto

Mohit Jain Puntos 145

EDIT: (13 de enero) todavía estoy buscando información sobre exactamente cómo mejor tienda 3 dimensiones entero de 16 bits BIP raster y ser capaz de de manera eficiente la consulta de un solo eje z "columna" de datos. No quiero convertir a un formato de 32 bits (porque eso sería el doble de su tamaño del archivo de su actual formulario de 16 bits).

Consultar este tipo de trama realmente no debería plantear grandes problemas. Usted puede leer los datos binarios directamente a través de todos los lenguajes de programa, y el acceso es rápido. Sólo asegúrese de que usted almacena sus datos en un formato de archivo que tiene todos los metadatos en un archivo separado. BIP es un formato de

por ejemplo, en php, suponiendo que el archivo es el orden de fila principal (de lo contrario interruptor de x y y), con $x and $y la posición en la cuadrícula(a contar desde 0), $nx, $ny y $nz the number of pixels in each dimension and $nota: el número de bytes por gridcell:

$fp = fopen('yourfile.bil', 'r');

fseek ($fp, $nz*$nb*($y*$nx +$x))//this is a very fast operation
// read some data
$data = fread($fp, $nz*nb);//this is also very fast

Sólo asegúrese de que tiene acceso el derecho de píxel: no contar empezar desde la parte superior izquierda o no, ...

Algo más de info: Después de la lectura de los datos, debe convertir a los flotadores. E. g.:

$dataf=unpack("f*", $data);
print_r($dataf);

En caso de que el host no soporta la carga de archivos grandes, podría por ejemplo dividir el pbi archivo en eg 8 bip archivos.

Algo más de información sobre cómo iba a hacer el resto de la página web: porque la información es estática, se podría generar una pequeña mapviewer utilizando gdal2tiles y openlayers. http://www.gdal.org/gdal2tiles.html De hecho, ya que dicen que "en realidad no necesito escalabilidad--este proyecto es principalmente para permitir que un par de investigadores a tener más fácil acceso a mis datos de envío de un archivo de 8GB y lo carga en el MEDIO."usted tal vez podría incluso hacer sin el uso de un webgis caja de herramientas: dejar que sus usuarios hacen clic en la imagen y captura de las coordenadas: http://www.emanueleferonato.com/2006/09/02/click-image-and-get-coordinates-with-javascript/

(aunque usted debe encontrar una manera de presentar su 5000x5000 imagen muy bien)

1voto

Daniel Auger Puntos 8459

Si he entendido bien tu pregunta, yo crearía un servicio WMS de tiempo, por ejemplo con MapServer.

De esta forma será fácil mostrar la trama correcta para cada fecha y hora (con una petición GetMap) y solicitar los valores de una celda en un rango de fecha y hora determinada (con una petición de GetFeatureInfo).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X