Пример #1
0
    features = self._source.features
    fc = WfsFactory.eINSTANCE.createFeatureCollectionType()
    fc.feature.add(features)

    e = Encoder(WFSConfiguration())        
    uri = self._source.name.namespaceURI
    prefix = 'gt'
    e.namespaces.declarePrefix(prefix,uri)
    e.indenting = True
    e.encode(fc, WFS.FeatureCollection, out)

  def toJSON(self,out=sys.stdout):
    try:
      from org.geotools.geojson import GeoJSONWriter
    except ImportError:
      raise Exception('toJSON() not available, GeoJSON libraries not on classpath.')
    else:
      features = self._source.features
      w = GeoJSONWriter() 
      w.write(features,out)

  @staticmethod
  def _newname():
    Layer._id  += 1
    return 'layer_%d' % Layer._id

core.registerTypeMapping(FeatureSource, Layer, lambda x: Layer(source=x))
core.registerTypeMapping(FeatureCollection, Layer, lambda x: Layer(source=x))
core.registerTypeUnmapping(Layer, FeatureSource, lambda x: x._source)
core.registerTypeUnmapping(Layer, FeatureCollection, lambda x: x._source.getFeatures())
Пример #2
0
    *n* is the number of features to read.
    """
        features = []
        for i in range(n):
            try:
                features.append(self.next())
            except StopIteration:
                break

        return features

    def close(self):
        """
    Closes the cursor. This function should *always* be called by client code after the cursor is no longer needed or has been exhausted.
    """
        if self._reader:
            self._reader.close()

    def __iter__(self):
        return self


def toCollection(c):
    if c.layer is not None:
        return PyFeatureCollection(c, c.layer.schema._type)
    return PyFeatureCollection(c)


core.registerTypeUnmapping(Cursor, FeatureCollection, toCollection)
core.registerTypeUnmapping(Cursor, SimpleFeatureCollection, toCollection)
Пример #3
0
  def __setitem__(self, key, value):
    self.set(key, value)

  def __iter__(self):
    return self.schema.__iter__()

  def iterkeys(self):
    return self.__iter__()

  def iteritems(self):
    return self.attributes.iteritems()

  def keys(self):
    return [f.name for f in self.schema.fields]

  def values(self):
    return [core.map(val) for val in self._feature.getAttributes()]

  def __repr__(self):
    atts = ['%s: %s' % (fld.name, self.get(fld.name)) for fld in self.schema.fields]

    id = self.id if self.id.startswith(self.schema.name) else '%s.%s' % (self.schema.name, self.id)
    return '%s {%s}' % (id, string.join(atts,', '))

  def __eq__(self, other):
    return other and self._feature == other._feature

core.registerTypeMapping(_Feature, Feature, lambda x: Feature(f=x))
core.registerTypeUnmapping(Feature, _Feature, lambda x: x._feature)
Пример #4
0
  >>> p2.round()
  POINT (1071693 554290)

  .. seealso:: 

     :func:`Projection.transform`
  """
  
  return Projection(src).transform(obj, dst)

def projections():
  """
  Iterator over all defined projections::

    for p in proj.projections():
       ..

  This function returns :class:`Projection` objects.

  """
  for code in crs.getSupportedCodes('epsg'):
     try:
       yield Projection('epsg:%s' % code)
     except:
       # todo: log this
       pass

core.registerTypeMapping(CRS, Projection)
core.registerTypeUnmapping(Projection, CRS, lambda x: x._crs)

