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

Python中rasterio庫(kù)的實(shí)現(xiàn)

 更新時(shí)間:2025年04月10日 11:06:21   作者:Python與遙感  
Rasterio是一個(gè)用于讀寫(xiě)光柵數(shù)據(jù)的Python庫(kù),它專(zhuān)注于快速和可靠地處理大規(guī)模地理空間柵格數(shù)據(jù),本文主要介紹了Python中rasterio庫(kù)的實(shí)現(xiàn),感興趣的可以了解一下

前言

遙感數(shù)據(jù)是通過(guò)衛(wèi)星、無(wú)人機(jī)等設(shè)備獲取的地球表面信息,廣泛應(yīng)用于農(nóng)業(yè)、環(huán)境監(jiān)測(cè)、城市規(guī)劃等領(lǐng)域。處理這些數(shù)據(jù)常常需要對(duì)柵格圖像進(jìn)行分析,而Python的rasterio庫(kù)正是解決這一需求的利器。本篇文章將帶你深入了解rasterio庫(kù),幫助你掌握遙感數(shù)據(jù)處理的技巧與最佳實(shí)踐。

rasterio官方文檔:https://rasterio.readthedocs.io/en/latest/index.html

一、rasterio庫(kù)簡(jiǎn)介

rasterio是基于GDAL的Python接口封裝,相比直接使用GDAL,rasterio具有以下優(yōu)勢(shì):

? 更簡(jiǎn)潔的API設(shè)計(jì)
? 原生支持NumPy數(shù)組操作
? 完美集成Python科學(xué)計(jì)算生態(tài)
? 支持多線程讀寫(xiě)加速

典型應(yīng)用場(chǎng)景

  • 衛(wèi)星影像讀寫(xiě)與格式轉(zhuǎn)換
  • 遙感指數(shù)計(jì)算(如NDVI等)
  • 影像裁剪與鑲嵌
  • 地理坐標(biāo)系統(tǒng)轉(zhuǎn)換

二、環(huán)境安裝

你可以通過(guò)以下命令安裝rasterio庫(kù):

pip install rasterio

對(duì)于地理空間數(shù)據(jù)處理,推薦使用conda環(huán)境來(lái)管理依賴(lài)包:

conda install -c conda-forge rasterio

注意事項(xiàng)

  • Windows用戶(hù):建議先安裝預(yù)編譯的GDAL庫(kù),避免出現(xiàn)安裝錯(cuò)誤??梢詮膆ttps://www.lfd.uci.edu/~gohlke/pythonlibs/下載對(duì)應(yīng)版本的whl文件。
  • Linux/MacOS用戶(hù):通常直接通過(guò)pipconda安裝即可,但請(qǐng)確保GDAL等依賴(lài)項(xiàng)已正確配置。

安裝可參考:http://m.fzitv.net/python/3393730z5.htm

三、核心功能詳解

1. 數(shù)據(jù)讀取與元數(shù)據(jù)解析

import rasterio

with rasterio.open('sentinel2.tif') as src:
    # 獲取數(shù)據(jù)矩陣(NumPy數(shù)組)
    data = src.read()
    
    # 查看元數(shù)據(jù)
    print(f"數(shù)據(jù)集信息:\n{src.meta}")
    print(f"坐標(biāo)系:{src.crs}")
    print(f"影像尺寸:{src.width}x{src.height}")
    print(f"空間分辨率:{src.res}")
    print(f"地理范圍:{src.bounds}")

2. 數(shù)據(jù)寫(xiě)入與格式轉(zhuǎn)換

# 創(chuàng)建新柵格文件
profile = src.profile
profile.update(
    dtype=rasterio.float32,
    count=3,
    compress='lzw'
)

with rasterio.open('output.tif', 'w', **profile) as dst:
    dst.write(data.astype(rasterio.float32))

支持格式:GeoTIFF、JPEG2000、ENVI、HDF等30+種格式

