def build(self): self.msg('Loading mapfile...') builder = Load(self.mapfile,variables={},from_string=self.from_string,verbose=self.verbose) if not self.from_string: self.msg('Loaded %s...' % self.mapfile) else: self.msg('Loaded XML from string') self.map = builder.build_map(self.width,self.height) if self.srs: self.msg('Setting srs to: %s' % self.srs) self.map.set_easy_srs(self.srs) if self.layers: selected, disactivated = self.map.select_layers(self.layers) self.msg('Selected layers: %s' % selected) if not selected: self.output_error('Layer not found: available layers are: "%s"' % ', '.join(disactivated)) # set up behavior for fixing relationship between map aspect and bbox aspect if self.aspect_fix_mode: if not hasattr(self.map, 'aspect_fix_mode'): self.output_error('Your version of Mapnik does not support setting the aspect_fix_mode (only available in >= Mapnik 0.6.0') try: mode = getattr(mapnik.aspect_fix_mode,self.aspect_fix_mode.upper()) except AttributeError: self.output_error('Error setting aspect_fix_mode, accepted values are: %s' % ', '.join(mapnik.aspect_fix_mode.names.keys())) self.map.aspect_fix_mode = mode # zoom to max extent at beginning if we later need to # zoom to a center point # or need to zoom to a zoom-level self.msg('Setting Map view...') if self.center or not self.zoom is None: if self.max_extent: self.msg('Zooming to max extent: %s' % self.max_extent) self.map.zoom_to_box(mapnik.Box2d(*self.max_extent)) else: self.map.zoom_max() self.msg('Zoomed to *estimated* max extent: %s' % self.map.envelope()) if self.center and not self.zoom is None: self.msg('Zooming to Center (%s) and Zoom Level "%s"' % (self.center,self.zoom)) self.map.set_center_and_zoom(self.center[0],self.center[1],self.zoom) elif self.center and self.radius: self.msg('Zooming to Center (%s) and Radius "%s"' % (self.center,self.radius)) self.map.set_center_and_radius(self.center[0],self.center[1],self.radius) elif not self.zoom is None: self.msg('Zooming to Zoom Level "%s"' % (self.zoom)) self.map.zoom_to_level(self.zoom) elif self.zoom_to_layers: self.msg('Zooming to Layers: "%s"' % (self.zoom_to_layers)) self.map.activate_layers(self.zoom_to_layers) if len(self.zoom_to_layers) > 1: self.map.zoom_to_layers(self.zoom_to_layers) else: self.map.zoom_to_layer(self.zoom_to_layers[0]) else: if self.extent: env = mapnik.Box2d(*self.extent) self.msg('Zooming to custom projected extent: "%s"' % env) self.map.zoom_to_box(env) from_prj = mapnik.Projection(self.map.srs) to_prj = mapnik.Projection('+proj=latlong +datum=WGS84') bbox = env.forward(from_prj,to_prj) self.msg('Custom extent in geographic coordinates: "%s"' % bbox) elif self.bbox: env = mapnik.Box2d(*self.bbox) self.msg('Zooming to custom geographic extent: "%s"' % env) from_prj = mapnik.Projection('+proj=latlong +datum=WGS84') to_prj = mapnik.Projection(self.map.srs) self.map.zoom_to_box(env.forward(from_prj,to_prj)) else: self.map.zoom_all() self.msg('Zoom to extent of all layers: "%s"' % self.map.envelope()) if self.bbox_factor: if self.bbox_factor > 0: bbox = self.map.envelope() * self.bbox_factor else: bbox = self.map.envelope() / self.bbox_factor self.map.zoom_to_box(bbox) self.msg('Adjusting final extent by factor of %s: "%s"' % (self.bbox_factor,self.map.envelope())) self.msg('Finished setting extents...') if self.save_xml: mapnik.save_map(self.map,self.save_xml) return builder
def build(self): self.msg('Loading mapfile...') builder = Load(self.mapfile,variables={},from_string=self.from_string) if not self.from_string: self.msg('Loaded %s...' % self.mapfile) else: self.msg('Loaded XML from string') self.map = builder.build_map(self.width,self.height) if self.srs: self.msg('Setting srs to: %s' % self.srs) self.map.set_easy_srs(self.srs) if self.layers: selected, disactivated = self.map.select_layers(self.layers) self.msg('Selected layers: %s' % selected) if not selected: self.output_error('Layer not found: available layers are: "%s"' % ', '.join(disactivated)) # handle shifts in pixel dimensions or bbox ratio # need to make as an option #try: # self.map.aspect_fix_mode = mapnik.aspect_fix_mode.ADJUST_CANVAS_HEIGHT #except: # self.msg('aspect_fix_mode not available!') # zoom to max extent at beginning if we later need to # zoom to a center point # or need to zoom to a zoom-level self.msg('Setting Map view...') if self.center or not self.zoom is None: if self.max_extent: self.msg('Zooming to max extent: %s' % self.max_extent) self.map.zoom_to_box(mapnik.Envelope(*self.max_extent)) else: self.map.zoom_max() self.msg('Zoomed to *estimated* max extent: %s' % self.map.envelope()) if self.center and not self.zoom is None: self.msg('Zooming to Center (%s) and Zoom Level "%s"' % (self.center,self.zoom)) self.map.set_center_and_zoom(self.center[0],self.center[1],self.zoom) elif self.center and self.radius: self.msg('Zooming to Center (%s) and Radius "%s"' % (self.center,self.radius)) self.map.set_center_and_radius(self.center[0],self.center[1],self.radius) elif not self.zoom is None: self.msg('Zooming to Zoom Level "%s"' % (self.zoom)) self.map.zoom_to_level(self.zoom) elif self.zoom_to_layers: self.msg('Zooming to Layers: "%s"' % (self.zoom_to_layers)) self.map.activate_layers(self.zoom_to_layers) if len(self.zoom_to_layers) > 1: self.map.zoom_to_layers(self.zoom_to_layers) else: self.map.zoom_to_layer(self.zoom_to_layers[0]) else: if self.extent: env = mapnik.Envelope(*self.extent) self.msg('Zooming to custom projected extent: "%s"' % env) self.map.zoom_to_box(env) from_prj = mapnik.Projection(self.map.srs) to_prj = mapnik.Projection('+proj=latlong +datum=WGS84') bbox = env.transform(from_prj,to_prj) self.msg('Custom extent in geographic coordinates: "%s"' % bbox) elif self.bbox: env = mapnik.Envelope(*self.bbox) self.msg('Zooming to custom geographic extent: "%s"' % env) from_prj = mapnik.Projection('+proj=latlong +datum=WGS84') to_prj = mapnik.Projection(self.map.srs) self.map.zoom_to_box(env.transform(from_prj,to_prj)) else: self.map.zoom_all() self.msg('Zoom to extent of all layers: "%s"' % self.map.envelope()) if self.bbox_factor: if self.bbox_factor > 0: bbox = self.map.envelope() * self.bbox_factor else: bbox = self.map.envelope() / self.bbox_factor self.map.zoom_to_box(bbox) self.msg('Adjusting final extent by factor of %s: "%s"' % (self.bbox_factor,self.map.envelope())) self.msg('Finished setting extents...') if self.save_xml: mapnik.save_map(self.map,self.save_xml) return builder
def build(self): self.msg('Loading mapfile...') builder = Load(self.mapfile, variables={}, from_string=self.from_string) if not self.from_string: self.msg('Loaded %s...' % self.mapfile) else: self.msg('Loaded XML from string') self.map = builder.build_map(self.width, self.height) if self.srs: self.msg('Setting srs to: %s' % self.srs) self.map.set_easy_srs(self.srs) if self.layers: selected, disactivated = self.map.select_layers(self.layers) self.msg('Selected layers: %s' % selected) if not selected: self.output_error( 'Layer not found: available layers are: "%s"' % ', '.join(disactivated)) # handle shifts in pixel dimensions or bbox ratio # need to make as an option #try: # self.map.aspect_fix_mode = mapnik.aspect_fix_mode.ADJUST_CANVAS_HEIGHT #except: # self.msg('aspect_fix_mode not available!') # zoom to max extent at beginning if we later need to # zoom to a center point # or need to zoom to a zoom-level self.msg('Setting Map view...') if self.center or not self.zoom is None: if self.max_extent: self.msg('Zooming to max extent: %s' % self.max_extent) self.map.zoom_to_box(mapnik.Envelope(*self.max_extent)) else: self.map.zoom_max() self.msg('Zoomed to *estimated* max extent: %s' % self.map.envelope()) if self.center and not self.zoom is None: self.msg('Zooming to Center (%s) and Zoom Level "%s"' % (self.center, self.zoom)) self.map.set_center_and_zoom(self.center[0], self.center[1], self.zoom) elif self.center and self.radius: self.msg('Zooming to Center (%s) and Radius "%s"' % (self.center, self.radius)) self.map.set_center_and_radius(self.center[0], self.center[1], self.radius) elif not self.zoom is None: self.msg('Zooming to Zoom Level "%s"' % (self.zoom)) self.map.zoom_to_level(self.zoom) elif self.zoom_to_layers: self.msg('Zooming to Layers: "%s"' % (self.zoom_to_layers)) self.map.activate_layers(self.zoom_to_layers) if len(self.zoom_to_layers) > 1: self.map.zoom_to_layers(self.zoom_to_layers) else: self.map.zoom_to_layer(self.zoom_to_layers[0]) else: if self.extent: env = mapnik.Envelope(*self.extent) self.msg('Zooming to custom projected extent: "%s"' % env) self.map.zoom_to_box(env) from_prj = mapnik.Projection(self.map.srs) to_prj = mapnik.Projection('+proj=latlong +datum=WGS84') bbox = env.transform(from_prj, to_prj) self.msg('Custom extent in geographic coordinates: "%s"' % bbox) elif self.bbox: env = mapnik.Envelope(*self.bbox) self.msg('Zooming to custom geographic extent: "%s"' % env) from_prj = mapnik.Projection('+proj=latlong +datum=WGS84') to_prj = mapnik.Projection(self.map.srs) self.map.zoom_to_box(env.transform(from_prj, to_prj)) else: self.map.zoom_all() self.msg('Zoom to extent of all layers: "%s"' % self.map.envelope()) if self.bbox_factor: if self.bbox_factor > 0: bbox = self.map.envelope() * self.bbox_factor else: bbox = self.map.envelope() / self.bbox_factor self.map.zoom_to_box(bbox) self.msg('Adjusting final extent by factor of %s: "%s"' % (self.bbox_factor, self.map.envelope())) self.msg('Finished setting extents...') if self.save_xml: mapnik.save_map(self.map, self.save_xml) return builder
def build(self): self.msg('Loading mapfile...') builder = Load(self.mapfile, variables={}, from_string=self.from_string, verbose=self.verbose) if not self.from_string: self.msg('Loaded %s...' % self.mapfile) else: self.msg('Loaded XML from string') self.map = builder.build_map(self.width, self.height) if self.srs: self.msg('Setting srs to: %s' % self.srs) self.map.set_easy_srs(self.srs) if self.layers: selected, disactivated = self.map.select_layers(self.layers) self.msg('Selected layers: %s' % selected) if not selected: self.output_error( 'Layer not found: available layers are: "%s"' % ', '.join(disactivated)) # set up behavior for fixing relationship between map aspect and bbox aspect if self.aspect_fix_mode: if not hasattr(self.map, 'aspect_fix_mode'): self.output_error( 'Your version of Mapnik does not support setting the aspect_fix_mode (only available in >= Mapnik 0.6.0' ) try: mode = getattr(mapnik.aspect_fix_mode, self.aspect_fix_mode.upper()) except AttributeError: self.output_error( 'Error setting aspect_fix_mode, accepted values are: %s' % ', '.join(mapnik.aspect_fix_mode.names.keys())) self.map.aspect_fix_mode = mode # zoom to max extent at beginning if we later need to # zoom to a center point # or need to zoom to a zoom-level self.msg('Setting Map view...') if self.center or not self.zoom is None: if self.max_extent: self.msg('Zooming to max extent: %s' % self.max_extent) self.map.zoom_to_box(mapnik.Box2d(*self.max_extent)) else: self.map.zoom_max() self.msg('Zoomed to *estimated* max extent: %s' % self.map.envelope()) if self.center and not self.zoom is None: self.msg('Zooming to Center (%s) and Zoom Level "%s"' % (self.center, self.zoom)) self.map.set_center_and_zoom(self.center[0], self.center[1], self.zoom) elif self.center and self.radius: self.msg('Zooming to Center (%s) and Radius "%s"' % (self.center, self.radius)) self.map.set_center_and_radius(self.center[0], self.center[1], self.radius) elif not self.zoom is None: self.msg('Zooming to Zoom Level "%s"' % (self.zoom)) self.map.zoom_to_level(self.zoom) elif self.zoom_to_layers: self.msg('Zooming to Layers: "%s"' % (self.zoom_to_layers)) self.map.activate_layers(self.zoom_to_layers) if len(self.zoom_to_layers) > 1: self.map.zoom_to_layers(self.zoom_to_layers) else: self.map.zoom_to_layer(self.zoom_to_layers[0]) else: if self.extent: env = mapnik.Box2d(*self.extent) self.msg('Zooming to custom projected extent: "%s"' % env) self.map.zoom_to_box(env) from_prj = mapnik.Projection(self.map.srs) to_prj = mapnik.Projection('+proj=latlong +datum=WGS84') bbox = env.forward(from_prj, to_prj) self.msg('Custom extent in geographic coordinates: "%s"' % bbox) elif self.bbox: env = mapnik.Box2d(*self.bbox) self.msg('Zooming to custom geographic extent: "%s"' % env) from_prj = mapnik.Projection('+proj=latlong +datum=WGS84') to_prj = mapnik.Projection(self.map.srs) self.map.zoom_to_box(env.forward(from_prj, to_prj)) else: self.map.zoom_all() self.msg('Zoom to extent of all layers: "%s"' % self.map.envelope()) if self.bbox_factor: if self.bbox_factor > 0: bbox = self.map.envelope() * self.bbox_factor else: bbox = self.map.envelope() / self.bbox_factor self.map.zoom_to_box(bbox) self.msg('Adjusting final extent by factor of %s: "%s"' % (self.bbox_factor, self.map.envelope())) self.msg('Finished setting extents...') if self.save_xml: mapnik.save_map(self.map, self.save_xml) return builder