コード例 #1
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_hashid(self, fieldname, first, *ofields):

        setattr(
            self, fieldname,
            Field.Virtual(
                fieldname, lambda row: self._extra['encoder'].encode(
                    row[self._tablename][first],
                    *map(lambda ff: row[self._tablename][ff], ofields))))
コード例 #2
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_feature_co(self):
        self._set_hashid('hashid', 'src_id', 'id')
        self._set_feat_properties()
        self._set_geometry()

        if 'geom' in self.fields and self['geom'].type == 'geometry()':

            self.feature = Field.Virtual(
                'feature', lambda row: geojsonFeature(
                    geometry=row[self._tablename].feat_geometry,
                    properties=row[self._tablename].feat_properties,
                    id=row[self._tablename].hashid))
コード例 #3
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_feat_properties(self, **kwargs):
        def _props(row):
            properties = dict(
                row[self._tablename].properties or row[self._tablename].tags,
                id=row[self._tablename].hashid,
                # **{"_{}_".format(row[self._tablename].source_name): row[self._tablename].source_id}
            )
            properties.update({
                k: row[self._tablename][v] if not callable(v) else v(row[self._tablename])\
                    for k,v in kwargs.items()})
            return properties

        setattr(self, 'feat_properties',
                Field.Virtual('feat_properties', _props))
コード例 #4
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_feature_co(self):
        self._set_hashid('hashid', 'src_id', 'id')
        self._set_node_hashid('shashid', 'src_id', 'sinfo_id')
        self._set_node_hashid('thashid', 'src_id', 'tinfo_id')

        # self._set_alias("shid", 'shashid')
        # self._set_alias("thid", 'thashid')

        self._set_feat_properties(weight=lambda row: round(row.len, 3))
        if 'geom' in self.fields and self['geom'].type == 'geometry()':

            self.feature = Field.Virtual(
                'feature', lambda row: geojson.Feature(
                    geometry=wkt.loads(row[self._tablename].geom),
                    properties=row[self._tablename].feat_properties,
                    id=row[self._tablename].hashid))
コード例 #5
0
ファイル: models.py プロジェクト: manuelep/planetstore
        'modified_on',
        'datetime',
        # required = True, # notnull=True,
        update=now,
        default=now,
        # compute = lambda _=None: now(),
        writable=False,
        readable=True),
    Field("is_active", "boolean", default=True, readable=False,
          writable=False),
    # Field('task_id', "reference scheduler_task", notnull=True, requires=None),
    Field.Virtual(
        'feature',
        lambda row: mc.feature(mc.quadkey_to_tile(
            mc.quadkey(row.tracked_tile.xtile, row.tracked_tile.ytile, row.
                       tracked_tile.zoom)),
                               fid=row.tracked_tile.uri,
                               props={
                                   'created': row.tracked_tile.created_on,
                                   'updated': row.tracked_tile.modified_on
                               })),
    # Field.Virtual('last_update', lambda row: get_last_update(row.tile.uri))
)

db.define_table("queued_tile",
                Field("tile_id", "reference tracked_tile", unique=True))


def track_tiles(lon, lat, maxdist, buffer=4):
    """ """

    tiles = list(boxtiles(maxdist, lon, lat, buffer=buffer))
コード例 #6
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_geometry(self):

        if 'geom' in self.fields and self['geom'].type == 'geometry()':
            self.feat_geometry = Field.Virtual(
                'feat_geometry',
                lambda row: wkt.loads(row[self._tablename].geom))
コード例 #7
0
ファイル: tools.py プロジェクト: manuelep/planetclient
    def _set_alias(self, alias, fieldname):
        """ Sets an alias for the given field value """

        setattr(
            self, alias,
            Field.Virtual(alias, lambda row: row[self._tablename][fieldname]))