def upload(self, file_path, filename_list): #https://stackoverflow.com/questions/45071567/how-to-send-custom-header-metadata-with-python-grpc for each_file in filename_list: chunks_generator = get_file_chunks( io.join_paths(file_path, filename_list)) response, call = self.stub.upload.with_call( chunks_generator, metadata=(('node-id', self.nodeid), ('filename', each_file))) # else: # images = glob.glob(in_file_name_or_file_path) # #print(images) # for each in images: # chunks_generator = get_file_chunks(each) # filename = each.split('/')[-1] # response, call = self.stub.upload.with_call(chunks_generator, metadata=(('node-id', self.nodeid),('filename', filename))) #print(response.length) # to do loop through the files #assert response.length == os.path.getsize(in_file_name_or_file_path) return response
def __init__(self, root_path, images_path, gcp_file = None): # root path to the project self.root_path = io.absolute_path_file(root_path) if not images_path: self.input_images = io.join_paths(self.root_path, 'images') else: self.input_images = io.absolute_path_file(images_path) # modules paths # here are defined where all modules should be located in # order to keep track all files al directories during the # whole reconstruction process. self.dataset_raw = io.join_paths(self.root_path, 'images') self.opensfm = io.join_paths(self.root_path, 'opensfm') self.mve = io.join_paths(self.root_path, 'mve') self.odm_meshing = io.join_paths(self.root_path, 'odm_meshing') self.odm_texturing = io.join_paths(self.root_path, 'odm_texturing') self.odm_25dtexturing = io.join_paths(self.root_path, 'odm_texturing_25d') self.odm_georeferencing = io.join_paths(self.root_path, 'odm_georeferencing') self.odm_25dgeoreferencing = io.join_paths(self.root_path, 'odm_25dgeoreferencing') self.odm_filterpoints = io.join_paths(self.root_path, 'odm_filterpoints') self.odm_orthophoto = io.join_paths(self.root_path, 'odm_orthophoto') # important files paths # benchmarking self.benchmarking = io.join_paths(self.root_path, 'benchmark.txt') self.dataset_list = io.join_paths(self.root_path, 'img_list.txt') # opensfm self.opensfm_tracks = io.join_paths(self.opensfm, 'tracks.csv') self.opensfm_bundle = io.join_paths(self.opensfm, 'bundle_r000.out') self.opensfm_bundle_list = io.join_paths(self.opensfm, 'list_r000.out') self.opensfm_image_list = io.join_paths(self.opensfm, 'image_list.txt') self.opensfm_reconstruction = io.join_paths(self.opensfm, 'reconstruction.json') self.opensfm_reconstruction_nvm = io.join_paths(self.opensfm, 'reconstruction.nvm') self.opensfm_model = io.join_paths(self.opensfm, 'depthmaps/merged.ply') self.opensfm_transformation = io.join_paths(self.opensfm, 'geocoords_transformation.txt') # mve self.mve_model = io.join_paths(self.mve, 'mve_dense_point_cloud.ply') self.mve_path = io.join_paths(self.opensfm, 'mve') self.mve_image_list = io.join_paths(self.mve_path, 'list.txt') self.mve_bundle = io.join_paths(self.mve_path, 'bundle/bundle.out') self.mve_views = io.join_paths(self.mve, 'views') # filter points self.filtered_point_cloud = io.join_paths(self.odm_filterpoints, "point_cloud.ply") # odm_meshing self.odm_mesh = io.join_paths(self.odm_meshing, 'odm_mesh.ply') self.odm_meshing_log = io.join_paths(self.odm_meshing, 'odm_meshing_log.txt') self.odm_25dmesh = io.join_paths(self.odm_meshing, 'odm_25dmesh.ply') self.odm_25dmeshing_log = io.join_paths(self.odm_meshing, 'odm_25dmeshing_log.txt') # texturing self.odm_texturing_undistorted_image_path = io.join_paths( self.odm_texturing, 'undistorted') self.odm_textured_model_obj = 'odm_textured_model.obj' self.odm_textured_model_mtl = 'odm_textured_model.mtl' # Log is only used by old odm_texturing self.odm_texuring_log = 'odm_texturing_log.txt' # odm_georeferencing self.odm_georeferencing_latlon = io.join_paths( self.odm_georeferencing, 'latlon.txt') self.odm_georeferencing_coords = io.join_paths( self.odm_georeferencing, 'coords.txt') self.odm_georeferencing_gcp = gcp_file or io.find('gcp_list.txt', self.root_path) self.odm_georeferencing_utm_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_utm_log.txt') self.odm_georeferencing_log = 'odm_georeferencing_log.txt' self.odm_georeferencing_transform_file = 'odm_georeferencing_transform.txt' self.odm_georeferencing_proj = 'proj.txt' self.odm_georeferencing_model_txt_geo = 'odm_georeferencing_model_geo.txt' self.odm_georeferencing_model_obj_geo = 'odm_textured_model_geo.obj' self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') self.odm_georeferencing_las_json = io.join_paths( self.odm_georeferencing, 'las.json') self.odm_georeferencing_model_laz = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.laz') self.odm_georeferencing_model_las = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.las') self.odm_georeferencing_dem = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_model_dem.tif') # odm_orthophoto self.odm_orthophoto_file = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.png') self.odm_orthophoto_tif = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.tif') self.odm_orthophoto_corners = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_corners.txt') self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt') self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt') # Split-merge self.submodels_path = io.join_paths(self.root_path, 'submodels') # Tiles self.entwine_pointcloud = self.path("entwine_pointcloud")
def __init__(self, root_path, images_path): # root path to the project self.root_path = io.absolute_path_file(root_path) if not images_path: self.input_images = io.join_paths(self.root_path, 'images') else: self.input_images = io.absolute_path_file(images_path) # modules paths # here are defined where all modules should be located in # order to keep track all files al directories during the # whole reconstruction process. self.dataset_raw = io.join_paths(self.root_path, 'images') self.dataset_resize = io.join_paths(self.root_path, 'images_resize') self.opensfm = io.join_paths(self.root_path, 'opensfm') self.pmvs = io.join_paths(self.root_path, 'pmvs') self.odm_meshing = io.join_paths(self.root_path, 'odm_meshing') self.odm_texturing = io.join_paths(self.root_path, 'odm_texturing') self.odm_25dtexturing = io.join_paths(self.root_path, 'odm_texturing_25d') self.odm_georeferencing = io.join_paths(self.root_path, 'odm_georeferencing') self.odm_25dgeoreferencing = io.join_paths(self.root_path, 'odm_25dgeoreferencing') self.odm_orthophoto = io.join_paths(self.root_path, 'odm_orthophoto') self.odm_pdal = io.join_paths(self.root_path, 'pdal') # important files paths # benchmarking self.benchmarking = io.join_paths(self.root_path, 'benchmark.txt') # opensfm self.opensfm_tracks = io.join_paths(self.opensfm, 'tracks.csv') self.opensfm_bundle = io.join_paths(self.opensfm, 'bundle_r000.out') self.opensfm_bundle_list = io.join_paths(self.opensfm, 'list_r000.out') self.opensfm_image_list = io.join_paths(self.opensfm, 'image_list.txt') self.opensfm_reconstruction = io.join_paths(self.opensfm, 'reconstruction.json') self.opensfm_reconstruction_meshed = io.join_paths( self.opensfm, 'reconstruction.meshed.json') self.opensfm_reconstruction_nvm = io.join_paths( self.opensfm, 'reconstruction.nvm') self.opensfm_model = io.join_paths(self.opensfm, 'depthmaps/merged.ply') # pmvs self.pmvs_rec_path = io.join_paths(self.pmvs, 'recon0') self.pmvs_bundle = io.join_paths(self.pmvs_rec_path, 'bundle.rd.out') self.pmvs_visdat = io.join_paths(self.pmvs_rec_path, 'vis.dat') self.pmvs_options = io.join_paths(self.pmvs_rec_path, 'pmvs_options.txt') self.pmvs_model = io.join_paths(self.pmvs_rec_path, 'models/option-0000.ply') # odm_meshing self.odm_mesh = io.join_paths(self.odm_meshing, 'odm_mesh.ply') self.odm_meshing_log = io.join_paths(self.odm_meshing, 'odm_meshing_log.txt') self.odm_25dmesh = io.join_paths(self.odm_meshing, 'odm_25dmesh.ply') self.odm_25dmeshing_log = io.join_paths(self.odm_meshing, 'odm_25dmeshing_log.txt') # texturing self.odm_texturing_undistorted_image_path = io.join_paths( self.odm_texturing, 'undistorted') self.odm_textured_model_obj = 'odm_textured_model.obj' self.odm_textured_model_mtl = 'odm_textured_model.mtl' # Log is only used by old odm_texturing self.odm_texuring_log = 'odm_texturing_log.txt' # odm_georeferencing self.odm_georeferencing_latlon = io.join_paths(self.odm_georeferencing, 'latlon.txt') self.odm_georeferencing_coords = io.join_paths(self.odm_georeferencing, 'coords.txt') self.odm_georeferencing_gcp = io.join_paths(self.odm_georeferencing, 'gcp_list.txt') self.odm_georeferencing_utm_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_utm_log.txt') self.odm_georeferencing_log = 'odm_georeferencing_log.txt' self.odm_georeferencing_model_txt_geo = 'odm_georeferencing_model_geo.txt' self.odm_georeferencing_model_ply_geo = 'odm_georeferenced_model.ply' self.odm_georeferencing_model_obj_geo = 'odm_textured_model_geo.obj' self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') self.odm_georeferencing_las_json = io.join_paths( self.odm_georeferencing, 'las.json') self.odm_georeferencing_model_las = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.las') self.odm_georeferencing_dem = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_model_dem.tif') self.odm_georeferencing_dem_json = io.join_paths( self.odm_georeferencing, 'dem.json') # odm_orthophoto self.odm_orthophoto_file = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.png') self.odm_orthophoto_tif = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.tif') self.odm_orthophoto_corners = io.join_paths( self.odm_orthophoto, 'odm_orthophoto_corners.txt') self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt') self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt') self.odm_orthophoto_gdaladdo_log = io.join_paths( self.odm_orthophoto, 'gdaladdo_log.txt')
def path(self, *args): return io.join_paths(self.root_path, *args)
def __init__(self, root_path, images_path): # root path to the project self.root_path = io.absolute_path_file(root_path) if not images_path: self.input_images = io.join_paths(self.root_path, 'images') else: self.input_images = io.absolute_path_file(images_path) # modules paths # here are defined where all modules should be located in # order to keep track all files al directories during the # whole reconstruction process. self.dataset_raw = io.join_paths(self.root_path, 'images') self.dataset_resize = io.join_paths(self.root_path, 'images_resize') self.opensfm = io.join_paths(self.root_path, 'opensfm') self.pmvs = io.join_paths(self.root_path, 'pmvs') self.odm_meshing = io.join_paths(self.root_path, 'odm_meshing') self.odm_texturing = io.join_paths(self.root_path, 'odm_texturing') self.odm_georeferencing = io.join_paths(self.root_path, 'odm_georeferencing') self.odm_orthophoto = io.join_paths(self.root_path, 'odm_orthophoto') self.odm_pdal = io.join_paths(self.root_path, 'pdal') # important files paths # benchmarking self.benchmarking = io.join_paths(self.root_path, 'benchmark.txt') # opensfm self.opensfm_bundle = io.join_paths(self.opensfm, 'bundle_r000.out') self.opensfm_bundle_list = io.join_paths(self.opensfm, 'list_r000.out') self.opensfm_image_list = io.join_paths(self.opensfm, 'image_list.txt') self.opensfm_reconstruction = io.join_paths(self.opensfm, 'reconstruction.json') self.opensfm_model = io.join_paths(self.opensfm, 'depthmaps/merged.ply') # pmvs self.pmvs_rec_path = io.join_paths(self.pmvs, 'recon0') self.pmvs_bundle = io.join_paths(self.pmvs_rec_path, 'bundle.rd.out') self.pmvs_visdat = io.join_paths(self.pmvs_rec_path, 'vis.dat') self.pmvs_options = io.join_paths(self.pmvs_rec_path, 'pmvs_options.txt') self.pmvs_model = io.join_paths(self.pmvs_rec_path, 'models/option-0000.ply') # odm_meshing self.odm_mesh = io.join_paths(self.odm_meshing, 'odm_mesh.ply') self.odm_meshing_log = io.join_paths(self.odm_meshing, 'odm_meshing_log.txt') # texturing self.odm_texturing_undistorted_image_path = io.join_paths( self.odm_texturing, 'undistorted') self.odm_textured_model_obj = io.join_paths( self.odm_texturing, 'odm_textured_model.obj') self.odm_textured_model_mtl = io.join_paths( self.odm_texturing, 'odm_textured_model.mtl') # Log is only used by old odm_texturing self.odm_texuring_log = io.join_paths( self.odm_texturing, 'odm_texturing_log.txt') # odm_georeferencing self.odm_georeferencing_latlon = io.join_paths( self.odm_georeferencing, 'latlon.txt') self.odm_georeferencing_coords = io.join_paths( self.odm_georeferencing, 'coords.txt') self.odm_georeferencing_gcp = io.join_paths( self.odm_georeferencing, 'gcp_list.txt') self.odm_georeferencing_utm_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_utm_log.txt') self.odm_georeferencing_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_log.txt') self.odm_georeferencing_model_txt_geo = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_model_geo.txt') self.odm_georeferencing_model_ply_geo = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.ply') self.odm_georeferencing_model_obj_geo = io.join_paths( self.odm_texturing, 'odm_textured_model_geo.obj') # these files will be kept in odm_texturing/ self.odm_georeferencing_model_mtl_geo = io.join_paths( self.odm_texturing, 'odm_textured_model_geo.mtl') # these files will be kept in odm_texturing/ self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') self.odm_georeferencing_pdal = io.join_paths( self.odm_georeferencing, 'pipeline.xml') # odm_orthophoto self.odm_orthophoto_file = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.png') self.odm_orthophoto_tif = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.tif') self.odm_orthophoto_corners = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_corners.txt') self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt') self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt')
def path(self, *args): return io.join_paths(self.root_path, *args)
def __init__(self, root_path, images_path, gcp_file = None): # root path to the project self.root_path = io.absolute_path_file(root_path) if not images_path: self.input_images = io.join_paths(self.root_path, 'images') else: self.input_images = io.absolute_path_file(images_path) # modules paths # here are defined where all modules should be located in # order to keep track all files al directories during the # whole reconstruction process. self.dataset_raw = io.join_paths(self.root_path, 'images') self.opensfm = io.join_paths(self.root_path, 'opensfm') self.mve = io.join_paths(self.root_path, 'mve') self.odm_meshing = io.join_paths(self.root_path, 'odm_meshing') self.odm_texturing = io.join_paths(self.root_path, 'odm_texturing') self.odm_25dtexturing = io.join_paths(self.root_path, 'odm_texturing_25d') self.odm_georeferencing = io.join_paths(self.root_path, 'odm_georeferencing') self.odm_25dgeoreferencing = io.join_paths(self.root_path, 'odm_25dgeoreferencing') self.odm_filterpoints = io.join_paths(self.root_path, 'odm_filterpoints') self.odm_orthophoto = io.join_paths(self.root_path, 'odm_orthophoto') # important files paths # benchmarking self.benchmarking = io.join_paths(self.root_path, 'benchmark.txt') self.dataset_list = io.join_paths(self.root_path, 'img_list.txt') # opensfm self.opensfm_tracks = io.join_paths(self.opensfm, 'tracks.csv') self.opensfm_bundle = io.join_paths(self.opensfm, 'bundle_r000.out') self.opensfm_bundle_list = io.join_paths(self.opensfm, 'list_r000.out') self.opensfm_image_list = io.join_paths(self.opensfm, 'image_list.txt') self.opensfm_reconstruction = io.join_paths(self.opensfm, 'reconstruction.json') self.opensfm_reconstruction_nvm = io.join_paths(self.opensfm, 'reconstruction.nvm') self.opensfm_model = io.join_paths(self.opensfm, 'depthmaps/merged.ply') self.opensfm_transformation = io.join_paths(self.opensfm, 'geocoords_transformation.txt') # mve self.mve_model = io.join_paths(self.mve, 'mve_dense_point_cloud.ply') self.mve_path = io.join_paths(self.opensfm, 'mve') self.mve_image_list = io.join_paths(self.mve_path, 'list.txt') self.mve_bundle = io.join_paths(self.mve_path, 'bundle/bundle.out') self.mve_views = io.join_paths(self.mve, 'views') # filter points self.filtered_point_cloud = io.join_paths(self.odm_filterpoints, "point_cloud.ply") # odm_meshing self.odm_mesh = io.join_paths(self.odm_meshing, 'odm_mesh.ply') self.odm_meshing_log = io.join_paths(self.odm_meshing, 'odm_meshing_log.txt') self.odm_25dmesh = io.join_paths(self.odm_meshing, 'odm_25dmesh.ply') self.odm_25dmeshing_log = io.join_paths(self.odm_meshing, 'odm_25dmeshing_log.txt') # texturing self.odm_texturing_undistorted_image_path = io.join_paths( self.odm_texturing, 'undistorted') self.odm_textured_model_obj = 'odm_textured_model.obj' self.odm_textured_model_mtl = 'odm_textured_model.mtl' # Log is only used by old odm_texturing self.odm_texuring_log = 'odm_texturing_log.txt' # odm_georeferencing self.odm_georeferencing_latlon = io.join_paths( self.odm_georeferencing, 'latlon.txt') self.odm_georeferencing_coords = io.join_paths( self.odm_georeferencing, 'coords.txt') self.odm_georeferencing_gcp = gcp_file or io.find('gcp_list.txt', self.root_path) self.odm_georeferencing_utm_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_utm_log.txt') self.odm_georeferencing_log = 'odm_georeferencing_log.txt' self.odm_georeferencing_transform_file = 'odm_georeferencing_transform.txt' self.odm_georeferencing_proj = 'proj.txt' self.odm_georeferencing_model_txt_geo = 'odm_georeferencing_model_geo.txt' self.odm_georeferencing_model_obj_geo = 'odm_textured_model_geo.obj' self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') self.odm_georeferencing_las_json = io.join_paths( self.odm_georeferencing, 'las.json') self.odm_georeferencing_model_laz = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.laz') self.odm_georeferencing_model_las = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.las') self.odm_georeferencing_dem = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_model_dem.tif') # odm_orthophoto self.odm_orthophoto_file = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.png') self.odm_orthophoto_tif = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.tif') self.odm_orthophoto_corners = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_corners.txt') self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt') self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt') self.odm_orthophoto_gdaladdo_log = io.join_paths(self.odm_orthophoto, 'gdaladdo_log.txt')
def __init__(self, root_path): # root path to the project self.root_path = io.absolute_path_file(root_path) # modules paths # here are defined where all modules should be located in # order to keep track all files al directories during the # whole reconstruction process. self.dataset_raw = io.join_paths(self.root_path, 'images') self.dataset_resize = io.join_paths(self.root_path, 'images_resize') self.opensfm = io.join_paths(self.root_path, 'opensfm') self.pmvs = io.join_paths(self.root_path, 'pmvs') self.odm_meshing = io.join_paths(self.root_path, 'odm_meshing') self.odm_texturing = io.join_paths(self.root_path, 'odm_texturing') self.odm_georeferencing = io.join_paths(self.root_path, 'odm_georeferencing') self.odm_orthophoto = io.join_paths(self.root_path, 'odm_orthophoto') self.odm_pdal = io.join_paths(self.root_path, 'pdal') # important files paths # benchmarking self.benchmarking = io.join_paths(self.root_path, 'benchmark.txt') # opensfm self.opensfm_bundle = io.join_paths(self.opensfm, 'bundle_r000.out') self.opensfm_bundle_list = io.join_paths(self.opensfm, 'list_r000.out') self.opensfm_image_list = io.join_paths(self.opensfm, 'image_list.txt') self.opensfm_reconstruction = io.join_paths(self.opensfm, 'reconstruction.json') # pmvs self.pmvs_rec_path = io.join_paths(self.pmvs, 'recon0') self.pmvs_bundle = io.join_paths(self.pmvs_rec_path, 'bundle.rd.out') self.pmvs_visdat = io.join_paths(self.pmvs_rec_path, 'vis.dat') self.pmvs_options = io.join_paths(self.pmvs_rec_path, 'pmvs_options.txt') self.pmvs_model = io.join_paths(self.pmvs_rec_path, 'models/option-0000.ply') # odm_meshing self.odm_mesh = io.join_paths(self.odm_meshing, 'odm_mesh.ply') self.odm_meshing_log = io.join_paths(self.odm_meshing, 'odm_meshing_log.txt') # odm_texturing self.odm_textured_model_obj = io.join_paths(self.odm_texturing, 'odm_textured_model.obj') self.odm_textured_model_mtl = io.join_paths(self.odm_texturing, 'odm_textured_model.mtl') self.odm_texuring_log = io.join_paths(self.odm_texturing, 'odm_texturing_log.txt') # odm_georeferencing self.odm_georeferencing_latlon = io.join_paths(self.odm_georeferencing, 'latlon.txt') self.odm_georeferencing_coords = io.join_paths(self.odm_georeferencing, 'coords.txt') self.odm_georeferencing_gcp = io.join_paths(self.odm_georeferencing, 'gcp_list.txt') self.odm_georeferencing_utm_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_utm_log.txt') self.odm_georeferencing_log = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_log.txt') self.odm_georeferencing_model_txt_geo = io.join_paths( self.odm_georeferencing, 'odm_georeferencing_model_geo.txt') self.odm_georeferencing_model_ply_geo = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.ply') self.odm_georeferencing_model_obj_geo = io.join_paths( self.odm_texturing, 'odm_textured_model_geo.obj' ) # these files will be kept in odm_texturing/ self.odm_georeferencing_model_mtl_geo = io.join_paths( self.odm_texturing, 'odm_textured_model_geo.mtl' ) # these files will be kept in odm_texturing/ self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') self.odm_georeferencing_pdal = io.join_paths(self.odm_georeferencing, 'pipeline.xml') # odm_orthophoto self.odm_orthophoto_file = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.png') self.odm_orthophoto_tif = io.join_paths(self.odm_orthophoto, 'odm_orthophoto.tif') self.odm_orthophoto_corners = io.join_paths( self.odm_orthophoto, 'odm_orthphoto_corners.txt') self.odm_orthophoto_log = io.join_paths(self.odm_orthophoto, 'odm_orthophoto_log.txt') self.odm_orthophoto_tif_log = io.join_paths(self.odm_orthophoto, 'gdal_translate_log.txt')