Пример #1
0
 def load(self):
     query = Query(self._connection)
     query.SELECT('gid', self.name)
     query.SELECT('the_geom', self.name, 'AsText')
     query.SELECT(self._primary, self.name)
     for key, gen in self._fields:
         query.SELECT(key, self.name)
     whereList = []
     try:
         for entry in self._subset:
             item = self.name + '.' + self._primary + '=\'' + entry + '\''
             whereList.append(item)
             query.where = ' OR '.join(whereList)
     except TypeError:
         pass
     polyDict = PolygonDictionary()
     pairs = []
     for entry in query:
         d = []
         for key, gen in self._fields:
             d.append((gen, entry[key]))
         data = Dictionary()
         data.update(d)
         p = GeneralizedPolygon(enum.ABSTRACT, entry['gid'],
                                entry['the_geom'], data, self)
         polyKey = keygen(entry[self._primary])
         pairs.append((polyKey, p))
     polyDict.update(pairs)
     return polyDict
Пример #2
0
    def load(self):
        query = Query(self._connection)
        query.SELECT('gid', self.name)
        for key, value in self._fields:
            query.SELECT(key, self.name)
        query.FROM('%(geomSource)s')
        query.where = '%(geomSource)s.gid=%(id)s AND '
        query.where += 'ST_Contains(%(geomSource)s.the_geom, '
        query.where += self.name + '.the_geom)'

        spatialQuery = Query(self._connection)
        spatialQuery.SELECT('the_geom', self.name, 'AsText')
        for key, value in self._fields:
            spatialQuery.SELECT(key, self.name)

        pointList = GeneralizedPointList(enum.ABSTRACT, query, spatialQuery,
                                         self._fields, self)
        return pointList
Пример #3
0
class DatabasePolygonMap(PolygonMap):
    def __init__(self, mapSource, connection, subset):
        PolygonMap.__init__(self, mapSource, subset)
        self._connection = connection
        self._matchQuery = None

    def load(self):
        query = Query(self._connection)
        query.SELECT('gid', self.name)
        query.SELECT('the_geom', self.name, 'AsText')
        query.SELECT(self._primary, self.name)
        for key, gen in self._fields:
            query.SELECT(key, self.name)
        whereList = []
        try:
            for entry in self._subset:
                item = self.name + '.' + self._primary + '=\'' + entry + '\''
                whereList.append(item)
                query.where = ' OR '.join(whereList)
        except TypeError:
            pass
        polyDict = PolygonDictionary()
        pairs = []
        for entry in query:
            d = []
            for key, gen in self._fields:
                d.append((gen, entry[key]))
            data = Dictionary()
            data.update(d)
            p = GeneralizedPolygon(enum.ABSTRACT, entry['gid'],
                                   entry['the_geom'], data, self)
            polyKey = keygen(entry[self._primary])
            pairs.append((polyKey, p))
        polyDict.update(pairs)
        return polyDict

    def loadMatchingPolygonData(self, mapName, fieldID):
        if not self._matchQuery:
            self._matchQuery = Query(self._connection)
            self._matchQuery.FROM('%(mapName)s')
            for key, gen in self._fields:
                self._matchQuery.SELECT(key, self.name)
            self._matchQuery.where = '%(mapName)s.gid=%(fieldID)s AND ST_Equals'
            self._matchQuery.where += '(%(mapName)s.the_geom,' + self.name
            self._matchQuery.where += '.the_geom);'
            self._matchQuery.SELECT
        self._matchQuery.setVariable('mapName', mapName)
        self._matchQuery.setVariable('fieldID', fieldID)
        data = []
        for entry in self._matchQuery:
            for key, gen in self._fields:
                data.append((gen, entry[key]))
        return data