Changeset 841
- Timestamp:
- 08/14/07 13:55:21
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
PCL/trunk/PCL-MapServer/cartography/engine/mapserver/rendering.py
r840 r841 1119 1119 lo.connection = datastore._wms.capabilities.getOperationByName('GetMap').methods['Get']['url'] 1120 1120 lo.connectiontype = mapscript.MS_WMS 1121 lname = layer.typename.split('/')[0] 1122 bounds = datastore.bounds(lname) 1121 1122 layers = layer.typename.split(',') 1123 # Read the bounds from the first layer 1124 bounds = datastore.bounds(layers[0]) 1123 1125 _set_projection(lo, bounds.srs) 1124 1126 … … 1126 1128 lo.metadata.set('wms_srs', layer.ows_srs) 1127 1129 # for format, try ows_format, fall back on the map format 1128 lo.metadata.set('wms_format', 1129 getattr(layer, 'ows_format', '') or format) 1130 lo.metadata.set('wms_format', getattr(layer, 'ows_format', mo.outputformat)) 1130 1131 1131 1132 # connection timeout … … 1133 1134 str(getattr(layer, 'timeout', 30))) 1134 1135 1135 # names and styles 1136 styled_layers = layer.typename.split(',') 1137 layer_names = [] 1138 style_names = [] 1139 for o in styled_layers: 1140 if o.find('/') < 0: 1141 o = o + '/' 1142 layer_name, style_name = o.split('/') 1143 layer_names.append(layer_name) 1144 style_names.append(style_name) 1145 comma = ',' 1146 layers = comma.join(layer_names) 1147 styles = comma.join(style_names) 1148 if len(styles.strip()) == 0: 1149 styles = getattr(layer, 'ows_style', '') 1150 lo.metadata.set('wms_name', layers) 1151 lo.metadata.set('wms_style', styles) 1136 styles = getattr(layer, 'ows_style', '').split(',') 1137 1138 if len(layers) != len(styles): 1139 raise ValueError('Each WMS layer must have exactly one style associated with it. ' 1140 'Layers: %s, Styles: %s' % (','.join(layers), ','.join(styles))) 1141 1142 lo.metadata.set('wms_name', ','.join(layers)) 1143 lo.metadata.set('wms_style', ','.join(styles)) 1152 1144 1153 1145 # Work around for mapserver 4.4 bug PCL/trunk/PCL-MapServer/tests/testimages.py
r840 r841 176 176 self.mapper = MapRenderer('MapServer', fontset=FONTSET, 177 177 incoming='/tmp/') 178 179 def test_multiple_wms_layers(self): 180 # WMS 181 url = "http://wms.jpl.nasa.gov/wms.cgi?" 182 store = WMSRasterStore(url, '1.1.1') 183 layer = Layer(store, 'modis,global_mosaic') 184 layer.ows_srs = 'EPSG:4326' 185 layer.ows_format = 'image/jpeg' 186 layer.ows_style = 'default,pseudo' 187 style = Style() 188 style.rules.append(Rule('r', [RasterSymbolizer()])) 189 wms = ContextLayer('wms', layer, style) 190 191 map = MapContext([wms]) 192 srs = SpatialReference(epsg=4326) 193 view = View(srs, [-10, 30, 30, 70]) 194 size = [300, 300] 195 image = self.mapper.render(map, view, 'image/jpeg', size, 196 bgcolor='#000000', transparent=0, debug=True) 197 assert image.size == size 198 assert image.mimetype == 'image/jpeg' 199 f = open('test_multiple_wms_layers.jpg', 'wb') 200 f.write(image.getdata()) 201 f.close() 202 203 def test_multiple_wms_layers_with_mismatched_styles(self): 204 # WMS 205 206 url = "http://wms.jpl.nasa.gov/wms.cgi?" 207 store = WMSRasterStore(url, '1.1.1') 208 layer = Layer(store, 'modis,global_mosaic') 209 layer.ows_srs = 'EPSG:4326' 210 layer.ows_format = 'image/jpeg' 211 layer.ows_style = 'default,pseudo,mismatch' 212 style = Style() 213 style.rules.append(Rule('r', [RasterSymbolizer()])) 214 wms = ContextLayer('wms', layer, style) 215 216 map = MapContext([wms]) 217 srs = SpatialReference(epsg=4326) 218 view = View(srs, [-10, 30, 30, 70]) 219 size = [300, 300] 220 221 # We'd like to test with the following assertion, but 222 # rendering.py swallows all exceptions :( 223 #self.assertRaises(ValueError, lambda:self.mapper.render(map, view, 'image/jpeg', size, 224 # bgcolor='#000000', transparent=0, debug=True)) 225 226 # There we just render and verify manually that we get an error image. 227 image = self.mapper.render(map, view, 'image/jpeg', size, 228 bgcolor='#000000', transparent=0, debug=True) 229 assert image.size == size 230 assert image.mimetype == 'image/jpeg' 231 f = open('test_multiple_layers_with_mismatched_styles.jpg', 'wb') 232 f.write(image.getdata()) 233 f.close() 234 235 236 178 237 def test_world(self): 179 238 # WMS
