[mapserver-dev] RFC 44

Stephen Woodbridge woodbri at swoodbridge.com
Thu Apr 24 20:37:23 EDT 2008


Paul,

This is a great idea! I can think of one minor (I think) thing you need 
to do for this. With tileindexes, if a .prj file exists then that would 
be used for ALL the files represented by the tileindex. This would avoid 
having to look at individual .prj which would be a preformance boost. 
And I'm not sure it makes any sense to have a tileindex with mixed 
projection without at least projecting the extents into the srs of the 
tileindex - I think we don't want to go there anyway.

This might mean that tile4ms should have an optional srs parameter 
and/or read and verify that all files added to the tileindex are from 
the same srs if they have .prj files.

Thoughts?
   -Steve

Paul Ramsey wrote:
> Comments appreciated, in particular regarding where in the lifecycle
> this should be inserted:
> 
> ========================================================
> MS RFC 44: Automatic Projection Configuration for Layers
> ========================================================
> 
> :Date: 2008/04/24
> :Author: Paul Ramsey
> :Contact: pramsey at cleverelephant.ca
> :Last Edited: 2008/04/24
> :Status: Open
> 
> Overview
> --------
> 
> In order to do reprojection, Mapserver currently requires a PROJECTION
> block in the MAP file and in *every* LAYER block.  However, many (or
> even most) layer types in Mapserver support retrieving SRS
> information, from WKT files (like shape files .prj) or from tables
> (like PostGIS spatial_ref_sys) or from the files themselves (like
> GeoTIFF).
> 
> If the virtual layer API is extended to support automatic projection
> configuration, new users can enjoy transparent support for
> projections, while existing behavior and performance can be preserved
> via the PROJECTION block.  Layers that cannot support automatic
> projection will still require PROJECTION blocks, and map files that
> have PROJECTION blocks can use those to avoid the overhead of
> automatic projection configuration.
> 
> Technical Solution
> ------------------
> 
> We will add a new function to the layer->vtable, LayerLoadProjection.
> 
> *NEEDED:* where do we call LayerLoadProjection from for best effect?
> 
> LayerLoadProjection will:
> 
>  * Default to no-op and MS_SUCCESS
>  * Load a projection if one is available, into layer->projection and
> return MS_SUCCESS
>  * Leave layer->projection alone and return MS_SUCCESS ASAP if no
> projection is available
>  * return MS_FAILURE in the event of something catastrophic (OOM, etc)
> during load
> 
> Mapscript Implications
> ----------------------
> 
> See NEEDED above.
> 
> If LayerLoadProjection is called early in the lifecycle (during map
> load, for example) then Mapscript can potentially read and over-ride
> the projectionObj, which is good. If it is called late in the
> lifecycle, then Mapscript cannot read the value, though it can still
> over-ride it, simply by ensuring that a projectionObj with arguments
> is set.
> 
> Files Affected
> --------------
> 
> ::
> 
>  maplayer.c
>  mapshape.c (first implementation)
>  map*.c (eventually all connection types that support automatic CRS discovery)
> 
> * Documentation will be updated to reflect the new feature
> 
>   * Mapserver CGI Reference
> 
> * Test suite will be updated to exercise the new features
> 
>   * Frank Warmerdam has volunteered to do this
> 
> 
> Performance Implications
> ------------------------
> 
> PROJECTION blocks are faster than reading files and database tables
> for this information. This feature will be slower than PROJECTION
> blocks. The performance advantages of PROJECTION blocks will have to
> be documented and highlighted.
> 
> In future phases, some performance issues can be shaved away by
> starting to cache projection information so that FCGI implementations
> do not have to re-read projection information or re-instantiate
> projection objects ever.
> 
> Backwards Compatibility Issues
> ------------------------------
> 
> Installations with bad data (mismatched data and prj information)
> might end up with an unexpected breakage. Installations with working
> PROJECTION blocks already in place will have no problems.
> 
> Bug ID
> ------
> 
> Not yet.
> 
> Voting History
> --------------
> 
> No vote yet.
> 
> References
> ----------
> 
> None.
> _______________________________________________
> mapserver-dev mailing list
> mapserver-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-dev



More information about the mapserver-dev mailing list