[mapserver-users] MapServer 4.8.3: MapScript setProjection

Simon Greig simon_greig at uk.ibm.com
Wed Apr 2 11:16:37 EDT 2008


Hi,

We have made the changes to remove the explicit layer setProjection and 
allow each layer to inherit the projection from its map. 

However for some vector layers we consistently get: 
"Layer must have an EPSG or AUTO projection code (in its PROJECTION object 
or wms_srs metadata)"

A layer either works or does not work, but 30% of our layers fail with 
this error.  Also layers that work or fail differ between environments.

We don't use a map file for layer data (just for mapObj config) as all of 
our layer configurations are stored in a database.  Our WMS_LAYERS table 
stores all of the data that you would normally see within the LAYERS 
section of a mapfile.

I have checked the PROJECTION setting and for all layers it is set to 
"init='epsg:27700'".

Our code manually constructs mapObj and layerObj objects taking the 
configuration from our config database.

When our code constructs the layerObj JNI objects it checks the PROJECTION 
value from the database and if the DB value is the same as the mapObj 
projection then the code skips the layerObj.setProjection because it 
assumes that the layer will inherit the projection from the mapObj used in 
the constructor of the layerObj.

None of the layers in the list are WMS layers and the layers that fail are 
all going to our Oracle Spatial database.

I have asked the database team to investigate the differences between 
layers that work and fail in the same environment and layers that work in 
one environment and fail in another.  I have inspected the development 
database and a I cannot see anything different between a layer that works 
and one that does not.

e.g. If I simulate the mapfile syntax for our layers for the benefit of 
the email, if we had defined our layers in the mapfile they would look 
like this:

LAYER
   NAME  "2001UrbanAreas(Census)"
   CONNECTION "<usr>/<pwd>@SPR01"
   STATUS ON
   TYPE POLYGON
   DATA "GEOMETRY FROM OTHERAGENCIES.DCLG00000001 USING SRID 81989"
   MAXSCALE 99999999
   MINSCALE 0
   TRANSPARENCY 60
   PROJECTION "init=epsg:27700"
END

LAYER
   NAME  "EnglishHeritageRegions"
   CONNECTION "<usr>/<pwd>@SPR01"
   STATUS ON
   TYPE POLYGON
   DATA "GEOMETRY FROM OTHERAGENCIES.ENGH00000001 USING SRID 81989"
   MAXSCALE 99999999
   MINSCALE 0
   TRANSPARENCY 60
   PROJECTION "init=epsg:27700"
END


2001Urban layer fails with the projection error, the 
EnglishHeritageRegions works for the exact same bounding box/scale.
 


We have not applied the METADATA change as the layers are not external WMS 
layers and presumably setting the METADATA wms_srs would provide the same 
effect as calling layerObj.setProjection?

If we restore the code to setProjection for every layer then the errors go 
away - but our performance goes down.


Does any of this description allow anyone to suggest areas that I should 
get the database team to focus on?

Any advice appreciated :-)

Simon





Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20080402/5296521a/attachment.html


More information about the mapserver-users mailing list