def draw(obj, style=None, bounds=None, size=None, format=None, **options): """ Draws an object onto a canvas. *obj* can be a geometry, list of geometries, or a :class:`Layer <geoscript.layer.layer.Layer>`. *style* is a :class:`Symbolizer <geoscript.style.symbolizer.Symbolizer>` that specifies how to render the object. *size* is a tuple that specifies the dimensions of the canvas the object will drawn upon. *format* is the format or renderer to use for rendering. """ if isinstance(obj, (Layer)): layer = obj else: obj = obj if isinstance(obj, list) else [obj] # wrap up geometries/features in a layer for rendering mem = Memory() if isinstance(obj[0], Feature): layer = mem.create(schema=obj[0].schema) else: layer = mem.create("feature") for o in obj: layer.add(o if isinstance(o, Feature) else [o]) # create a map and render if not bounds: bounds = layer.bounds().scale(1.1) map = Map([layer], [style] if style else []) map.render(format=format, bounds=bounds, size=size, **options)
def __init__(self, name=None, workspace=None, source=None, schema=None): if not workspace: from geoscript.workspace import Memory workspace = Memory() name = name if name else schema.name if schema else Layer._newname() if not source: layer = None try: layer = workspace.get(name) except KeyError: pass if not layer: if schema: layer = workspace.create(schema.name, schema.fields) else: layer = workspace.create(name) source = layer._source elif isinstance(source, FeatureCollection): source = CollectionDelegatingFeatureSource(source) self.workspace = workspace self.schema = schema or feature.Schema(ft=source.schema) self._source = source # keep a crs local to allow the native crs to be overriden, or to # provide a crs for layers that don't have one specified self._proj = None
def __init__(self, name=None, workspace=None, fs=None, schema=None): if not workspace: from geoscript.workspace import Memory workspace = Memory() name = name or Layer._newname() if not fs: layer = None try: layer = workspace.get(name) except KeyError: pass if not layer: if schema: layer = workspace.create(schema.name, schema.fields) else: layer = workspace.create(name) fs = layer._source self.workspace = workspace self.schema = schema or feature.Schema(ft=fs.schema) self._source = fs # keep a crs local to allow the native crs to be overriden, or to # provide a crs for layers that don't have one specified self._proj = None
def setUp(self): mem = Memory() self.l = mem.add(Shapefile('work/states.shp'))
def setUp(self): self.ws = Memory()
if __name__ == '__main__': # Get the arguments, naively script, shp_dir, config_file_name, out_file = sys.argv # Read the json config file f = open(config_file_name, 'r') config = json.load(f) # Create the workspaces in_ws = Directory(shp_dir) output_dir = out_file if not os.path.isdir(output_dir): os.mkdir(output_dir) out_ws = Directory(output_dir) mem_ws = Memory() # Show the layers are about to merge print in_ws.layers() # Init the output layer epsg4326 = Projection('epsg:4326') schema = Schema(out_file, [ ('geom', getattr(geoscript.geom, config['geomtype']), epsg4326), ('type', str), ('name', str), ('agency', str) ]) out_layer = Layer(schema=schema) try: out_layer = merge_shapefiles(config, out_layer) # Write it to the shape file out_ws.add(out_layer)