最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python基于GDAL鑲嵌拼接遙感影像

 更新時(shí)間:2023年10月23日 14:42:21   作者:RS迷途小書(shū)童  
這篇文章主要介紹了Python基于GDAL鑲嵌拼接遙感影像, 這里有一點(diǎn)需要注意的就是,用這個(gè)方法進(jìn)行鑲嵌拼接操作時(shí),影像有一條明顯的拼接線(xiàn),不知道是不是我數(shù)據(jù)的問(wèn)題,你們可以自己嘗試一下,只要修改主函數(shù)中的路徑即可,需要的朋友可以參考下

        沒(méi)啥好說(shuō)的,處理高分辨率影像時(shí),數(shù)據(jù)高達(dá)幾十G。用ENVI或者ArcGIS進(jìn)行影像的拼接時(shí),往往會(huì)出現(xiàn)未響應(yīng)的情況。出現(xiàn)未響應(yīng)的話(huà),運(yùn)氣好等個(gè)一晚上可能會(huì)動(dòng)一動(dòng),運(yùn)氣不好就等著強(qiáng)制關(guān)閉重做吧。

        所以搞了一個(gè)Python進(jìn)行拼接操作的代碼,雖然速度不算快,但至少不會(huì)未響應(yīng)。同時(shí)如果對(duì)代碼進(jìn)行一些改進(jìn),還可以進(jìn)行批量拼接的操作,百利而無(wú)一害。

一、導(dǎo)入GDAL庫(kù)

from osgeo import gdal

二、查看影像信息

        為了湊字?jǐn)?shù)的,可以查看影像的投影、寬度、高度、波段數(shù)等信息。不過(guò)需要注意的是在ENVI中沒(méi)有投影坐標(biāo)系,只有地理坐標(biāo)系是做不了鑲嵌拼接的。

        這個(gè)代碼我還不太清楚能不能不要投影坐標(biāo)系進(jìn)行拼接,你們可以自己試試。但最好還是用包含投影坐標(biāo)系的影像進(jìn)行拼接。所以在拼接之前就可以用這段代碼先看一看。

def Get_data(filepath):
    ds = gdal.Open(filepath)  # 打開(kāi)數(shù)據(jù)集dataset
    ds_width = ds.RasterXSize  # 獲取數(shù)據(jù)寬度
    ds_height = ds.RasterYSize  # 獲取數(shù)據(jù)高度
    ds_bands = ds.RasterCount  # 獲取波段數(shù)
    ds_geo = ds.GetGeoTransform()  # 獲取仿射地理變換參數(shù)
    ds_prj = ds.GetProjection()  # 獲取投影信息
    print("影像的寬度為:" + str(ds_width))
    print("影像的高度為:" + str(ds_height))
    print("仿射地理變換參數(shù)為:" + str(ds_geo))
    print("投影坐標(biāo)系為:" + str(ds_prj))
    # data = ds.ReadAsArray(0, 0, ds_width, ds_height)  # 以數(shù)組的形式讀取整個(gè)數(shù)據(jù)集

三、鑲嵌模塊

        這里用到了GDAL中的Warp函數(shù),是不是有點(diǎn)熟悉。之前裁剪也是用的這個(gè)函數(shù),不得不說(shuō)這個(gè)函數(shù)是真的強(qiáng)大,之前有文章介紹了其中的函數(shù),大家有興趣可以去看下,同時(shí)給個(gè)贊吧!【Python&RS】GDAL批量裁剪遙感影像/柵格數(shù)據(jù)

        代碼中的srcSRS,dstSRS分別是輸入投影和輸出投影,這里用一樣的就行了。因?yàn)槲覀冏龅氖氰偳恫僮?,肯定是不用?dòng)原始坐標(biāo)系的。其他的參數(shù)都在代碼中表明了,這里就不介紹了,如果大家有什么問(wèn)題,可以留言交流。

