TileCache en Windows

Retrato de vehrka
Etiquetas:  •  

Las últimas semanas he estado trasteando con MapServer y OpenLayers en el curro y llegué a la conclusión de que tenía que "cachear" algunas de las grandes imágenes que usamos.

El problema llegó cuando intenté montar un TileCache de MapLabs y no estabá tán fácil como sugerían en su página. En parte por el famoso proxy del curro en parte porque voy un poco a bastonazos con este asunto y no encuentro un solo sitio dónde me expliquen cómo se hace.

Al final después de marear mucho la perdiz conseguí que funcionara y ahora os explico, en modo recetario, qué es lo que hice:

Primero: 

Bajar la aplicación de la página de TileCache

Segundo: 

Descomprimir en un directorio accesible vía web

C:\xampp\htdocs\tilecache

Tercero: 

Permitir la ejecución CGI en el directorio, añadiendo la siguiente sección en httpd.conf

# Tilecache
<Directory "C:/xampp/htdocs/tilecache">
AddHandler cgi-script .cgi
Options +ExecCGI +Indexes
</Directory>

Cuarto: 

Editar la primera línea de tilecache.cgi para que apunte al ejecutable de Python

#!C:/Python24/python.exe

Quinto: 

Modifica tilecache.cfg para que guarde el cache en el directorio temporal deseado

[cache]
type=Disk
base=d:/temp/tilecache

Sexto: 

Modifica tilecache.cfg para que cargue la capa WMS correspondiente (Con diferencia este es el paso que más por el ... dió)

[rhyncho]
type=WMSLayer
url=http://tuservidor/cgi-bin/rhynchoms?map=c:/xampp/htdocs/mapas/tuarchivo.map
layers=BaseCarto
extension=png
srs=EPSG:23030
extent_type=loose
bbox=620193, 4189704, 819285, 4519881
resolutions=599.7218983723972,88.19439681947017,17.63887936389403,
8.819439681947015,3.527775872778806, 1.763887936389403,0.8819439681947016

Desde el primer día la configuración del Mapserver y de Openlayers me ha llevado por la calle de la amargura, sobretodo con el tema de las resoluciones y las escalas, para obtener qué resoluciones correspondían a los niveles de zoom que tengo definidos me tocó añadir en el código estándar de Openlayers (en la función init) las siguientes líneas:

var str = "";
for (var i = 0; i < myScales.length; i++) {
    str +=OpenLayers.Util.getResolutionFromScale(myScales[i], 'm') + ',';
}
var element = document.getElementById('output');
    element.innerHTML = str;

y añadir un contenedor <div> llamado output para que mostrara el resultado.

Séptimo: 

Carga en el openlayers

base = new OpenLayers.Layer.WMS( "Base cartografica", 
"http://tuservidor/tilecache/tilecache.cgi",
{layers: 'rhyncho' });

La receta es un poco "as is", espero que os sirva, aunque uno de los inconvenientes de dar palos de ciego es que no voy a poder contestar las preguntas con soltura, sin embargo si hay preguntas o sugerencias serán bien atendidas

¡Saludos!

Trackback URL for this post:

http://geomaticblog.net/gb2/pt/trackback/65

Opções de visualização dos comentários

Seleccione a sua forma preferida de visualização de comentários e clique "Gravar configuração" para activar as suas alterações.
Retrato de xurxo

¡Muy guapo si señor! 

Ahora falta que nos cuentes en unas semanitas qué tal te funciona esto "en producción" porque desde luego puede sernos muy interesante para varios proyectos.

A ver si sale una versión "java" de este proyecto (creo que en había algún proyecto en el Google Summer of Code del año pasado, lo miraré) porque muchas veces meter un componente en otro lenguaje de programación tira para atrás a los clientes.

Saludos! 

--
XuRxO
Muy bueno me dio una idea de las cosas que ando haciendo bien y mal, por lo pronto yo estoy usando mapnick para generar los tiles, espero decirte pronto como me va
Retrato de vehrka

Bueno, pues ya nos contarás que tal esas experiencias con mapnick.

Podrías contarnos también si vais a poner el servidor en producción o cuantos accesos piensas que puedes tener, el rendimiento de la máquina con OpenLayers se estaba resintiendo un poco y no sé si es un problema de configuración.

