Ejemplo n.º 1
0
    def cursor(self, filter=None, sort=None, hints=None):
        """
    Returns a :class:`Cursor <geoscript.layer.cursor.Cursor>` over the features of the layer.

    *filter* is a optional :class:`Filter <geoscript.filter.Filter>` to constrain the features iterated over.

    *sort* is an optional tuple or ``list`` of tuples that defined the order in
    which features are iterated over. The first value of each tuple is the name
    of a field to sort on. The second value is one of the strings 'ASC' or 
    'DESC', representing ascending and decending sort order respectively. 

    >>> l = Layer()
    >>> from geoscript import geom
    >>> l.add([geom.Point(1,2)])
    >>> l.add([geom.Point(3,4)])
    >>> l.add([geom.Point(5,6)])
    >>> l.add([geom.Point(7,8)])
    >>> l.add([geom.Point(9,10)])
    >>> c = l.cursor()
    >>> f = c.next() 
    >>> f.geom
    POINT (1 2)
    >>> f = c.next() 
    >>> f.geom
    POINT (3 4)
    >>> features = c.read(2)
    >>> len(features)
    2
    >>> features[0].geom
    POINT (5 6)
    >>> features[1].geom
    POINT (7 8)
    >>> features = c.read(2)
    >>> len(features)
    1
    >>> features[0].geom
    POINT (9 10)
    >>> c.close()
    """

        f = Filter(filter) if filter else Filter.PASS
        q = DefaultQuery(self.name, f._filter)
        if sort:
            sort = sort if isinstance(sort, list) else [sort]
            sortBy = []
            ff = _filterFactory
            for s in sort:
                s = s if isinstance(s, tuple) else [s, 'ASC']
                sortBy.append(ff.sort(s[0], SortOrder.valueOf(s[1])))
                q.setSortBy(sortBy)
        if self.proj:
            q.coordinateSystem = self.proj._crs

        if hints is not None:
            q.setHints(Hints(hints))

        fcol = self._source.getFeatures(q)
        #r = self._source.dataStore.getFeatureReader(q,Transaction.AUTO_COMMIT)
        return Cursor(fcol, self)
Ejemplo n.º 2
0
    def __init__(self,
                 format,
                 file=None,
                 proj=None,
                 coverage=None,
                 reader=None,
                 mode='r'):
        self.file = file
        self._format = format
        self._coverage = coverage
        self._reader = reader
        self.mode = mode

        if mode == 'r':
            if not coverage:
                if not reader:
                    hints = Hints()
                    if proj:
                        proj = Projection(proj)
                        hints.put(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM,
                                  proj._crs)

                    self._reader = format.getReader(util.toFile(file), hints)
                self._coverage = self._reader.read(None)
Ejemplo n.º 3
0
import sys
from java.lang import System

try:
   import org.geotools
   from org.geotools.factory import Hints

   # by default the geotools referenceing Systemtem assumes yx or lat/lon 
   if not System.getProperty("org.geotools.referencing.forceXY"):
      System.setProperty("org.geotools.referencing.forceXY", "true")

   if Hints.getSystemDefault(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER):
      Hints.putSystemDefault(Hints.FORCE_AXIS_ORDER_HONORING, "http")

   # set the matching tolerance in the referencing model, this makes it easier
   # to match projection definitions that don't have epsg codes to an existing
   # code
   Hints.putSystemDefault(Hints.COMPARISON_TOLERANCE, 1e-9);

except ImportError:
   if not System.getProperty("geoscript.bootstrap"):
      print "Error: Could not find GeoTools libraries on classpath."
      sys.exit(1)

Ejemplo n.º 4
0
import sys
from java.lang import System

try:
    import org.geotools
    from org.geotools.factory import Hints

    # by default the geotools referenceing Systemtem assumes yx or lat/lon
    if not System.getProperty("org.geotools.referencing.forceXY"):
        System.setProperty("org.geotools.referencing.forceXY", "true")

    if Hints.getSystemDefault(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER):
        Hints.putSystemDefault(Hints.FORCE_AXIS_ORDER_HONORING, "http")

except ImportError:
    if not System.getProperty("geoscript.bootstrap"):
        print "Error: Could not find GeoTools libraries on classpath."
        sys.exit(1)