def Mosaic_GDAL(path_image1, path_image2, path_out):
    """
    :param path_image1: 需要鑲嵌的影像
    :param path_image2: 需要鑲嵌的影像
    :param path_out: 鑲嵌后輸出的影像路徑
    :return: None
    """
    image1 = gdal.Open(path_image1, gdal.GA_ReadOnly)  # 第一幅影像
    input_proj = image1.GetProjection()
    image2 = gdal.Open(path_image2, gdal.GA_ReadOnly)  # 第二幅影像
    options = gdal.WarpOptions(srcSRS=input_proj, dstSRS=input_proj, format='GTiff',
                               resampleAlg=gdal.GRA_NearestNeighbour,callback=Show_Progress)
    # 輸入投影,輸出投影,輸出格式,重采樣方法
    gdal.Warp(path_out, [image1, image2], options=options)
    # 輸出路徑,需要鑲嵌的數(shù)據(jù),參數(shù)配置
    ds = gdal.Open(path_out, gdal.GA_ReadOnly)
    ds.BuildOverviews(overviewlist=[2, 4, 8, 16])
    # 創(chuàng)建金字塔
    del image1, image2, ds

四、回調(diào)函數(shù)(沒(méi)啥用) 

        上一篇博文已經(jīng)介紹過(guò)了,就兩點(diǎn):1.水字?jǐn)?shù),2.記錄進(jìn)度。省的看著代碼發(fā)呆。

def Show_Progress(percent, msg, tag):
    """
    :param percent: 進(jìn)度,0~1
    :param msg:
    :param tag:
    :return:
    """
    if 25 <= percent*100 <= 26:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")
    if 50 <= percent*100 <= 51:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")
    if 75 <= percent*100 <= 76:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")

五、完整代碼

# -*- coding: utf-8 -*-
"""
@Time : 2023/6/25 16:28
@Auth : RS迷途小書(shū)童
@File :Raster Data Mosaic.py
@IDE :PyCharm
@Purpose:遙感影像、柵格數(shù)據(jù)的鑲嵌拼接(有明顯拼接線(xiàn))
"""
from osgeo import gdal
def Get_data(filepath):
    ds = gdal.Open(filepath)  # 打開(kāi)數(shù)據(jù)集dataset
    ds_width = ds.RasterXSize  # 獲取數(shù)據(jù)寬度
    ds_height = ds.RasterYSize  # 獲取數(shù)據(jù)高度
    ds_bands = ds.RasterCount  # 獲取波段數(shù)
    ds_geo = ds.GetGeoTransform()  # 獲取仿射地理變換參數(shù)
    ds_prj = ds.GetProjection()  # 獲取投影信息
    print("影像的寬度為:" + str(ds_width))
    print("影像的高度為:" + str(ds_height))
    print("仿射地理變換參數(shù)為:" + str(ds_geo))
    print("投影坐標(biāo)系為:" + str(ds_prj))
    # data = ds.ReadAsArray(0, 0, ds_width, ds_height)  # 以數(shù)組的形式讀取整個(gè)數(shù)據(jù)集
def Show_Progress(percent, msg, tag):
    """
    :param percent: 進(jìn)度,0~1
    :param msg:
    :param tag:
    :return:
    """
    if 25 <= percent*100 <= 26:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")
    if 50 <= percent*100 <= 51:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")
    if 75 <= percent*100 <= 76:
        print("進(jìn)度:" + "%.2f" % (percent*100) + "%")
def Mosaic_GDAL(path_image1, path_image2, path_out):
    """
    :param path_image1: 需要鑲嵌的影像
    :param path_image2: 需要鑲嵌的影像
    :param path_out: 鑲嵌后輸出的影像路徑
    :return: None
    """
    image1 = gdal.Open(path_image1, gdal.GA_ReadOnly)  # 第一幅影像
    input_proj = image1.GetProjection()
    image2 = gdal.Open(path_image2, gdal.GA_ReadOnly)  # 第二幅影像
    options = gdal.WarpOptions(srcSRS=input_proj, dstSRS=input_proj, format='GTiff',
                               resampleAlg=gdal.GRA_NearestNeighbour, callback=Show_Progress)
    # 輸入投影,輸出投影,輸出格式,重采樣方法
    gdal.Warp(path_out, [image1, image2], options=options)
    # 輸出路徑,需要鑲嵌的數(shù)據(jù),參數(shù)配置
    ds = gdal.Open(path_out, gdal.GA_ReadOnly)
    ds.BuildOverviews(overviewlist=[2, 4, 8, 16])
    # 創(chuàng)建金字塔
    del image1, image2, ds