Пример #5
0
    Reads n features into a `list`. If less than n features are available the resulting list will have a size less than n.

    *n* is the number of features to read.
    """
    features = [] 
    for i in range(n):
      try:
        features.append(self.next())
      except StopIteration:
        break

    return features

  def close(self):
    """
    Closes the cursor. This function should *always* be called by client code after the cursor is no longer needed or has been exhausted.
    """
    if self._reader:
      self._reader.close()

  def __iter__(self):
    return self

def toCollection(c):
  if c.layer is not None:
     return PyFeatureCollection(c, c.layer.schema._type)
  return PyFeatureCollection(c)

core.registerTypeUnmapping(Cursor, FeatureCollection, toCollection)
core.registerTypeUnmapping(Cursor, SimpleFeatureCollection, toCollection)
Пример #6
0
       self.get(key) 

       #todo: drop the existing schema and create a new one
       raise Exception('%s already exists' % key) 
     except KeyError:
       if isinstance(val, list):
         self.create(key, fields=val)
       elif isinstance(val, feature.Schema):
         self.create(key, schema=val)
       else: 
         self.add(val)

  def __iter__(self):
    return self.layers().__iter__()

  def iterkeys(self):
    return self.__iter__()

  def iteritems(self):
    for l in self.layers():
       yield (l, self.get(l)) 

  def keys(self):
    return self.layers()

  def values(self):
    return [v for k,v in self.iteritems()]

core.registerTypeMapping(DataStore, Workspace, lambda x: Workspace(ds=x))
core.registerTypeUnmapping(Workspace, DataStore, lambda x: x._store)
Пример #7
0
        return self.schema.__iter__()

    def iterkeys(self):
        return self.__iter__()

    def iteritems(self):
        return self.attributes.iteritems()

    def keys(self):
        return [f.name for f in self.schema.fields]

    def values(self):
        return [core.map(val) for val in self._feature.getAttributes()]

    def __repr__(self):
        atts = [
            '%s: %s' % (fld.name, self.get(fld.name))
            for fld in self.schema.fields
        ]

        id = self.id if self.id.startswith(
            self.schema.name) else '%s.%s' % (self.schema.name, self.id)
        return '%s {%s}' % (id, string.join(atts, ', '))

    def __eq__(self, other):
        return other and self._feature == other._feature


core.registerTypeMapping(_Feature, Feature, lambda x: Feature(f=x))
core.registerTypeUnmapping(Feature, _Feature, lambda x: x._feature)
Пример #8
0
        e = Encoder(WFSConfiguration())
        uri = self._source.name.namespaceURI
        prefix = 'gt'
        e.namespaces.declarePrefix(prefix, uri)
        e.indenting = True
        e.encode(fc, WFS.FeatureCollection, out)

    def toJSON(self, out=sys.stdout):
        try:
            from org.geotools.geojson import GeoJSONWriter
        except ImportError:
            raise Exception(
                'toJSON() not available, GeoJSON libraries not on classpath.')
        else:
            features = self._source.features
            w = GeoJSONWriter()
            w.write(features, out)

    @staticmethod
    def _newname():
        Layer._id += 1
        return 'layer_%d' % Layer._id


core.registerTypeMapping(FeatureSource, Layer, lambda x: Layer(source=x))
core.registerTypeMapping(FeatureCollection, Layer, lambda x: Layer(source=x))
core.registerTypeUnmapping(Layer, FeatureSource, lambda x: x._source)
core.registerTypeUnmapping(Layer, FeatureCollection,
                           lambda x: x._source.getFeatures())
Пример #9
0
    def __getitem__(self, key):
        return self.get(key)

    def __iter__(self):
        for f in self.fields:
            yield f.name

    def iterkeys(self):
        return self.__iter__()

    def iteritems(self):
        for f in self.fields:
            yield f.name, f

    def keys(self):
        return [f.name for f in self.fields]

    def values(self):
        return self.fields

    def __repr__(self):
        flds = ['%s' % str(fld) for fld in self.fields]
        return '%s [%s]' % (self.name, string.join(flds, ', '))

    def __eq__(self, other):
        return other and self._type == other._type


core.registerTypeMapping(FeatureType, Schema, lambda x: Schema(ft=x))
core.registerTypeUnmapping(Schema, FeatureType, lambda x: x._type)
Пример #10
0
    def __invert__(self):
        pass

    def _op(self, name, **params):
        op = CoverageProcessor.getInstance().getOperation(name)
        p = op.getParameters()
        for k, v in params.iteritems():
            p.parameter(k).setValue(v)

        return op.doOperation(p, None)


core.registerTypeMapping(GridCoverage2D, Raster,
                         lambda x: Raster(None, coverage=x))
core.registerTypeUnmapping(Raster, GridCoverage2D, lambda x: x._coverage)


class Histogram(object):
    def __init__(self, histo):
        self._histo = histo

    def bin(self, i, band=0):
        h = self._histo
        if i < h.getNumBins(band):
            return (h.getBinLowValue(band, i), h.getBinLowValue(band, i + 1))

    def bins(self, band=0):
        return [self.bin(i, band) for i in range(len(self))]

    def count(self, i, band=0):
Пример #11
0
    result = self._op('Invert', Source=self._coverage)
    return Raster(self._format, coverage=result, reader=self._reader)
    
  def __invert__(self):
    pass

  def _op(self, name, **params):
    op = CoverageProcessor.getInstance().getOperation(name)
    p = op.getParameters()
    for k,v in params.iteritems():
      p.parameter(k).setValue(v)

    return op.doOperation(p, None)

core.registerTypeMapping(GridCoverage2D, Raster, lambda x: Raster(None, coverage=x))
core.registerTypeUnmapping(Raster, GridCoverage2D, lambda x: x._coverage)

class Histogram(object):

  def __init__(self, histo):
    self._histo = histo

  def bin(self, i, band=0):
    h = self._histo
    if i < h.getNumBins(band):
      return (h.getBinLowValue(band, i), h.getBinLowValue(band, i+1))

  def bins(self, band=0):
    return [self.bin(i, band) for i in range(len(self))]

  def count(self, i, band=0):
Пример #12
0
  POINT (1071693 554290)

  .. seealso:: 

     :func:`Projection.transform`
  """

    return Projection(src).transform(obj, dst)


