def __init__(self, filepath, close_zip, **builder_args):
        builder_args['tile_format'] = self.format_from_url(builder_args['tiles_url'])
        self.close_zip = close_zip
        self.zipfile = ZipFile(filepath, 'w')
        self.tm = TilesManager(**builder_args)

        if not isinstance(settings.MOBILE_TILES_URL, str) and len(settings.MOBILE_TILES_URL) > 1:
            for url in settings.MOBILE_TILES_URL[1:]:
                args = builder_args
                args['tiles_url'] = url
                args['tile_format'] = self.format_from_url(args['tiles_url'])
                self.tm.add_layer(TilesManager(**args), opacity=1)

        self.tiles = set()
    def __init__(self, zipfile, prefix="", **builder_args):
        self.zipfile = zipfile
        self.prefix = prefix
        builder_args['tile_format'] = self.format_from_url(builder_args['tiles_url'])
        self.tm = TilesManager(**builder_args)

        if not isinstance(settings.MOBILE_TILES_URL, str) and len(settings.MOBILE_TILES_URL) > 1:
            for url in settings.MOBILE_TILES_URL[1:]:
                args = builder_args
                args['tiles_url'] = url
                args['tile_format'] = self.format_from_url(args['tiles_url'])
                self.tm.add_layer(TilesManager(**args), opacity=1)

        self.tiles = set()
Example #3
0
 def __init__(self, filepath, close_zip, **builder_args):
     builder_args['tile_format'] = self.format_from_url(
         builder_args['tiles_url'])
     self.close_zip = close_zip
     self.zipfile = ZipFile(filepath, 'w')
     self.tm = TilesManager(**builder_args)
     self.tiles = set()
def create_tiles_manager(parameters):
    tm_args = { }
    tm_args['cache'] = True
    if parameters.mbtiles_file:
        tm_args['mbtiles_file'] = parameters.mbtiles_file
    if parameters.wmts_url:
        tm_args['tiles_url'] = parameters.wmts_url
        tm_args['tiles_headers'] = { }
        tm_args['tiles_headers']['User-Agent'] = 'hikingmap/render_tiles'
        tm_args['tiles_headers']['Accept'] = 'image/png,image/*;q=0.9,*/*;q=0.8'
    if parameters.wmts_subdomains:
        tm_args['tiles_subdomains'] = parameters.wmts_subdomains
    if parameters.mapnik_stylefile:
        tm_args['stylefile'] = parameters.mapnik_stylefile
    if parameters.cache_dir:
        tm_args['tiles_dir'] = parameters.cache_dir
    if parameters.tile_size:
        tm_args['tile_size'] = parameters.tile_size
    if parameters.tile_format:
        tm_args['tile_format'] = parameters.tile_format
    if parameters.tile_scheme:
        tm_args['tile_scheme'] = parameters.tile_scheme
    
    tm = TilesManager(**tm_args)
    
    return tm
 def __init__(self, filepath, **builder_args):
     self.zipfile = ZipFile(filepath, 'w')
     self.tm = TilesManager(**builder_args)
     self.tiles = set()
Example #6
0
import os
from landez import MBTilesBuilder, TilesManager

# From a TMS tile server
tm = TilesManager(
    tiles_url="http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
    tiles_headers={
        'User-Agent':
        'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'
    })

tiles = tm.tileslist(bbox=(-5.225440815122283, 50.0443122338314,
                           -5.171796634824432, 50.06410175820282),
                     zoomlevels=[
                         0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
                         16, 17, 18, 19
                     ])


def build_dir(file_path):
    directory = os.path.dirname(file_path)
    if not os.path.exists(directory):
        os.makedirs(directory)


for tile in tiles:
    print(tile)
    tilecontent = tm.tile(tile)  # download, extract or take from cache
    path = str(tile[0]) + "/" + str(tile[1]) + "/"
    if not os.path.exists(path):
        os.makedirs(path)
