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