13 votos

GeoServidor: ¿Cuál es la mejor manera de publicar 2500 archivos TIFF o 71 archivos ECW?

Tengo ortofotos de una zona que necesito que me sirvan como mapa de fondo para mis vectores. Lo tengo como 2500 archivos (71,5MB cada uno) en formato TIFF raw con su correspondiente archivo word TFW - 180GB de datos. El sistema de coordenadas es local y coincide con mis vectores (no hay código EPSG para ello, pero lo nombré como "32805" y puse una definición adecuada).

Para el uso de escritorio en MapInfo los convertí a ECW (con alguna herramienta que viene con MapInfo) y retile como mucho más grande para tener sólo 71 archivo porque la apertura de 2500 archivos tiff es una exageración. Acabo de fusionar 49 TIFF (7x7) en un ECW - 35000x35000pixels - el más grande es de alrededor de 200MB) Funciona muy bien y es muy rápido en MapInfo.

Ahora estoy bastante confuso: ¿CÓMO servirlos en GeoServer?

He publicado un TIFF y un ECW para comparar. ECW es mucho más rápido en la vista previa del navegador (soy consciente de ECW problema de licencias de servidor, pero que no debería ser un problema). He encontrado una presentación "GeoServer en los esteroides" y leer acerca de ImageMosaic, ImagePyramid, retiling, añadiendo visión general, etc fue bastante informativo, pero todavía no sé qué hacer.

Mi pregunta es: ¿cómo debo hacerlo? Mosaico o Pirámide, y si es una de las respuestas positivas, necesito vuestro consejo o algunas pistas. Realmente me gustaría ser ECW debido al espacio en disco por lo que no habrá necesidad de mantener 180GB de tiff's en un servidor.

Los datos se servirán a través de LAN con un máximo de 20 usuarios conectados en hora punta. Lo siento si me falta alguna otra información, pero voy a enviar si es necesario.


Geoserver 2.1.4, Windows 7 32 bits, 2 GB de memoria del sistema, (1.7.0_09 (Java HotSpot(TM) Server VM), JAI nativo+ JAI nativo ImageIO = true


Original TIFF
gdalinfo D:\75720-47970.tif
Driver: GTiff/GeoTIFF
Files: D:\75720-47970.tif
       D:\75720-47970.tfw
Size is 5000, 5000
Coordinate System is `'
Origin = (7572000.000000000000000,4797500.000000000000000)
Pixel Size = (0.100000000000000,-0.100000000000000)
Metadata:
  TIFFTAG_SOFTWARE=Adobe Photoshop 7.0
  TIFFTAG_DATETIME=2006:10:09 13:02:57
  TIFFTAG_XRESOLUTION=72
  TIFFTAG_YRESOLUTION=72
  TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  ( 7572000.000, 4797500.000)
Lower Left  ( 7572000.000, 4797000.000)
Upper Right ( 7572500.000, 4797500.000)
Lower Right ( 7572500.000, 4797000.000)
Center      ( 7572250.000, 4797250.000)
Band 1 Block=5000x1 Type=Byte, ColorInterp=Red
Band 2 Block=5000x1 Type=Byte, ColorInterp=Green
Band 3 Block=5000x1 Type=Byte, ColorInterp=Blue
-------------

ECW file which is retiled from 7x7  original tiffs

gdalinfo D:\OF-45.ecw
Driver: ECW/ERDAS Compressed Wavelets (SDK 3.x)
Files: D:\OF-45.ecw
Size is 35000, 35000
Coordinate System is:
LOCAL_CS["LOCAL - (unsupported)",
    UNIT["Meter",1]]
Origin = (7571500.000000000000000,4798500.000000000000000)
Pixel Size = (0.100000000000000,-0.100000000000000)
Corner Coordinates:
Upper Left  ( 7571500.000, 4798500.000)
Lower Left  ( 7571500.000, 4795000.000)
Upper Right ( 7575000.000, 4798500.000)
Lower Right ( 7575000.000, 4795000.000)
Center      ( 7573250.000, 4796750.000)
Band 1 Block=35000x1 Type=Byte, ColorInterp=Red

  Overviews: 17500x17500, 8750x8750, 4375x4375, 2187x2187, 1093x1093, 546x546, 273x273, 136x136
Band 2 Block=35000x1 Type=Byte, ColorInterp=Green
  Overviews: 17500x17500, 8750x8750, 4375x4375, 2187x2187, 1093x1093, 546x546, 273x273, 136x136
Band 3 Block=35000x1 Type=Byte, ColorInterp=Blue
  Overviews: 17500x17500, 8750x8750, 4375x4375, 2187x2187, 1093x1093, 546x546, 273x273, 136x136

49voto

Vladimir Dyuzhev Puntos 101

Tuve un problema similar hace unas semanas. Lo resolví de esta manera:

  1. creación de pirámides de imágenes rasterizadas (todas las imágenes rasterizadas tienen pirámides) depende de la tasa de escala estándar en mi proyecto
  2. crear mosaicos a partir de una trama (mosaico)
  3. poner todos los archivos en postgis (por WKTRaster )

De esta forma se consigue MRDB (base de datos multirresolución), que es la forma más eficaz de servir una gran cantidad de datos.

Después de lo anterior puede simplemente conectar GeoServer a PostGIS y servir sus datos. Basándome en mi propio ejemplo, tuve que usar 82 ortofotomapas (40GB de datos) en mi aplicación, así que hice lo siguiente y ¡funciona de maravilla! La desventaja de esta situación es que los raster tiles son mucho más grandes que las de origen. En mi caso, los datos pasaron de 40 GB a ~96 GB.

EDITAR Y deberías monitorizar los parámetros de tu servidor porque 2GB de RAM y win7 + geoserver + postgres pueden ahogarse a veces. Tal vez una buena manera de aumentar el rendimiento sería mover la base de datos a otra máquina, o cambiar Win7 a Linux (o ambas cosas) porque el sistema *nix son menos costosos que un MS uno.

7voto

Ricardo Reyes Puntos 3428

Hice un experimento con un archivo TIFF y un ECW. Empecé con un ECW de 1,2 GB, y lo convertí a TIFF con compresión y pirámides, quedó en ~1,5 GB. Así que creo que un TIFF puede tener un tamaño similar a un ECW.

Yo haría un mosaico de la imagen utilizando GDAL, asegurándome de que la compresión está activada. Luego construiría pirámides, y si el archivo resultante es razonable (menos de 10 GB, supongo) dejaría que GeoServer hiciera el resto.

El rendimiento entre PostGIS y TIFF favorecerá al tiff, según tengo entendido.

Referencias:

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