Nos gustaría saber de la experiencia de la gente con este software y aprender un oco más.



¡Un saludo!

--
Pedro-Juan Ferrer Matoses (vehrka)

Buenos días.

Estoy intentando configurar tileCache (usando tilecache.cgi) con mapserver y openlayer.

cuando uso el ejemplo del fichero tilecache.cfg:

[basic]
type=WMS
url=http://labs.metacarta.com/wms/vmap0
extension=png
La apliacacion funciona y se me generan en mi PC las distintas celdas cacheadas. 
El problema esta cuando quiero conectar via WMS a través de MapServer y usando mi fichero .map
Se me muestran un conjunto de celdas rosas y no me da ningun tipo de error.
Estaría muy agradecido si me pudiéseis ayudar.
Saludos. 

 

Retrato de vehrka

Hola visitante.

Yo tuve problemas parecidos a los tuyos, como se ve en la parte del post en la que me quejo de la configuración de resoluciones.

Asegurate que  el srs, el extent, el bbox y la resolución son las adecuadas y coinciden con lo que te sirve Mapserver (de ahí el truco de mirar las resoluciones con OpenLayers) ya que si no te cansarás de ver teselas "rosas".

¡A ver si hay suerte!

Un saludo.

--

Pedro-Juan Ferrer Matoses (vehrka)

Buenos días, estoy intentando configurar Tile-Cache con MapServer y OpenLayer pero por ahora solo queda en el intento.

Mi configuración es la siguiente:

Apache
Mapserver
tilecache  2.04
python-2.5.2
Windows XP


Los ficheros de configuración son:

tilecache.cfg:

[Alaska]
type=WMSLayer
mapfile=C:/ms4w/apps/ka-map-1.0/gmap/mapas/gmap75.map
extension=png
size=256,256
bbox=-2200000, -712631, 3072800, 3840000
resolutions=10583.327618336418,5291.663809168209,3527.775872778807,2645.8319045841044,1763.8879363894034,881.9439681947017,529.166380916821,352.7775872778807,264.5831904584105,17.63887936389403,8.819439681947015,5.291663809168209,3.527775872778806,2.6458319045841043,1.763887936389403,0.8819439681947016,0.35277758727788067
layers=bathymetry,land_fn
srs=EPSG:42304
extent_type=loose

Nota*: El campo resolutions lo he sacado usando el procedimiento que describiste más arriba 

Fichero de mapas: gmap75.map

#
# Start of GMAP map file
#
#
NAME GMAP_DEMO
STATUS ON
SIZE 400 300
SYMBOLSET ../etc/symbols.sym
EXTENT -2200000 -712631 3072800 3840000
UNITS METERS
SHAPEPATH "../data"
IMAGECOLOR 255 255 255
FONTSET ../etc/fonts.txt

# PROYECCIÓN  UTM
  PROJECTION
    "init=EPSG:42304"  
  END
#
# Start of web interface definition
#
WEB
  MINSCALE 2000000
  MAXSCALE 50000000
#
# On Windows systems, /tmp and /tmp/ms_tmp/ should be created at the root
# of the drive where the .MAP file resides.
#
  IMAGEPATH "/ms4w/tmp/ms_tmp/"
  IMAGEURL "/ms_tmp/"
 
  METADATA
      "wms_title"                    "Alaska"
            "wms_onlineresorce" "http://127.0.0.1/cgi-bin/mapserv.exe?map=C:/ms4w/apps/ka-map-1.0/gmap/mapas/gmap75.map&"
            "wms_srs"                        "EPSG:42304"
  END
