def tilemap(tif, name, overwrite=False, overlay=None,tilelvl=[9,13]):
id=hashlib.sha1(name).hexdigest()[:10]
if overwrite:
os.system('rm -rf %s'%id)
os.system('gdal2tiles.py -e -z %d-%d -a 0,0,0 -s epsg:4326 -r bilinear -t "%s" %s -z 8-14 %s'%(tilelvl[0], tilelvl[1], name,tif,id))
with open('%s/leaflet.html'%id) as input:
s=input.read()
s=s.replace('http://cdn.leafletjs.com','https://cdn.leafletjs.com')
s=s.replace('http://{s}.tile.osm.org','https://{s}.tile.openstreetmap.org')
addLayer='map.addLayer(lyr);'
if overlay:
os.system("wget 'https://raw.githubusercontent.com/calvinmetcalf/leaflet-ajax/master/dist/leaflet.ajax.min.js' -O %s/leaflet.ajax.min.js"%id)
s=s.replace('leaflet.js"></script>','leaflet.js"></script>\n<script src="leaflet.ajax.min.js"></script>')
vectorNewLayers = []
vectorOverlay = []
vectorAdd = []
for vecFile,vecName in overlay:
vecId=hashlib.sha1(vecName).hexdigest()[:10]
os.system('ogr2ogr -f "geojson" %s/%s.json %s'%(id,vecId,vecFile))
vectorNewLayers.append('var vecLayer%s = new L.GeoJSON.AJAX("%s.json");'%(vecId,vecId))
vectorOverlay.append('"%s":vecLayer%s'%(vecName, vecId))
vectorAdd.append('map.addLayer(vecLayer%s);'%vecId)
s=s.replace('// Map','\n'.join(vectorNewLayers)+'\n // Map')
s=s.replace('{"Layer": lyr}','{'+','.join(vectorOverlay)+', "Layer": lyr}')
addLayer+='\n'.join(vectorAdd)
s=s.replace(').addTo(map);',').addTo(map); '+addLayer)
with open('%s/leaflet.html'%id,'w') as output:
output.write(s)
return IFrame('%s/leaflet.html'%id, width='1000',height='600')
评论列表
文章目录