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()
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()
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)
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)')
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
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):