Ejemplo n.º 1
0
    def testTerrainMetadataAllTiles(self):
        minZoom = 1
        maxZoom = 2
        tMeta = TerrainMetadata(minzoom=minZoom, maxzoom=maxZoom)

        self.assertTrue(tMeta.metadata[minZoom]['x'][0] == 0)
        self.assertTrue(tMeta.metadata[minZoom]['x'][1] == 3)
        self.assertTrue(tMeta.metadata[minZoom]['y'][0] == 0)
        self.assertTrue(tMeta.metadata[minZoom]['y'][1] == 1)

        self.assertTrue(tMeta.metadata[maxZoom]['x'][0] == 0)
        self.assertTrue(tMeta.metadata[maxZoom]['x'][1] == 7)
        self.assertTrue(tMeta.metadata[maxZoom]['y'][0] == 0)
        self.assertTrue(tMeta.metadata[maxZoom]['y'][1] == 3)

        self.assertTrue(len(tMeta.available) == 2)

        # Assume all tiles are here
        # from metadata to meta
        tMeta.toJSON()
        self.assertTrue(len(tMeta.meta['available'][0]) == 0)
        self.assertTrue(len(tMeta.meta['available'][1]) == 1)
        self.assertTrue(len(tMeta.meta['available'][2]) == 1)

        self.assertTrue(tMeta.meta['available'][1][0]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][1][0]['endX'] == 3)
        self.assertTrue(tMeta.meta['available'][1][0]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][1][0]['endY'] == 1)

        self.assertTrue(tMeta.meta['available'][2][0]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][2][0]['endX'] == 7)
        self.assertTrue(tMeta.meta['available'][2][0]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][2][0]['endY'] == 3)
Ejemplo n.º 2
0
    def testTerrainMetadataInit(self):
        minZoom = 1
        maxZoom = 1
        tMeta = TerrainMetadata(minzoom=minZoom, maxzoom=maxZoom)

        self.assertTrue(tMeta.metadata[minZoom]['x'][0] == 0)
        self.assertTrue(tMeta.metadata[minZoom]['x'][1] == 3)
        self.assertTrue(tMeta.metadata[minZoom]['y'][0] == 0)
        self.assertTrue(tMeta.metadata[minZoom]['y'][1] == 1)

        self.assertTrue(len(tMeta.available) == 1)
Ejemplo n.º 3
0
    def metadata(self):
        t0 = time.time()
        basePath = self.tmsConfig.get('General', 'bucketpath')
        baseUrls = []
        url = 'https://terrain.dev.bgdi.ch'
        url += '/%s{z}/{x}/{y}.terrain?v={version}' % basePath
        baseUrls.append(url)
        # TODO
        #for i in range(0, 5):
        #    url = 'https://terrain10%s.geo.admin.ch' % i
        #    url = 'https://terrain10%s.geo.admin.ch' % i
        #    url += '/%s{z}/{x}/{y}.terrain?v={version}' % basePath
        #    baseUrls.append(url)

        db = DB('configs/terrain/database.cfg')
        tiles = TerrainTiles(self.dbConfigFile, self.tmsConfig, t0)
        tMeta = TerrainMetadata(
            bounds=tiles.bounds,
            minzoom=tiles.tileMinZ,
            maxzoom=tiles.tileMaxZ,
            useGlobalTiles=True,
            hasLighting=tiles.hasLighting,
            hasWatermask=tiles.hasWatermask,
            baseUrls=baseUrls)

        try:
            with db.userSession() as session:
                tilecount = 1
                for tile in tiles:
                    tMeta = scanTerrain(tMeta, tile, session, tilecount)
                    tilecount += 1

                tend = time.time()
                logger.info('It took %s to scan %s tiles' % (
                    str(datetime.timedelta(seconds=tend - t0)), tilecount))
        except Exception as e:
            logger.error('An error occured during layer.json creation')
            logger.error('%s' % e, exc_info=True)
            raise Exception(e)
        finally:
            db.userEngine.dispose()

        with open('.tmp/layer.json', 'w') as f:
            f.write(tMeta.toJSON())
