jueves, 29 de noviembre de 2012

Migrando de Mapserver 5.6 a 6.2

Al pasar mi primer proyecto de UMN Mapserver 5.6 a mapserver 6.2 me encontré con los varios problemas. Lo mejor para estos casos es echar un vistazo a la guía de migración donde explican estas y otras cosas.

Ahí van los problemas que me surgieron:


Problemas con la definición de servicios OGC

msWMSDispatch(): WMS server error. WMS request not enabled. Check wms/ows_enable_request settings.

Para ello tuve que introducir lo siguiente en la sección MAP::WEB::METADATA:

"wms_enable_request"   "*"

Driver JPEG

loadOutputFormat(): General error message. OUTPUTFORMAT clause references driver GD/JPEG, but this driver isn't configured.

Tuve que poner el DRIVER "AGG/JPEG" en el .map del siguiente modo:


OUTPUTFORMAT
    NAME "jpeg"
    MIMETYPE "image/jpeg"
    DRIVER "AGG/JPEG"  ###Antes DRIVER "GD/JPEG"
    EXTENSION "jpg"
    IMAGEMODE "RGB"
    TRANSPARENT FALSE
    FORMATOPTION "QUALITY=70"
  END

Estilo de etiquetas

Como bien explican en la documentación BACKGROUNDCOLOR ha sido deprecated. El MAP arrojaba el siguiente error:

loadLabel(): Unknown identifier. Parsing error near (BACKGROUNDCOLOR):(line 182)

Fue necesario modificar el código:


NAME "my_capa"
      LABEL
        ANGLE 0.000000
        ANTIALIAS TRUE
        FONT "arial-bold"
        MAXSIZE 256
        MINSIZE 4
        SIZE 8
        TYPE TRUETYPE
        BACKGROUNDCOLOR 245 245 245
        BUFFER 0
        COLOR 204 16 16
        FORCE TRUE
        MINDISTANCE -1
        MINFEATURESIZE -1
        OFFSET 0 0
        PARTIALS TRUE
        POSITION CC
      END
      STYLE
        ANGLE 360
        OUTLINECOLOR 255 0 0
        SYMBOL 0
        WIDTH 1
      END
    END

a algo tipo:


NAME "my_capa"
  LABEL
  ANGLE 0.000000
        ANTIALIAS TRUE
        FONT "arial-bold"
        MAXSIZE 256
        MINSIZE 4
        SIZE 8
        TYPE TRUETYPE
        ## BACKGROUNDCOLOR 245 245 245
        BUFFER 0
        COLOR 204 16 16
        FORCE TRUE
        MINDISTANCE -1
        MINFEATURESIZE -1
        OFFSET 0 0
        PARTIALS TRUE
        POSITION CC
      END
  STYLE
        GEOMTRANSFORM 'labelpoly'
        COLOR 245 245 245
  END

END

Clonado en MapScript

Por un lado, tuve que añadir a "/etc/php5/cli/php.ini" las lineas:
extension_dir = "/usr/lib/php5/20090626/"
extension="php_mapscript.so"
Además ahora los métodos "clone()" han desaparecido por lo que tuve que adaptar mi código PHP de mapscript:

$orig_ms = new MapObj($INPUT_MAPFILE);
$ms = clone $orig_ms;

Problemas con Symbols

Ojo, porque parece que algunos estilos de símbolos han cambiado también y quizás es necesario cambiar el fichero symbols.sym
loadSymbol(): Unknown identifier. Parsing error near (STYLE):(line 491)
Por lo demás todo perfecto!!