[Spanish] Re: problemas con tilecache

josego josego at simgia.com
Fri Jan 6 10:29:38 EST 2012


El 26/12/11 18:11, josego escribió:
> Hola a todos.
> Estoy usando tilecache y no se como encontrar bien las resoluciones. 
> En algunas partes me dibuja bien el mapa pero no en todas partes.
> Mi mapserver tiene la siguiente extensión --> -62.6454 -27.4933 
> -54.1077 -19.2755
>
> Mi openlayer también tiene la misma extension como también el 
> tilecache. No se como encontrar bien el tilecache. No se si me podrían 
> dar links o ejemplos para poder realizar. Estoy hace una semana viendo 
> y no encuentro la solución. No se que requisitos necesitaría para 
> realizar correctamente.
>
>
> muchas gracias por todo.
> saludos, jose

Problema resuelto. Les dejo como yo realice el tema:

Para conseguir las resoluciones y colocar en el tileCache

OBS:
Las aplicaciones que se usan y funciona el tilecache son:

    * MapSever 5.6
    * OpenLayers 2.10
    * TileCache 2.10

*OBS*:
TileCache 2.11 tiene un bug.

Para obtener la revolución de cada zoom del tilecache sincronizando el 
OpenLayer se tienen que seguir algunos pasos:

    * Las resoluciones (atributo resolutions del tilecache y del
      openlayer) tienen que coincidir. Ejemplo:
          o OpenLayers (dentro de las opciones del map:
                + resolutions:
                  [0.013052769,0.00846666,0.00070555,0.00007937,0.000079371095,0.000003968477],
          o TileCache:
                + resolutions=0.013052769,0.00846666,0.00070555,0.00007937,0.000079371095,0.000003968477,0.091309,0.005706609,0.00071335068,0.000089168836,0.000044584418,0.0028534028,0.022827
          o OBS: en el tilecache tiene mas resoluciones que en el
            openLayer pero eso debería ser así porque o sino salen
            varios errores en el navegador con el OpenLAyers. Regla
            general de esta parte. Las resoluciones del tilecache y del
            openlayers tienen que ser iguales. Una vez hecho esto,
            probar con el openlayers y si salen, errores, colocar esas
            nuevas resoluciones.
    * Los valores de xmin, xmax, ymin y ymax tienen que coincidir entre
      el tilecache y el openlayers. El atributo del openlayer se llama
      maxExtent que esta dentro de las opciones del map. El atributo en
      el tilecache se llama bbox.
          o Ejemplo en el openLayers:
                + maxExtent: new
                  OpenLayers.Bounds(-62.6454,-27.4933,-54.1077,-19.2755),
          o Ejemplo en el tilecache:
                + bbox=-62.6454,-27.4933,-54.1077,-19.2755
    * Los valores del maxResolution tienen que coincidir entre el
      tileCache y el OpenLayers. El atributo de ambos se llama
      maxResolution. Esto es necesario para cuando se hace zoom de abajo
      para arriba y aparecen errores. Con esto limitamos la
      maxResolutions que puede tener nuestro programa.
          o Ejemplo en OpenLayers:
                + maxResolution: 0.013052769,
          o Ejemplo en TileCache:
                + maxResolution=0.013052769
    * Los valores de los zooms tienen que coincidir. El atributo en
      openlayers que se ubica en las opciones del mapa se llama
      numZoomLevels, y el atributo en el tileCache se llama levels.
          o Ejemplo en el OpenLayers:
                + numZoomLevels: 6
          o Ejemplo en el tileCache:
                + levels=6
    * Los tiles tiene que coincidir entre ambos. El atributo en el
      openLayers se llama tileSize y en el tileCache se llama size.
          o Ejemplo en el OpenLayers:
                + tileSize: new OpenLayers.Size(256, 256),
          o Ejemplo en el tileCache:
                + size=256,256


*Dos***formas de hallar la resolucion:

   1. Para hallar las resoluciones usen la calculadora (qcalculate),
      porque tiene mas decimales que el programa gcalctool que trae por
      defecto en gnome. Para las resoluciones mas bajas se necesitan
      mejor precisión en los decimales.


Referencias

INCHES_PER_UNIT['dd'] = 4374754

DOTS_PER_INCH = 72


La formula que se usa para la resolucion es =

resolution = scale / (inches_per_unit * dots_per_inch)


Ejemplo con la escala 1250:

resolution = 1250 / (72 * 4374754) = 0.0000039684771

   2. En caso que salgan errores en el OpenLayer, por ejemplo esto ?
      http://localhost/tilecache/tilecache.py?LAYERS=MapaParaguay&TRANSPARENT=false&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-56.801631111111,-27.4933,-50.957862222222,-21.649531111111&WIDTH=256&HEIGHT=256
      <http://localhost/tilecache/tilecache.py?LAYERS=MapaParaguay&TRANSPARENT=false&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-56.801631111111,-27.4933,-50.957862222222,-21.649531111111&WIDTH=256&HEIGHT=256>


Agarramos el valor absoluto entre (xmin - xmax)/tamaño del tileCache. En 
este caso seria (50.95786222222 - 56.80163111111)/256=0.022827222.

Ojo: el 256 es el valor del tamaño del tile.

Luego con ese valor =0.02282722*72 * 4374754= 7190170

Formula anterior: ((xmin - xmax)/tamaño del 
tileCache)*DOTS_PER_INCH*INCHES_PER_UNIT['dd']

     Y por ultimo 7190170/(72*4374754)=0.02282722 ? este es el valor de 
la resolucion que colocamos en el tilecache. El valor 7190170 seria la 
escala.
Formula anterior: resolution = scale / (inches_per_unit * dots_per_inch)

Luego borramos los tmp del tilecache y reiniciamos el servidor apache. 
Ahora debería de funcionar el OpenLayers sin errores.



Esto es todo y así debería de funcionar todo. XD

saludos, jose
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.osgeo.org/pipermail/spanish/attachments/20120106/3de472fa/attachment-0001.html


More information about the Spanish mailing list