コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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**********')
コード例 #5
0
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**********')
コード例 #6
0
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
コード例 #7
0
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)