[Portugal] reprojeção em openlayers

Luís Ferreira lferreira75.1 at gmail.com
Tue Apr 28 19:45:23 EDT 2009


Olá Luís

Também estou a partir a cabeça com Openlayers e Mapfish.

Eu estou a usar a projecção epsg: 900913 Spherical Mercator para
visualizar camadas do Google juntamente com outros dados.

Junta à lista epsg do PROJ:
<900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs <>

Projecta os teus dados, num serviço WMS ou WFS, para epsg: 900913.

Depois, com Openlayers:


//Definir Projecções
        var sphericalmercator = new OpenLayers.Projection("EPSG:900913");

        //maxExtent e restrictedExtent
        var sphericalmercatorbounds = new OpenLayers.Bounds(-992810.0031061, 4581630.1929423, -916168.19724106, 4650374.13191182);

        var scales = [100000, 50000, 25000, 10000, 5000, 1000, 500, 100];

        var resolutions = new Array(scales.length);
          for (i=0;i<scales.length;i++) {
            resolutions[i] = scales[i] / (OpenLayers.INCHES_PER_UNIT[39.3701] * OpenLayers.DOTS_PER_INCH);
          }

        var options = {
            scales: scales,
            projection: sphericalmercator,
            displayProjection: sphericalmercator,
            units: "m",
            numZoomLevels: 20,
            maxResolution: 'auto',
            maxScale: 1000000,
          /*  minResolution: 'auto',*/
            maxExtent: sphericalmercatorbounds,
            restrictedExtent: sphericalmercatorbounds
        };
-------------------------------------------------------------
        map = new OpenLayers.Map('center', options);

	var conc_grandola_dt73ipcc =  new OpenLayers.Layer.WMS(
          "Concelho de Grândola",
          "http://proxy.xxx/cgi-bin/mapserv?",
          {map:'/var/www/mapserver/muda_wms.map',
          layers: 'conc_grandola_dt73ipcc',
          srs: 'EPSG:900913',
          format: 'image/png',
          transparent: true
          },
          {visibility:false,
          isBaseLayer: false,
          opacity: 0.4,
          noMagic: false
          }
        );

Um abraço

Luís Ferreira

Ter, 2009-04-28 às 13:42 -0700, Gabriel Nolasco escreveu:
> Professor José Alberto Gonçalves,
> 
> Obrigado pelas correcções, é bom saber que há alguém atento às asneiras que se vão dizendo!
> 
> Cumprimentos,
> Gabriel Nolasco
> 
> 
> Atenção a um pormenor que presumo possa levantar problemas: a projecção
> usada pelo Google Maps é uma projecção de Mercator mas de uma esfera e não
> de um elipsóide. A epsg:4326 também não é a de Mercator mas a sim a
> projecção "latlong" (isto é, não projecção):
> 
> # WGS 84
> <4326> +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs  <>
> 
> 
> A epsg:3395 ("World Mercator") é a projecção de Mercator do elipsóide e tem
> a seguinte instrução do PROJ.4
> 
> # WGS 84 / World Mercator
> <3395> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84
> +units=m +no_defs  <>
> 
> 
> A projecção usada pelo Google Maps deverá ser
> 
> +proj=merc +R=6378137 +lon_0=0 +k=1 +x_0=0 +y_0=0 +units=m +no_defs
> 
> Apesar de usar coordenadas (long,lat) no elipsóide WGS84 considera nas
> fórmulas uma esfera (i.e. excentricidade zero) e não o elipsóide.
> 
> Cumprimentos
> 
> José A. Gonçalves
> 
> 
> 2009/4/28 Gabriel Nolasco <nolasco_gabriel  yahoo.com.br>
> 
> > Olá Luis,
> > Penso que não podes reprojectar a layer do goolge, tens sim que reprojectar
> > os teus dados para projecção de Mercator (epsg:4326). Os resultados da
> > sobreposição vão piorar à medida que os dados se afastam do equador.
> >
> >     map = new OpenLayers.Map('map');
> >
> >     var satellite = new OpenLayers.Layer.Google(
> >         "Google Satellite" , {type: G_SATELLITE_MAP}
> >     );
> >
> >     var wms = new OpenLayers.Layer.WMS(
> >         "World Map",
> >                 "http://world.freemap.in/cgi-bin/mapserv",
> >                 {
> >                     map: '/www/freemap.in/world/map/factbooktrans.map',
> >                     transparent: 'TRUE',
> >                     layers: 'factbook'
> >                 },
> >                 {'reproject': true}
> >     );
> >
> >     map.addLayers([satellite, wms]);
> >
> > Podes ver vários exemplos em http://openlayers.org/dev/examples/
> >
> > Cumprimentos,
> > Gabriel Nolasco
> >
> > --- Em *ter, 28/4/09, Luis Calisto <luis.calisto  hotmail.com>* escreveu:
> >
> >
> > De: Luis Calisto <luis.calisto  hotmail.com>
> > Assunto: [Portugal] reprojeção em openlayers
> > Para: portugal  lists.osgeo.org
> > Data: Terça-feira, 28 de Abril de 2009, 15:42
> >
> >
> > Tenho estado a trabalhar com o openlayers, actualmente estou a tentar fazer
> > reprojecções entre coordenadas dentro do openlayers, alguem pode dar uma
> > ajuda?
> >
> > Outra coisa que tenho tentado é reprojectar uma layer do Google de forma a
> > poder sobrepor informação noutro sistema de coordenadas, uma vez que o
> > google se encontra em wgs84 certo?
> >
> > Desde já obrigado por tudo.
> >
> > Luís Calisto
> 
> 
> 
>       Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
> _______________________________________________
> Portugal mailing list
> Portugal at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/portugal



More information about the Portugal mailing list