def get_cached_vrt(idaho_id, node, level): cache_key = vrt_cache_key(idaho_id, node, level) cache_path = os.path.join(IDAHO_CACHE_DIR, cache_key) try: d = os.path.dirname(cache_path) if not os.path.exists(d): mkdir_p(d) with open(cache_path) as f: f.read() return cache_path except IOError: raise NotFound("VRT template for key '{}' not found in cache".format(cache_key))
def put_cached_vrt(idaho_id, node, level, template): try: cache_key = vrt_cache_key(idaho_id, node, level) cache_path = os.path.join(IDAHO_CACHE_DIR, cache_key) d = os.path.dirname(cache_path) if not os.path.exists(d): mkdir_p(d) with open(cache_path, "w") as f: f.write(Template(template.decode('utf-8')).substitute(query="")) return cache_path except Exception as e: print("VRT could not be cached", e) pass
"BYTE": "Byte", "FLOAT": "Float32" } NODE_DATA_TYPES = { "MsSourceImage": "UInt16", "MsOrthoImage": "UInt16", "MsOrthoImage-pan": "UInt16", "Pansharpened": "UInt16", "IntegerImage": "UInt16", "IntegerImage-pan": "UInt16" } IDAHO_CACHE_DIR = os.environ.get("IDAHO_CACHE_DIR", "/tmp/idaho-cache") if not os.path.exists(IDAHO_CACHE_DIR): mkdir_p(IDAHO_CACHE_DIR) def generate_vrt_template(conn, ipe_id, node, level, num_bands=None): meta = get_ipe_metadata(conn, ipe_id, node=node) image_md = meta['image'] if num_bands is None: num_bands = image_md["numBands"] tfm = meta['georef'] tile_size_x = image_md['tileXSize'] tile_size_y = image_md['tileYSize'] vrt = ET.Element("VRTDataset", {"rasterXSize": str(image_md["imageWidth"]), "rasterYSize": str(image_md["imageHeight"])}) ET.SubElement(vrt, "SRS").text = tfm["spatialReferenceSystemCode"] ET.SubElement(vrt, "GeoTransform").text = ", ".join(map(str, [tfm["translateX"],