[OpenLayers-Users] epsg:3857 and google 900913

Arnd Wippermann arnd.wippermann at web.de
Thu Jan 17 10:46:07 PST 2013


Hi Caspar,
 
"If the layer projection equals the mapprojection, the layer projection is
returned"
 
In the case of map projection = EPSG:900913 and a WMS projection = EPSG:3857
the WMS GetMap Request will use EPSG:3857.
Because EPSG:900913 equals EPSG:3857. Declared in Projection.js.
 
For other projections and aliases OpenLayers cann't decide equality and the
map projection will be used.
 
If you include the proj4js-library to your application, then OpenLayers
tests for equality by text comparision of the proj-strings and that may lead
to other results as above, if the proj-strings not ===. 
But it would also provide a possibility to add other projections and aliases
to ones applications.
 
Arnd

  _____  

Von: Casper Span [mailto:info at spatially-oriented.com] 
Gesendet: Donnerstag, 17. Januar 2013 08:51
An: arnd.wippermann at web.de
Cc: openlayers-users at lists.osgeo.org
Betreff: Re: [OpenLayers-Users] epsg:3857 and google 900913


Arnd,

I'm talking about lines 247-251 from wms.js
(https://github.com/openlayers/openlayers/blob/master/lib/OpenLayers/Layer/W
MS.js):

var mapProjection = this.map.getProjectionObject();
var projectionCode = this.projection &&
this.projection.equals(mapProjection) ? this.projection.getCode() :
mapProjection.getCode();
var value = (projectionCode == "none") ? null : projectionCode;


If the layer projection equals the mapprojection, the layer projection is
returned. If not, the mapprojection is returned.


Correct me if I'm wrong, but that would say it always returns the map
projection code, no matter what I fill in on the projection code or when I
fill it.


I came across this piece of code after building a WMS server with SharpMap.
I only built in support for EPSG:3857 but the default OSM layer is in
EPSG:900913. My WMS server kept coming with error "SRS 900913 not supported"

Please note that in my case the WMS layer is NOT my base layer. If it was,
it WOULD listen to the projection of the layer (as the Map.Projection asks
it's baselayer for the projection)


Casper



On Wed, Jan 16, 2013 at 11:13 PM, Arnd Wippermann <arnd.wippermann at web.de>
wrote:



Hi Caspar,
 
"In other words, it will only use the map projection in it's WMS request
URL's"
 
That's not right as you have found out by yourself. If the map projection is
equal the wms projection, then the WMS GetMap Request use the wms
projection.
 
Some servers provide only requests for EPSG:3857 (an alias for EPSG:900913)
and if you use for your map EPSG:900913, then you can add these servers and
set the projection to EPSG:3857 and it works.
 
But it seems, that that only works for EPSG:900913 and EPSG:4326 and their
aliases, because OpenLayers has aliases defined in OpenLayers Projection.js.
 
If you have maps with other projections and a server support only an alias
of the projection, then the above will perhaps not work.
 
Then the only way is to overwrite the getFullRequestString-method of
OpenLayers.Layer.WMS.
 
Example
http://gis.ibbeck.de/ginfo/apps/OLExamples/OL212/wms_options_projection.asp
 
Arnd


  _____  

Von: openlayers-users-bounces at lists.osgeo.org
[mailto:openlayers-users-bounces at lists.osgeo.org] Im Auftrag von Casper Span
Gesendet: Mittwoch, 16. Januar 2013 12:53
An: Sergeant_york
Cc: openlayers-users at lists.osgeo.org
Betreff: Re: [OpenLayers-Users] epsg:3857 and google 900913


Hi,


If you look at the source of WMS (lib\OpenLayers\Layer\WMS.js), take a look
at getFullRequestString.

In it, the baselayer's projection will always override the given projection.
In fact, the layers projection itself will be ignored:

- It takes the Map Projection (=Baselayer projection)

- then, if the WMS layer projection equals the map projection, it uses the
layer projection

- otherwise, it uses the map projection


In other words, it will only use the map projection in it's WMS request
URL's


So yeah... everything MUST be the same projection for WMS layers or it
cannot be placed on top of eachother.

For me, this meant reprojecting my own data so I can serve it with WMS onto
OSM.


You can check these actual outgoing URL's with Firebug and such.


regards,

Casper Span


On Wed, Jan 16, 2013 at 12:31 PM, Sergeant_york <electronicpanda at gmail.com>
wrote:


Hello there,

Thank you for the answer. That gave me a good idea. Unfortunately it doesn't
work when initializing layer.

On the other hand creating a layer (for example aLayer object) then changing
projection works!

Workin way is:
layer aLayer=new OpenLayers.Layer.WMS ......
aLayer.projection= new OpenLayers.Projection("EPSG:3857")



--
View this message in context:
http://osgeo-org.1560.n6.nabble.com/epsg-3857-and-google-900913-tp5027619p50
27809.html

Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
Users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users





-- 

Casper Span
T: @Span_Droid <https://twitter.com/#%21/Span_Droid> 
W: http://www.spatially-oriented.com
M: info at spatially-oriented.com






-- 

Casper Span
T: @Span_Droid <https://twitter.com/#%21/Span_Droid> 
W: http://www.spatially-oriented.com
M: info at spatially-oriented.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/openlayers-users/attachments/20130117/8d482ec3/attachment-0001.html>


More information about the Users mailing list