3. 數(shù)據(jù)操作技巧

? 影像裁剪

from rasterio.mask import mask
import geojson

# 按像素范圍裁剪
window = Window(100, 200, 800, 600)
clip_data = src.read(window=window)

# 按地理范圍裁剪,GeoJSON格式
geometry = {
    "type": "Polygon",
    "coordinates": [
        [
            [116.0, 39.5],
            [116.5, 39.5],
            [116.5, 40.0],
            [116.0, 40.0],
            [116.0, 39.5]
        ]
    ]
}

clip_data, clip_transform = rasterio.mask.mask(src, [geometry], crop=True)

? 重采樣

from rasterio.enums import Resampling

# 選擇重采樣方法:最近鄰、雙線性、立方卷積等
resampled_data = src.read(
    out_shape=(src.height//2, src.width//2),
    resampling=Resampling.bilinear  # 雙線性插值法
)

4. 坐標(biāo)轉(zhuǎn)換

# 地理坐標(biāo) ? 像素坐標(biāo)
row, col = src.index(116.3974, 39.9093)  # 天安門(mén)坐標(biāo)轉(zhuǎn)像素位置
lon, lat = src.xy(500, 500)  # 中心點(diǎn)坐標(biāo)

# 坐標(biāo)系統(tǒng)轉(zhuǎn)換
from rasterio.warp import transform
dst_crs = 'EPSG:3857'  # Web墨卡托
transformed = transform(src.crs, dst_crs, [lon], [lat])

5. 多波段處理

# 波段合并
with rasterio.open('RGB.tif', 'w', **profile) as dst:
    for i in range(3):
        dst.write(data[i], i+1)

# 計(jì)算NDVI
red = src.read(3).astype(float)
nir = src.read(4).astype(float)
ndvi = (nir - red) / (nir + red + 1e-8)

四、可視化實(shí)踐

# 可視化NDVI
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
plt.imshow(ndvi, cmap='RdYlGn', vmin=-1, vmax=1)
plt.colorbar(label='NDVI')
plt.title('植被指數(shù)分布', fontsize=16)
plt.axis('off')
plt.savefig('ndvi_map.png', dpi=300, bbox_inches='tight')

五、實(shí)際應(yīng)用案例

任務(wù):批量處理Landsat8數(shù)據(jù)提取水體信息

# 示例:批量處理Landsat8數(shù)據(jù)提取水體信息

# 1. 讀取熱紅外波段
with rasterio.open('landsat8_b10.tif') as src:
    thermal_band = src.read(1)

# 2. 計(jì)算地表溫度(簡(jiǎn)單的示例,實(shí)際需要進(jìn)行輻射校正)
temperature = (thermal_band - 273.15)  # 假設(shè)熱紅外波段已經(jīng)是開(kāi)爾文溫度

# 3. 應(yīng)用閾值分割提取水體(基于溫度或植被指數(shù))
water_mask = temperature < 20  # 假設(shè)溫度低于20°C為水體

# 4. 輸出二值化結(jié)果
with rasterio.open('water_mask.tif', 'w', **src.profile) as dst:
    dst.write(water_mask.astype(rasterio.uint8), 1)

# 5. 生成統(tǒng)計(jì)報(bào)告
import numpy as np
water_area = np.sum(water_mask) * src.res[0] * src.res[1]  # 計(jì)算水體面積
print(f'水體面積: {water_area} 平方米')

六、高級(jí)功能

  • 多線程處理:通過(guò)rasterio.Env()配置GDAL線程數(shù)
from rasterio import Env

with Env(GDAL_NUM_THREADS=4):
    with rasterio.open('large_image.tif') as src:
        data = src.read()
  • 內(nèi)存文件操作:使用MemoryFile處理臨時(shí)數(shù)據(jù)
  • 數(shù)據(jù)集拼接:利用rasterio.merge.merge()實(shí)現(xiàn)影像鑲嵌
  • 分塊處理:支持大數(shù)據(jù)分塊讀?。╟hunked reading)