def projections():
    """
  Iterator over all defined projections::

    for p in proj.projections():
       ..

  This function returns :class:`Projection` objects.

  """
    for code in crs.getSupportedCodes('epsg'):
        try:
            yield Projection('epsg:%s' % code)
        except:
            # todo: log this
            pass


core.registerTypeMapping(CRS, Projection)
core.registerTypeUnmapping(Projection, CRS, lambda x: x._crs)
Пример #13
0
      raise Exception('toGML() not available, GML libraries not on classpath.') 

    features = self._source.features
    fc = WfsFactory.eINSTANCE.createFeatureCollectionType()
    fc.feature.add(features)

    e = Encoder(WFSConfiguration())        
    uri = self._source.name.namespaceURI
    prefix = 'gt'
    e.namespaces.declarePrefix(prefix,uri)
    e.indenting = True
    e.encode(fc, WFS.FeatureCollection, out)

  def toJSON(self,out=sys.stdout):
    try:
      from org.geotools.geojson import GeoJSONWriter
    except ImportError:
      raise Exception('toJSON() not available, GeoJSON libraries not on classpath.')
    else:
      features = self._source.features
      w = GeoJSONWriter() 
      w.write(features,out)

  @staticmethod
  def _newname():
    Layer._id  += 1
    return 'layer_%d' % Layer._id

core.registerTypeMapping(FeatureSource, Layer, lambda x: Layer(fs=x))
core.registerTypeUnmapping(Layer, FeatureSource, lambda x: x._source)
Пример #14
0
  def __getitem__(self, key):
    return self.get(key)

  def __iter__(self):
    for f in self.fields:
      yield f.name

  def iterkeys(self):
    return self.__iter__()

  def iteritems(self):
    for f in self.fields:
      yield f.name, f

  def keys(self):
    return [f.name for f in self.fields] 

  def values(self):
    return self.fields

  def __repr__(self):
    flds = ['%s' % str(fld) for fld in self.fields]
    return '%s [%s]' % (self.name, string.join(flds,', '))

  def __eq__(self, other):
    return other and self._type == other._type

core.registerTypeMapping(FeatureType, Schema, lambda x: Schema(ft=x))
core.registerTypeUnmapping(Schema, FeatureType, lambda x: x._type)