Fri 22 January 2010

Filed under development

Tags web.py python

Recientemente he utilizado mapscript con web.py para generar mapas que sean generados en tiempo de ejecución, esta porción de código permite leer archivos .map y luego se renderizan con las opciones habituales de mapserver para WMS, el método POST adiciona algunas lines para permitir el uso de un servicio WFS dentro de mapserver.

Se puede utilizar jinja2 o algún otro manejador de templates para cambiar el .map en tiempo de ejecución y de esta forma poder enviar algún parámetro adicional para realizar cambios en el servicio WMS o WFS.

import web
import mapscript


# URLS
urls = (
    '/','Basic',
)

def info_layer(cls):
    aux=''
    pathUrl=str(web.ctx.realhome+web.ctx.path)
    web.header("Content-Type","text/html; charset=utf-8")
    aux+='<b>Description: </b>%s<br>' % (str(cls.__doc__))
    aux+='<b>Capabilities WMS: </b><a href="%s?SERVICE=wms&REQUEST=GetCapabilities&VERSION=1.1.1&REQUEST=GetCapabilities">%s</a><br>'%(pathUrl,pathUrl)
    aux+='<b>Checker WMS FGDC: </b><a href="http://registry.fgdc.gov/statuschecker/services/rest/index.php?url=%s?SERVICE=wms&REQUEST=GetCapabilities&VERSION=1.1.1&type=wms&formattype=html">%s</a><br>'%(str(web.ctx.realhome+web.ctx.path),str(web.ctx.path))

    return aux

class Basic:
    """Layers Basics
    """
    def GET(self):

        vars = web.input()
        if len(vars)==0:
            return info_layer(Basic)
        req = mapscript.OWSRequest()
        for i in vars.keys():
            req.setParameter( i, vars[i])


        map = mapscript.mapObj('basic.map')

        mapscript.msIO_installStdoutToBuffer()
        map.OWSDispatch( req )

        content_type = mapscript.msIO_stripStdoutBufferContentType()
        content = mapscript.msIO_getStdoutBufferBytes()
        web.header("Content-Type","%s; charset=utf-8"%(content_type))
        return content


    def POST(self):

        vars = web.input()
        req = mapscript.OWSRequest()
        for i in vars.keys():
            req.setParameter( i, vars[i])

        req.postrequest=web.data()
        req.type=mapscript.MS_POST_REQUEST
        map = mapscript.mapObj('basic.map')

        mapscript.msIO_installStdoutToBuffer()
        map.OWSDispatch( req )

        content_type = mapscript.msIO_stripStdoutBufferContentType()
        content = mapscript.msIO_getStdoutBufferBytes()
        web.header("Content-Type","%s; charset=utf-8"%(content_type))
        return content

app = web.application(urls, globals())

#web.internalerror = web.debugerror


if __name__ == "__main__":
    app.run()
Comment

Fri 02 October 2009

Filed under old

Tags tryton python

He liberado un pequeño módulo para el manejo de colores en trython esto permitirá el manejo de colores y la visualización RGB en la vista de tabla (tree view). Los colores fueron tomados de Wikipedia y si se desea el módulo se encuentra en Intuxication

Módulo Tryton Colors Read More

woakas © Woakas Powered by Pelican and Twitter Bootstrap. Icons by Font Awesome and Font Awesome More