[ZMapServer-Developers] ReferenceMap
Status: Alpha
Brought to you by:
sgillies
|
From: Florian E. <Flo...@ui...> - 2005-04-13 14:41:25
|
Hi list!
Because we need a reference-map for our application, we extended the PCL-0.7
source code:
to manage this, we added a 'createRefMap'-function in
cartography/engine/mapserver/mapserver.py and extended cartography/mapping.py
for a ReferenceMap class. These functions are close to the mapscript-attributes
and far from intention of independent use of map-engines. Has anyone better
sugestions for implementing a refernce-map? If someone want's to improve the
code, please tell us about the changes.
florian & michael
#### mapserver.py: ###########################################
def createRefMap( mapSize, mapExt, srs, img, refSize, refExt, imgType = 'PNG'):
"""Draw Reference Map"""
mo = mapscript.mapObj()
# set map-attributes
mo.setSize( mapSize[ 0 ], mapSize[ 1 ] )
mo.setExtent( mapExt[ 0 ], mapExt[ 1 ], mapExt[ 2 ], mapExt[ 3 ] )
mo.setImageType( imgType )
mo.setProjection( 'init=%s' % srs )
# set refMap-attributes
mo.reference.image = img
mo.reference.width = refSize[ 0 ]
mo.reference.height = refSize[ 1 ]
mo.reference.extent.minx = refExt[ 0 ]
mo.reference.extent.miny = refExt[ 1 ]
mo.reference.extent.maxx = refExt[ 2 ]
mo.reference.extent.maxy = refExt[ 3 ]
# box-attributes are default
mo.reference.outlinecolor.setRGB( 255, 0, 0 )
mo.reference.color.setRGB( -1, -1, -1 )
# draw image
im = mo.drawReferenceMap()
image = mapping.Image()
#for the upcoming mapserver function
if hasattr(im, 'getBytes'):
image.data.write(im.getBytes())
else:
im.write(image.data)
image.size = [im.width, im.height]
image.mimetype = im.format.mimetype
del im
del mo
return image
### mapping.py: ##################################################
class ReferenceMap:
"""ReferenceMap from createRefMap() in mapserver.py
Attributes
----------
mapSize : list
image.width, image.height of map
mapExt : list
map bounding box like '[xmin, ymin, xmax, ymax]'
srs : string
like: 'EPSG=31294'
img : string
path to image-object like 'context/irmi/img/...'
refSize: list
image.width, image.height of ReferenceMap
refExt : list
ReferenceMap bounding box like '[xmin, ymin, xmax, ymax]'
imgType : string
default is 'PNG'
"""
def __init__( self, mapSize, srs, img, refSize, refExt, imgType = 'PNG' ):
self.__mapSize = mapSize
self.__mapExt = []
self.__srs = srs
self.__img = img
self.__refSize = refSize
self.__refExt = refExt
self.__imgType = imgType
def draw( self, mapExt, refExt=None ):
self.__mapExt = mapExt
if refExt:
self.__refExt = refExt
ref = engine.mapserver.mapserver.createRefMap( self.__mapSize,
self.__mapExt, self.__srs,
self.__img, self.__refSize, self.__refExt,
self.__imgType )
return ref
|