import system def odm_orthophoto(): """Run odm_orthophoto""" print "\n - running orthophoto generation - " + system.now() os.chdir(jobOptions["jobDir"]) try: os.mkdir(jobOptions["jobDir"] + "/odm_orthophoto") except: pass run("\"" + BIN_PATH + "/odm_orthophoto\" -inputFile " + jobOptions["jobDir"] + \ "-results/odm_texturing/odm_textured_model_geo.obj -logFile " + jobOptions["jobDir"] \ + "/odm_orthophoto/odm_orthophoto_log.txt -outputFile " + jobOptions["jobDir"] \ + "-results/odm_orthphoto.png -resolution 20.0 -outputCornerFile " + jobOptions["jobDir"] \ + "/odm_orthphoto_corners.txt") if "csString" not in jobOptions: parse_coordinate_system() geoTiffCreated = False if ("csString" in jobOptions and "utmEastOffset" in jobOptions and "utmNorthOffset" in jobOptions): ulx = uly = lrx = lry = 0.0 with open(jobOptions["jobDir"] + "/odm_orthphoto_corners.txt") as f: for lineNumber, line in enumerate(f): if lineNumber == 0: tokens = line.split(' ') if len(tokens) == 4: ulx = float(tokens[0]) + \ float(jobOptions["utmEastOffset"]) lry = float(tokens[1]) + \ float(jobOptions["utmNorthOffset"]) lrx = float(tokens[2]) + \ float(jobOptions["utmEastOffset"]) uly = float(tokens[3]) + \ float(jobOptions["utmNorthOffset"]) print(" Creating GeoTIFF...") sys.stdout.write(" ") run("gdal_translate -a_ullr " + str(ulx) + " " + str(uly) + " " + str(lrx) + " " + str(lry) + " -a_srs \"" + jobOptions["csString"] + "\" " + jobOptions["jobDir"] + "-results/odm_orthphoto.png " + jobOptions["jobDir"] + "-results/odm_orthphoto.tif") geoTiffCreated = True if not geoTiffCreated: print " Warning: No geo-referenced orthophoto created due to missing geo-referencing or corner coordinates."