C GDAL 分波段進行資料運算

2021-09-27 07:51:28 字數 1811 閱讀 1721

int rgbtograygdal(const char* pszsrcfile, const char* pszdstfile, bool bit8 = true, const char* pszformat = "gtiff")

gdaldriver *podriver = getgdaldrivermanager()->getdriverbyname(pszformat);

if (podriver == null)

//獲取影象寬高和波段數

int ixsize = posrcds->getrasterxsize();

int iysize = posrcds->getrasterysize();

int ibandcount = posrcds->getrastercount();

//確定輸出影象的位數

gdaldatatype edt = gdt_uint16;

if (bit8)

edt = gdt_byte;

else

edt = gdt_uint16;

//建立16bit的資料

gdaldataset *podstds = podriver->create(pszdstfile, ixsize, iysize, ibandcount, edt, null);

double dgeotrans[6] = ;

//設定仿射變換引數

posrcds->getgeotransform(dgeotrans);

podstds->setgeotransform(dgeotrans);

//設定影象投影資訊

podstds->setprojection(posrcds->getprojectionref());

//用於儲存讀取的12bit資料

dt_16u *psrcdata = new dt_16u[ixsize];

if (bit8) //轉換為8bit

; int ngotmin, ngotmax;

gdalrasterband *psrcband, *pdstband;

psrcband = posrcds->getrasterband(iband);

pdstband = podstds->getrasterband(iband);

adfminmax[0] = psrcband->getminimum(&ngotmin);//獲得 iband 波段影像中的最大值和最小值,用於拉伸

adfminmax[1] = psrcband->getmaximum(&ngotmax);

cout << "波段 " << iband << " 的max number :" << adfminmax[1] << endl;

cout << "波段 " << iband << " 的min number :" << adfminmax[0] << endl;

for (int i = 0; i < iysize; i++) //迴圈影象高

pdstband->rasterio(gf_write, 0, i, ixsize, 1, pdstdata, ixsize, 1, gdt_byte, 0, 0);

}} release(pdstdata); //釋放記憶體

} else //轉換為16bit資料

}} release(psrcdata);

//關閉原始影象和結果影象

gdalclose((gdaldataseth)podstds);

gdalclose((gdaldataseth)posrcds);

return 0;

}

js 進行數字運算

在js讀取文字框或者其它表單資料的時候獲得的值是字串型別的,例如兩個文字框a和b,如果獲得a的value值為11,b的value值為9 那麼a.value要小於b.value,因為他們都是字串形式的.在網上找了一下js字串轉數字的文章,這個比較全 方法主要有三種 轉換函式 強制型別轉換 利用js變數...

利用Python進行資料聚合和分組運算

created by darren chen created on 2018 8 2 import pandas as pd import numpy as np import os,time,sys 像sql這種結構化查詢語言所執行的分組運算的種類十分有限 分組鍵的多種形式 1 列表或陣列,其長度...

MySQL 分表分庫怎麼進行資料切分

關係型資料庫本身比較容易成為系統瓶頸,單機儲存容量 連線數 處理能力都有限。當單錶的資料量達到1000w或100g以後,由於查詢維度較多,即使新增從庫 優化索引,做很多操作時效能仍下降嚴重。此時就要考慮對其進行切分了,切分的目的就在於減少資料庫的負擔,縮短查詢時間。資料庫分布式核心內容無非就是資料切...