Example #7
0
def main(args):
    try:
        shapefile = args[1]
        driver = ogr.GetDriverByName("ESRI Shapefile")
        dataSource = driver.Open(shapefile, 0)
        layer = dataSource.GetLayer()
        totalImages = layer.GetFeatureCount()
        print str(totalImages) + " Total Images"
    except IndexError:
        usage()
        return False

    tile_size = 256
    zoomlevels = [20]
    tms_scheme = False
    srs = osr.SpatialReference()
    srs.SetWellKnownGeogCS("WGS84")
    g = 0
    for feature in layer:
        the_ID = feature.GetField("id")
        the_name = feature.GetField("Name")
        the_geom = feature.GetGeometryRef()
        the_env = the_geom.GetEnvelope()
        ULLon = the_env[0]
        ULLat = the_env[3]
        LRLon = the_env[1]
        LRLat = the_env[2]
        id = str(g)
        print id + " " + str(g + 1) + " of " + str(totalImages)
        tm = TilesManager(
            tiles_dir="/tmp",
            tiles_url=
            "https://tile-live.appspot.com/getTile/?z={z}&x={x}&y={y}&layer=derivative&redirect=false"
        )
        tiles = tm.tileslist(bbox=(ULLon, LRLat, LRLon, ULLat),
                             zoomlevels=zoomlevels)
        x = 0
        y = 0
        z = 0
        for the_tile in tiles:
            tilecontent = tm.tile(the_tile)
            fileType = magic.from_buffer(tilecontent, mime=True)
            fileRoot = id + "-" + str(x)
            projection = proj.GoogleProjection(tile_size, zoomlevels,
                                               tms_scheme)
            tileBBOX = projection.tile_bbox(the_tile)
            im = Image.open(StringIO.StringIO(tilecontent))
            fileName = fileRoot + ".tiff"
            print fileName + str(tileBBOX)
            im.save(fileName)
            im.close()
            try:
                ds = gdal.Open(fileName, GA_Update)
                gt = CalcGeoTransform(tileBBOX, fileName)
                ds.SetGeoTransform(gt)
                ds.SetProjection(srs.ExportToWkt())
                if ds.RasterCount == 3:
                    drv = gdal.GetDriverByName('VRT')
                    newDS = drv.CreateCopy(fileRoot + '.vrt', ds, 0)
                    newDS.AddBand(gdal.GDT_Byte)
                    newDS.GetRasterBand(4).SetColorInterpretation(
                        GCI_AlphaBand)
                    drv2 = gdal.GetDriverByName('GTiff')
                    outDS = drv2.CreateCopy(fileRoot + '-4.tiff', newDS, 0)
                    outDS.GetRasterBand(4).Fill(255)
                    newDS = None
                    outDS = None
                    os.system('rm ' + fileName)
                    os.system('rm ' + fileRoot + '.vrt')
                    os.system('mv ' + fileRoot + '-4.tiff ' + fileName)
                ds = None

                # warpString = 'gdalwarp ' + fileName + ' clipped-' + fileRoot + '.tiff' + ' -cutline AOIs.shp -cwhere "id = \'' + str(the_ID) + '\'"'
                # print warpString
                os.system('gdalwarp ' + fileName + ' clipped-' + fileRoot +
                          '.tiff' + ' -cutline AOIs.shp -cwhere "id = \'' +
                          str(the_ID) + '\'"')
                os.system('rm ' + fileName)
                os.system('mv clipped-' + fileRoot + '.tiff ' + fileName)
            except RuntimeError as ex:
                raise IOError(ex)
                print "Weird one"
            x += 1
            y += 1
            if y == 1000:
                mosaicName = "mosaic" + str(z) + ".vrt"
                if z == 0:
                    os.system('gdalbuildvrt ' + mosaicName + ' *.tiff')
                else:
                    mosaicList = id + '-' + str(z) + '[0-9][0-9][0-9].tiff'
                    os.system('gdalbuildvrt ' + mosaicName + ' ' + mosaicList)
                y = 0
                z += 1
        if z > 0:
            os.system('gdalbuildvrt rest.vrt ' + id + '-' + str(z) +
                      '[0-9][0-9][0-9].tiff')
            os.system('gdalbuildvrt mosaic.vrt *.vrt')
            os.system('gdal_translate -of GTiff -projwin ' + str(ULLon) + " " +
                      str(ULLat) + " " + str(LRLon) + " " + str(LRLat) +
                      ' mosaic.vrt ' + id + ".tiff")
            os.system('rm *.aux.xml && rm *.png && rm *.vrt')
            z = 0
        else:
            os.system('gdalbuildvrt mosaic.vrt ' + id + '-*.tiff')
            os.system('gdal_translate -of GTiff -projwin ' + str(ULLon) + " " +
                      str(ULLat) + " " + str(LRLon) + " " + str(LRLat) +
                      ' mosaic.vrt ' + id + ".tiff")
            os.system('rm ' + id + '-*.tiff && rm *.vrt')

        g += 1
    os.system('ls *.tiff > filelist')
    os.system('tar -zcvf GoogleImages.tar.gz $(cat filelist)')
