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
_______________________________________________
Spanish mailing list
http://lists.osgeo.org/mailman/listinfo/spanish
http://es.osgeo.org
http://twitter.com/osgeoes

Responder a