[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