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 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, 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