Example #8
0
def main(args):
    try:
        shapefile = args[1]
        driver = ogr.GetDriverByName("ESRI Shapefile")
        dataSource = driver.Open(shapefile, 0)
        layer = dataSource.GetLayer()
        totalImages = layer.GetFeatureCount()
        print str(totalImages) + " Total Features"
    except IndexError:
        usage()
        return False
    tile_size = 256
    zoomlevels = [
        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
        20
    ]
    tms_scheme = False
    srs = osr.SpatialReference()
    srs.SetWellKnownGeogCS("WGS84")
    g = 0
    with open(args[2], 'w') as csvfile:
        fieldnames = ['z', 'x', 'y', 'v']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        for feature in layer:
            the_geom = feature.GetGeometryRef()
            the_env = the_geom.GetEnvelope()
            ULLon = the_env[0]
            ULLat = the_env[3]
            LRLon = the_env[1]
            LRLat = the_env[2]
            id = str(g)
            print "Working on %s of %s Features" % (str(g + 1),
                                                    str(totalImages))
            tm = TilesManager(tiles_dir="/tmp",
                              tiles_url="http://{z}/{x}/{y}",
                              cache=False)
            tiles = tm.tileslist(bbox=(ULLon, LRLat, LRLon, ULLat),
                                 zoomlevels=zoomlevels)
            for the_tile in tiles:
                print the_tile[0]
                # tilecontent = tm.tile(the_tile)
                projection = proj.GoogleProjection(tile_size, zoomlevels,
                                                   tms_scheme)
                tileBBOX = projection.tile_bbox(the_tile)
                neLon = tileBBOX[2]
                neLat = tileBBOX[3]
                swLat = tileBBOX[1]
                swLon = tileBBOX[0]
                bboxWKT = "POLYGON ((%s %s, %s %s, %s %s, %s %s, %s %s))" % (
                    neLon, neLat, neLon, swLat, swLon, swLat, swLon, neLat,
                    neLon, neLat)
                bboxPoly = ogr.CreateGeometryFromWkt(bboxWKT)
                intersection = bboxPoly.Intersection(the_geom)
                if intersection.IsEmpty() == False:
                    writer.writerow({
                        'z': the_tile[0],
                        'x': the_tile[1],
                        'y': the_tile[2],
                        'v': '1'
                    })
                    #print "%s,%s,%s,1" % (the_tile[0],the_tile[1],the_tile[2])
            g += 1
Example #9
0
import os
from landez import MBTilesBuilder, TilesManager

# From a TMS tile server
#tm = TilesManager(tiles_url="http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
#                  tiles_headers={'User-Agent': 'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'})

tm = TilesManager(tiles_url="https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}.jpg",
                  tiles_headers={'User-Agent': 'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'})

# trevassack
#tiles = tm.tileslist(bbox=(-5.225440815122283,50.0443122338314, 
#                           -5.171796634824432,50.06410175820282),
#                     zoomlevels=[14,15,16,17,18,19])

# falmouth
tiles = tm.tileslist(bbox=(-5.162955831669365,50.134767490127274,
                            -4.96932179846624, 50.197268922759214),
                     zoomlevels=[18,19])


def build_dir(file_path):
    directory = os.path.dirname(file_path)
    if not os.path.exists(directory):
        os.makedirs(directory)

for tile in tiles:
    print(tile)
    path=str(tile[0])+"/"+str(tile[1])+"/"
    filename=str(tile[2])+".jpg"
    if not os.path.exists(path+filename):