結(jié)語(yǔ)

rasterio憑借其簡(jiǎn)潔的API和強(qiáng)大的功能,已成為遙感數(shù)據(jù)處理的必備工具。

到此這篇關(guān)于Python中rasterio庫(kù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python rasterio庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python卸載后再次安裝遇到的問(wèn)題解決

    python卸載后再次安裝遇到的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于python卸載后再次安裝遇到問(wèn)題解決的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python自動(dòng)化運(yùn)維之Telnetlib的具體使用

    python自動(dòng)化運(yùn)維之Telnetlib的具體使用

    本文將結(jié)合實(shí)例代碼,介紹python自動(dòng)化運(yùn)維之Telnetlib的具體使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法

    Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)抓取HTML網(wǎng)頁(yè)并以PDF文件形式保存的方法,結(jié)合實(shí)例形式分析了PyPDF2模塊的安裝及Python抓取HTML頁(yè)面并基于PyPDF2模塊生成pdf文件的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • python輕松辦公將100個(gè)Excel中符合條件的數(shù)據(jù)匯總到1個(gè)Excel里

    python輕松辦公將100個(gè)Excel中符合條件的數(shù)據(jù)匯總到1個(gè)Excel里

    這篇文章主要為大家介紹了python輕松辦公將100個(gè)Excel中符合條件的數(shù)據(jù)匯總到1個(gè)Excel里示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Python生成隨機(jī)數(shù)的方法

    Python生成隨機(jī)數(shù)的方法

    這篇文章主要介紹了Python生成隨機(jī)數(shù)的方法,有需要的朋友可以參考一下
    2014-01-01
  • Python實(shí)現(xiàn)Excel拆分和合并的優(yōu)化版本

    Python實(shí)現(xiàn)Excel拆分和合并的優(yōu)化版本

    這篇文章主要為大家詳細(xì)介紹了一個(gè)基于Python的Excel文件拆分與合并工具,采用模塊化設(shè)計(jì)實(shí)現(xiàn)高效處理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-02-02
  • 深入理解Python中的super()方法

    深入理解Python中的super()方法

    super 是用來(lái)解決多重繼承問(wèn)題的,直接用類(lèi)名調(diào)用父類(lèi)方法在使用單繼承的時(shí)候沒(méi)問(wèn)題,但是如果使用多繼承,會(huì)涉及到查找順序(MRO)、重復(fù)調(diào)用(鉆石繼承)等種種問(wèn)題。這篇文章主要給大家介紹了關(guān)于Python中super()方法的相關(guān)資料,需要的朋友可以參考下。
    2017-11-11
  • windows環(huán)境下python程序庫(kù)導(dǎo)出requirements并使用詳解

    windows環(huán)境下python程序庫(kù)導(dǎo)出requirements并使用詳解

    這篇文章主要介紹了windows環(huán)境下python程序庫(kù)導(dǎo)出requirements并使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • python中partial庫(kù)的使用方法解析

    python中partial庫(kù)的使用方法解析

    這篇文章主要介紹了python中partial庫(kù)的使用方法解析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • Python爬蟲(chóng)實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題

    Python爬蟲(chóng)實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題

    這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評(píng)論

宝丰县| 华安县| 光泽县| 玉屏| 泽库县| 游戏| 镇宁| 乌兰浩特市| 屏东市| 邯郸市| 马尔康县| 广汉市| 长春市| 盐边县| 乡城县| 岳西县| 建平县| 大田县| 嵩明县| 股票| 怀柔区| 新巴尔虎右旗| 彰武县| 通江县| 曲松县| 宜兰县| 英超| 修文县| 黔西县| 通渭县| 德令哈市| 虎林市| 霸州市| 翼城县| 安化县| 定结县| 泗水县| 广丰县| 迁西县| 孟州市| 大厂|