te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>python - How to use rasterio to process large raster data(tif) - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python - How to use rasterio to process large raster data(tif) - Stack Overflow

programmeradmin3浏览0评论
def reproject_raster(input_file, output_file, dst_crs, resolution=None, resampling_method=Resampling.nearest, dst_nodata=None):
    with rasterio.open(input_file) as src:
        src_nodata = src.nodata if src.nodata is not None else dst_nodata
        if resolution:
            transform, width, height = calculate_default_transform(
                src.crs, dst_crs, src.width, src.height, *src.bounds,
                resolution=resolution
            )
        else:
            transform, width, height = calculate_default_transform(
                src.crs, dst_crs, src.width, src.height, *src.bounds
            )
        metadata = src.meta.copy()
        metadata.update({
            'crs': dst_crs,
            'transform': transform,
            'width': width,
            'height': height,
            'nodata': dst_nodata if dst_nodata is not None else src_nodata
        })

        with rasterio.open(output_file, 'w', **metadata) as dst:
            for i in range(1, src.count + 1):
                src_data = src.read(i)
                dst_data = np.zeros((height, width), dtype=src_data.dtype)
                dst_data.fill(src_nodata if dst_nodata is None else dst_nodata)
                reproject(
                    source=src_data,
                    destination=dst_data,
                    src_transform=src.transform,
                    src_crs=src.crs,
                    dst_transform=transform,
                    dst_crs=dst_crs,
                    resampling=resampling_method,  
                    src_nodata=src_nodata,        
                    dst_nodata=dst_nodata         
                )
                dst.write(dst_data, i)


input_raster = r'D:\Geographical_data\land_use\CLCD_v01_2023_albert.tif'
reproj_raster = r'D:\Geographical_data\land_use\CLCD_v01_2023_WGS1984_4_128.tif'
dst_crs = 'EPSG:4326'
reproject_raster(input_raster, reproj_raster, dst_crs, Resampling.nearest)

enter image description here

I want to reproject a raster data with rasterio, but it shows MemoryError, I want to ask how to modify the function such as introducing some windowing techniques etc. to handle and speed up the processing of large raster data

发布评论

评论列表(0)

  1. 暂无评论