[OpenLayers-Users] Spherical Mercator and 4326 alignment problem
Arlen Poort
arlen.poort at gmail.com
Mon Aug 16 18:16:12 EDT 2010
I'm not a wizard myself, but I had the same problem a few months ago. In my
Openlayers code, I finally put in the code below, and this gave a good
result. But perhaps this is of no help.
In my Mapfile, I don't have the Google projection (900913), but WGS84
(4326).
Best regards,
Arlen
function init(){
var mapoptions = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
maxExtent: new
OpenLayers.Bounds(375000,6550000,800000,7100000),
tileSize: new OpenLayers.Size(256,256)
};
(...etc...)
On Tue, Aug 17, 2010 at 12:04 AM, B. Heath Robinson <bheathr at gmail.com>wrote:
> I am having a problem with a WMS layer lining up on top of a Google map.
> It appears to be about 15mi south of were it needs to be. I am assuming
> this is because of the fact that spherical mercator ignores the fact the
> earth is an ellipse. Anyway, I have included my openlayers code and my
> mapfile as after spending hours search seems to be helpful.
>
> I get the same results using either a shapfile or postgis data each with a
> different projection.
>
> I am using what I believe to be the best method. If I use "reproject:true"
> the map does line up, but that causes other known problems and is
> deprecated. Any help would be greatly appreciated.
>
> --------MAPFILE----------
> MAP
> NAME "Test Map"
> SIZE 256 256
> MAXSIZE 40096
> UNITS feet
> DEBUG ON
> DEBUG 5
> CONFIG "PROJ_LIB" "/usr/local/share/proj"
> CONFIG "MS_ERRORFILE" "/tmp/mapserver.log"
> EXTENT -10899765.713460 3586328.494261 -10787636.706166 3654203.662907
>
> PROJECTION
> "init=epsg:900913"
> END
>
> IMAGECOLOR 255 255 255
> IMAGEQUALITY 85
> IMAGETYPE AGGA
>
> OUTPUTFORMAT
> NAME AGGA
> DRIVER 'AGG/PNG'
> MIMETYPE 'image/png'
> IMAGEMODE RGBA
> EXTENSION 'png'
> #FORMATOPTION "QUANTIZE_FORCE=on"
> #FORMATOPTION "QUANTIZE_COLORS=256"
> FORMATOPTION "QUANTIZE_NEW=on"
> END
>
> LAYER
> NAME 'cities'
> TYPE POLYGON
> DUMP true
> PROCESSING "CLOSE_CONNECTION=DEFER"
> CONNECTIONTYPE postgis
> CONNECTION "dbname='regnumvisum' host=localhost port=5432 user='ecweb'
> password='tklM3E1m0' sslmode=disable"
> DATA 'limits FROM "maps_city" USING UNIQUE id USING srid=4326'
> METADATA
> 'ows_title' 'parcels'
> 'wms_srs' 'EPSG:900913 EPSG:3785'
> 'wms_format' 'image/png'
> END
> STATUS ON
> TRANSPARENCY 50
> PROJECTION
> "init=epsg:4326"
> END
> CLASSITEM 'id'
> CLASS
> NAME 'default'
> STYLE
> SYMBOL 0
> SIZE 7.0
> OUTLINECOLOR 255 255 255
> COLOR [color]
> ANTIALIAS TRUE
> END
> END
> END
>
> LAYER
> NAME 'cities-shp'
> TYPE POLYGON
> DUMP true
> DATA /Users/bheathr/EdenicConfluence/sample_files/Unified
> METADATA
> 'ows_title' 'parcels'
> 'wms_srs' 'EPSG:900913 EPSG:3785'
> 'wms_format' 'image/png'
> END
> STATUS ON
> TRANSPARENCY 50
> PROJECTION
> "init=epsg:2277"
> END
> CLASSITEM 'OBJECTID'
> CLASS
> NAME 'default'
> STYLE
> SYMBOL 0
> SIZE 7.0
> OUTLINECOLOR 255 255 255
> COLOR 0 0 0
> ANTIALIAS TRUE
> END
> END
> END
> END
> ---------MAPFILE-------------
> ---------Open Layers---------
> function init(){
> var options = {
> projection: "EPSG:900913",
> units: "ft",
> maxResolution: 156543.0339,
> maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
> 20037508, 20037508)
> };
> map = new OpenLayers.Map('map', options);
>
> var gmap = new OpenLayers.Layer.Google(
> "Google Streets",
> {'sphericalMercator': true}
> );
>
> cities = new OpenLayers.Layer.WMS("Bell Cities",
> "
> http://localhost/cgi-bin/mapserv",
> {'map':
> '/Users/bheathr/EdenicConfluence/regnumvisum/etc/test.map',
> 'layers': 'cities-shp',
> 'format':'png'},
> {'reproject': false,
> 'opacity': 0.4,
> 'isBaseLayer': false,
> 'wrapDateLine': true});
>
> // create a vector layer for drawing
> vector = new OpenLayers.Layer.Vector("Editable Vectors");
>
> map.addLayers([gmap, cities]);
> map.addControl(new OpenLayers.Control.LayerSwitcher());
> centerMap(-97.67112,30.974599,-97.18326,31.18982);
> }
>
> function centerMap(top,left,bottom,right) {
> var proj = new OpenLayers.Projection("EPSG:4326");
> var bounds = new OpenLayers.Bounds(top,left,bottom,right);
> bounds.transform(proj, map.getProjectionObject());
> if (!map.getCenter()) map.zoomToExtent(bounds);
> }
>
> ---------Open Layers---------
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100817/847d5b56/attachment.html
More information about the Users
mailing list