<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://www.gfc.edu.co/woakas/weblog/styles/feed.css"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/">
<channel>
<title>Blog de Woakas</title>
<link>http://www.gfc.edu.co/woakas/weblog/archives/python/</link>
<description>... El dia es largo y la vida es corta</description>
<dc:language>es</dc:language>
<dc:creator>Gustavo Andr&#195;&#169;s Angulo</dc:creator>
<dc:date>2010-01-22T09:59:27-05:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<item>
<link>http://www.gfc.edu.co/woakas/weblog/archives/2010/01/22/mapserver__mapscript__web_py/</link>
<title>Mapserver + Mapscript + web.py</title>
<dc:date>2010-01-22T09:54:58-05:00</dc:date>
<dc:creator>Gustavo Andr&#195;&#169;s Angulo</dc:creator>
<dc:subject>Python, Software, Desarrollo</dc:subject>
<description>
<![CDATA[<p>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. </p>

<p>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.</p>

<pre><code>import web
import mapscript


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


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()
</code></pre>]]>
</description>
</item>
</channel>
</rss>