END
.......................

 Fichero index.html

  <script type="text/javascript">
            var map;
            function init(){
          
                            map = new OpenLayers.Map('map',
                                             { controls: [
                                             new OpenLayers.Control.PanZoomBar(),
                                             new OpenLayers.Control.MouseDefaults(),
                                             new OpenLayers.Control.MousePosition(),
                                             new OpenLayers.Control.OverviewMap(),
                                             new OpenLayers.Control.Permalink,
                                             new OpenLayers.Control.LayerSwitcher
                                             ],
                                             units: 'm',
                                             projection: 'epsg:42304',
                                             //maxResolution: 'auto',
                                             maxExtent: new OpenLayers.Bounds( -2200000, -712631, 3072800, 3840000 ),
                                             scales: [ 30000000,15000000,10000000,7500000,5000000,2500000,1500000,1000000,750000,50000,25000,15000,10000,7500,5000,2500,1000 ],
                                             minScale: 30000000,
                                             maxScale: 2500
                                             } );
                                
                                
                                       var urlArray = ["http://localhost/cgi-bin/mapserv.exe",
                                                                "http://127.0.0.1/cgi-bin/mapserv.exe"];
                                
                                      var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                    "http://labs.metacarta.com/wms/vmap0",
                    {layers: 'basic'} );
                    
                var jpl_wms = new OpenLayers.Layer.WMS( "Capa de Manzanas", urlArray,
                    {map:'C:/ms4w/apps/ka-map-1.0/gmap/mapas/gmap75_wms.map',
                                        layers: 'bathymetry,land_fn',format: "image/png"} );
                    
                 
                var dm_wms = new OpenLayers.Layer.WMS( "Tile Cache", "http://localhost/Openlayer/tilecache/tilecache.cgi?",
                    {layers: "Alaska", format: "image/png" });

                jpl_wms.setVisibility(true);
                ol_wms.setVisibility(false);
                dm_wms.setVisibility(false);

                map.addLayers([jpl_wms, dm_wms]);
                if (!map.getCenter()) map.zoomToMaxExtent();
                }
                                            
        </script>

Cuando uso el servicio WMS que conecta con: http://labs.metacarta.com/wms/vmap0 se me generan en mi disco local las distintas celdas.

Cuando uso openLayer directamente contra mapserver también me funciona.

El problema esta cuando uso el servicio que ataca a tileCache (http://localhost/Openlayer/tilecache/tilecache.cgi?), todas la celdas se muestran de ese color que todos sabemos y estoy empezando a odiar.

He probado de todo y no consigo nada. Estaria muy agradecido si alguien me diese alguna pista para intentar arreglar el problema.

Saludos. 

Retrato de vehrka

Hola a todos los lectores.

Hemos trasladado esta discusión a la lista de correo del capítulo hispanohablante de OSGeo.

Si no estáis suscritos podéis seguirla a través de Nabble.

Un saludo.

--

Pedro-Juan Ferrer Matoses (vehrka)

holaaa  

 

  Necesito ayuda con tilecache,mapserver y openlayer.... esta es mi configuracion

 

[ejemplo2]
type=WMSLayer
url=http://localhost/cgi-bin/mapserv.exe?map=c:/ms4w/Apache/htdocs/mapFile/mapas/IV_region.map
layer=calle
srs=EPSG:24719
extent_type=loose
extension=gif
resolutions=0.036441265263157906,0.018220632631578953,0.009110316315789476,0.004555158157894738,0.036441265263157906,0.018220632631578953,0.009110316315789476,0.004555158157894738,0.002277579078947369,0.0011387895394736846,0.036441265263157906,0.018220632631578953,0.009110316315789476,0.004555158157894738,0.002277579078947369,0.0011387895394736846,0.0005693947697368423,0.00028469738486842114,0.00014234869243421057,0.00007117434621710528,0.00003558717310855264,0.00001779358655427632,0.00000889679327713816

las resoluciones las saque de la siguiente manera:

 zoom=map.getZoom();
         scale=map.getScale();
         var str = document.getElementById('output').innerHTML;
          
          str +=OpenLayers.Util.getResolutionFromScale(scale, 'dd') + ',';
         
         var element = document.getElementById('output');
         element.innerHTML = str;

 

El problema es que me sale el siguiente error y ya no se que puede ser:

An error occurred: Current x value -68.477244 is too far from tile corner x -68.052433

ayuda pleasee

 

Submeter um novo comentário

CAPTCHA
Esta pregunta es para testear que eres una persona humana y no un alien o un spammer que para el caso vienen a ser lo mismo. Si no aciertas, mírate en un espejo no te vayas a estar poniendo verde...
Conteúdo sindicado