if __name__ == "__main__":
    path1 = "B:/proj_clip"
    path2 = "B:/2_proj_clip"
    path_output = "warp1.tif"
    print("開(kāi)始拼接......")
    Mosaic_GDAL(path1, path2, path_output)
    print("拼接完成......")

        這里有一點(diǎn)需要注意的就是,用這個(gè)方法進(jìn)行鑲嵌拼接操作時(shí),影像有一條明顯的拼接線(xiàn),不知道是不是我數(shù)據(jù)的問(wèn)題。你們可以自己嘗試一下。只要修改主函數(shù)中的路徑即可。

           如果大家在學(xué)習(xí)Python或者RS時(shí)有什么問(wèn)題,可以隨時(shí)留言交流!

到此這篇關(guān)于Python基于GDAL鑲嵌拼接遙感影像的文章就介紹到這了,更多相關(guān)Python遙感影像鑲嵌內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flask框架web開(kāi)發(fā)之零基礎(chǔ)入門(mén)

    Flask框架web開(kāi)發(fā)之零基礎(chǔ)入門(mén)

    這篇文章主要介紹了Flask框架web開(kāi)發(fā)之零基礎(chǔ)入門(mén),簡(jiǎn)單的介紹了如何使用及其數(shù)據(jù)庫(kù)集成,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Numpy?數(shù)據(jù)處理?ndarray使用詳解

    Numpy?數(shù)據(jù)處理?ndarray使用詳解

    這篇文章主要為大家介紹了Numpy?數(shù)據(jù)處理?ndarray使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 在pycharm中執(zhí)行 os.makedirs 提示用戶(hù)名或密碼不正確的問(wèn)題及解決方法

    在pycharm中執(zhí)行 os.makedirs 提示用戶(hù)名或密碼不正確的問(wèn)題及解決方法

    這篇文章主要介紹了在pycharm中執(zhí)行 os.makedirs 提示用戶(hù)名或密碼不正確的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法

    Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法

    這篇文章主要介紹了Python垃圾回收機(jī)制三種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Django實(shí)現(xiàn)前后端登錄

    Django實(shí)現(xiàn)前后端登錄

    這篇文章主要介紹了Django實(shí)現(xiàn)前后端登錄的示例,幫助大家更好的理解和學(xué)習(xí)使用Django,感興趣的朋友可以了解下
    2021-04-04
  • python中從str中提取元素到list以及將list轉(zhuǎn)換為str的方法

    python中從str中提取元素到list以及將list轉(zhuǎn)換為str的方法

    今天小編就為大家分享一篇python中從str中提取元素到list以及將list轉(zhuǎn)換為str的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python如何去除字符串兩端的引號(hào)

    python如何去除字符串兩端的引號(hào)

    這篇文章主要介紹了python如何去除字符串兩端的引號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python對(duì)接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送

    python對(duì)接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送

    在本篇文章里小編給大家分享的是關(guān)于python對(duì)接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送功能,需要的朋友們可以參考下。
    2020-05-05
  • python實(shí)現(xiàn)人機(jī)五子棋

    python實(shí)現(xiàn)人機(jī)五子棋

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)人機(jī)五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 在django中自定義字段Field詳解

    在django中自定義字段Field詳解

    今天小編就為大家分享一篇在django中自定義字段Field詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

怀来县| 白玉县| 湘乡市| 洛扎县| 禄劝| 洞头县| 晋城| 汝城县| 长子县| 平武县| 神农架林区| 兰坪| 义乌市| 绥阳县| 武隆县| 乌拉特中旗| 塔城市| 拉孜县| 临夏县| 亳州市| 武清区| 德清县| 安庆市| 韶关市| 曲周县| 和田市| 新巴尔虎左旗| 金华市| 宁陕县| 绍兴县| 聊城市| 福泉市| 都安| 大兴区| 信宜市| 文登市| 乳源| 财经| 安塞县| 南溪县| 集贤县|