Ejemplo n.º 4
0
    def metadata(self):
        t0 = time.time()
        serverAddress = self.tmsConfig.get('General', 'serveraddress')
        basePath = self.tmsConfig.get('General', 'bucketpath')
        baseUrls = [
            serverAddress + basePath + "{z}/{x}/{y}.terrain?v={version}"
        ]

        db = DB('configs/terrain/database.cfg')
        tiles = TerrainTiles(self.dbConfigFile, self.tmsConfig, t0)
        tMeta = TerrainMetadata(bounds=tiles.bounds,
                                minzoom=tiles.tileMinZ,
                                maxzoom=tiles.tileMaxZ,
                                useGlobalTiles=True,
                                hasLighting=tiles.hasLighting,
                                hasWatermask=tiles.hasWatermask,
                                baseUrls=baseUrls)

        try:
            with db.userSession() as session:
                tilecount = 1
                for tile in tiles:
                    tMeta = scanTerrain(tMeta, tile, session, tilecount)
                    tilecount += 1

                tend = time.time()
                logger.info(
                    'It took %s to scan %s tiles' %
                    (str(datetime.timedelta(seconds=tend - t0)), tilecount))
        except Exception as e:
            logger.error('An error occured during layer.json creation')
            logger.error('%s' % e, exc_info=True)
            raise Exception(e)
        finally:
            db.userEngine.dispose()

        with open('.tmp/layer.json', 'w') as f:
            f.write(tMeta.toJSON())
Ejemplo n.º 5
0
    def testTerrainMetadataSubset(self):
        minZoom = 1
        maxZoom = 2
        tMeta = TerrainMetadata(minzoom=minZoom, maxzoom=maxZoom)
        matrices = {minZoom: matrix_1, maxZoom: matrix_2}

        for z in range(minZoom, maxZoom + 1):
            minX = tMeta.metadata[z]['x'][0]
            maxX = tMeta.metadata[z]['x'][1]
            minY = tMeta.metadata[z]['y'][0]
            maxY = tMeta.metadata[z]['y'][1]

            # tile 0,0 == matrix maxX, 0
            for x in range(minX, maxX + 1):
                for y in range(minY, maxY + 1):
                    localX = x - minX
                    localY = (y - maxY) * -1
                    matrix = matrices[z]
                    # y and x inverted in local matrix
                    if matrix[localY][localX] == 0:
                        tMeta.removeTile(x, y, z)

        tMeta.toJSON()

        # Zoom 0 (empty ranges if not define)
        self.assertTrue(len(tMeta.meta['available'][0]) == 0)

        # Zoom 1
        self.assertTrue(tMeta.meta['available'][1][0]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][1][0]['endX'] == 1)
        self.assertTrue(tMeta.meta['available'][1][0]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][1][0]['endY'] == 0)

        self.assertTrue(tMeta.meta['available'][1][1]['startX'] == 3)
        self.assertTrue(tMeta.meta['available'][1][1]['endX'] == 3)
        self.assertTrue(tMeta.meta['available'][1][1]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][1][1]['endY'] == 0)

        self.assertTrue(tMeta.meta['available'][1][2]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][1][2]['endX'] == 0)
        self.assertTrue(tMeta.meta['available'][1][2]['startY'] == 1)
        self.assertTrue(tMeta.meta['available'][1][2]['endY'] == 1)

        self.assertTrue(tMeta.meta['available'][1][3]['startX'] == 2)
        self.assertTrue(tMeta.meta['available'][1][3]['endX'] == 3)
        self.assertTrue(tMeta.meta['available'][1][3]['startY'] == 1)
        self.assertTrue(tMeta.meta['available'][1][3]['endY'] == 1)

        # Zoom 2
        self.assertTrue(tMeta.meta['available'][2][0]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][2][0]['endX'] == 3)
        self.assertTrue(tMeta.meta['available'][2][0]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][2][0]['endY'] == 1)

        self.assertTrue(tMeta.meta['available'][2][1]['startX'] == 5)
        self.assertTrue(tMeta.meta['available'][2][1]['endX'] == 7)
        self.assertTrue(tMeta.meta['available'][2][1]['startY'] == 0)
        self.assertTrue(tMeta.meta['available'][2][1]['endY'] == 1)

        self.assertTrue(tMeta.meta['available'][2][2]['startX'] == 4)
        self.assertTrue(tMeta.meta['available'][2][2]['endX'] == 7)
        self.assertTrue(tMeta.meta['available'][2][2]['startY'] == 2)
        self.assertTrue(tMeta.meta['available'][2][2]['endY'] == 2)

        self.assertTrue(tMeta.meta['available'][2][3]['startX'] == 0)
        self.assertTrue(tMeta.meta['available'][2][3]['endX'] == 7)
        self.assertTrue(tMeta.meta['available'][2][3]['startY'] == 3)
        self.assertTrue(tMeta.meta['available'][2][3]['endY'] == 3)