def dissolve_shapefile(self, src): print('**********Running Dissolve Shapefile Utility**********') dest = '' cmd = find_ogr2ogr() if cmd: print('Dissolving shapefile...{}'.format(src)) src_dir, src_name = os.path.split(src) dest = os.path.splitext(src)[0] + '_DISSOLVED.shp' lyrname = os.path.splitext(src_name)[0] command = create_env_cmd_list(_use_env) + [ cmd, '"' + dest + '"', '"' + src + '"', '-dialect', 'sqlite', '-sql', '"SELECT ST_Union(geometry) FROM ' + lyrname + '"' ] print('Writing to {}...'.format(dest)) p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): print('File successfully written') os.remove(src) os.remove(os.path.splitext(src)[0] + '.dbf') os.remove(os.path.splitext(src)[0] + '.shx') os.remove(os.path.splitext(src)[0] + '.prj') else: print( 'Conversion unsuccessful. shp file not created. Please contact HSTB.' ) else: print('Dissolve shapefile skipped. No valid command found') print('**********Dissolve Shapefile Complete**********') return dest
def pallete_to_rgb(src): print('Converting to RGB...') pct2rgb = find_command('pct2rgb') src_dir, src_name = os.path.split(src) dest = os.path.join(src_dir, os.path.splitext(src_name)[0] + '_rgb.tif') command = create_env_cmd_list(_use_env) + ['python', pct2rgb] command += ['"' + src + '"', '"' + dest + '"'] p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): print('Conversion complete') else: print('Unable to convert to RGB') return dest
def tif_to_shp(src, ogr_format, userdest=None): print('**********Running SNM from TIF Utility**********') dest = '' area_sq_nm = 0 timestamp = datetime.now().strftime('%m%d%y_%H%M%S') gdal_polygonize = find_command('gdal_polygonize') if gdal_polygonize: src_dir, src_name = os.path.split(src) if userdest is not None: dest = os.path.join(userdest, 'tifshp_' + timestamp + '.shp') else: dest = os.path.join(src_dir, 'tifshp_' + timestamp + '.shp') command = create_env_cmd_list(_use_env) + [ 'python', gdal_polygonize, '"' + src + '"', '-f', '"' + ogr_format + '"', '"' + dest + '"' ] print('Converting to shp file...') p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): driver = ogr.GetDriverByName("ESRI Shapefile") dataSource = driver.Open(dest, 1) lyr = dataSource.GetLayer() a = [] for feature in lyr: geom = feature.GetGeometryRef() a.append(geom.GetArea()) a_np = np.array(a) area_sq_meters = a_np.sum() area_sq_nm = float(area_sq_meters / 3429904.000) print('{} in square meters, {} in SNM'.format( area_sq_meters, area_sq_nm)) if src_name == 'tifblank.tif': os.remove(src) else: print( 'Conversion unsuccessful. shp file not created. Please contact HSTB.' ) else: print('SNM from TIF skipped. No valid command found') print('**********SNM from TIF Complete**********') return dest, area_sq_nm
def overlay_images(img_stack, dest, extents_ulx=None, extents_uly=None, extents_lrx=None, extents_lry=None, colorbar='', compress=True): # img_stack - array of images, first goes on bottom, last on top print('**********Running Overlay Images Utility**********') gdalmerge = find_command('gdal_merge') if gdalmerge and img_stack and dest: command = create_env_cmd_list(_use_env) + ['python', gdalmerge] if compress: command += ['-co', 'compress=LZW'] if (extents_ulx == None) or (extents_uly == None) or ( extents_lrx == None) or (extents_lry == None): print('No extents given.') command += ['-init', '0', '-o', '"' + dest + '"'] else: command += [ '-init', '0', '-ul_lr', str(extents_ulx), str(extents_uly), str(extents_lrx), str(extents_lry), '-o', '"' + dest + '"' ] for img in img_stack: command += ['"' + img + '"'] print('Combining images...') p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): print('Combine complete. {} generated.'.format(dest)) if colorbar: add_on_elements(dest, colorbar) else: print( 'Creation unsuccessful. {} not generated. Please contact HSTB.' ) else: print('Overlay Images skipped. No valid command found') print('**********Overlay Images Complete**********')
def run_merge(src, dest, search_subdirectories=False, snm_calc=False): print('**********Running Merge GeoTIF Utility**********') gdalmerge = find_command('gdal_merge') if gdalmerge: images = [] if search_subdirectories: for root, dirs, files in os.walk(src): for file in files: extension = os.path.splitext(file)[1].lower() if extension in ['.tif', '.tiff']: images.append('"' + os.path.join(root, file) + '"') print('Including {}'.format(file)) else: for file in os.listdir(src): extension = os.path.splitext(file)[1].lower() if extension in ['.tif', '.tiff']: images.append('"' + os.path.join(src, file) + '"') print('Including {}'.format(file)) print('Found {} images'.format(len(images))) if snm_calc: tot_snm = np.array([]) for image in images: snm = tif_to_shp(image.strip('"'), 'ESRI Shapefile') tot_snm = np.append(tot_snm, [snm]) print('Total SNM = {}'.format(tot_snm.sum())) command = create_env_cmd_list(_use_env) + ['python', gdalmerge] + images + \ ['-init', '255', '-o', '"' + dest + '"'] print('Combining images...') p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): print('Combine complete. {} generated.'.format(dest)) else: print( 'Creation unsuccessful. {} not generated. Please contact HSTB.' ) else: print('Merge GeoTIF skipped. No valid command found') print('**********Merge GeoTIF Complete**********')
def single_band_mask_from_tif(src): print('Building mask tif...') gdal_calc = find_command('gdal_calc') dest = '' if gdal_calc: src_dir, src_name = os.path.split(src) dest = os.path.join(src_dir, 'tifblank.tif') command = create_env_cmd_list(_use_env) + [ 'python', gdal_calc, '-A', '"' + src + '"', '--outfile="' + dest + '"', '--calc="A>0"' ] p = subprocess.Popen(" ".join(command)) while p.poll() is None: pass if os.path.exists(dest): print('Tif mask created') else: print('Unable to generate TIF mask using gdal_calc.') else: print('Single band mask skipped. No valid command found') return dest
def bag_to_raster(src_filename, out_filename, resX=None, resY=None, input_args="", output_args=""): """ bag_to_tif(data/test_vr.bag, out.bag) results in: gdal_translate data/test_vr.bag -oo MODE=RESAMPLED_GRID out.bag bag_to_tif(data/test_vr.bag, out.tif, 5, 5, output_args='-co "VAR_ABSTRACT=My abstract"') results in: gdal_translate data/test_vr.bag -oo MODE=RESAMPLED_GRID -oo RESX=5 -oo RESY=5 out.tif -co "VAR_ABSTRACT=My abstract" """ gdal_translate = find_command("gdal_translate") res_x_str = "" if resX: res_x_str = " -oo RESX=" + str(resX) res_y_str = "" if resY: res_y_str = " -oo RESY=" + str(resY) command = create_env_cmd_list(_use_env) + [ gdal_translate, '"' + src_filename + '"', "-oo MODE=RESAMPLED_GRID" + res_x_str + res_y_str, input_args, '"' + out_filename + '"', output_args ] full_command = " ".join(command) p = subprocess.Popen(full_command) p.wait() if os.path.exists(out_filename): return out_filename else: raise Exception("Failed to create tif from bag :" + full_command)