GDAL向量轉柵格

2021-06-04 03:29:08 字數 2989 閱讀 4548

gdal版本1.8.0.

首先嘗試使用gdal_rasterize小工具,但是不支援新生成輸出柵格檔案。官方說1.8版本後已經支援。但仍然無效。

柵格的元資料賦值和仿射變換以後需要進一步研究。

**實現:

#include "stdafx.h"

#include #include "gdal_priv.h"

#include "ogrsf_frmts.h"

#include "gdal_alg.h"

using namespace std;

bool run_rasterize(const char* shp,const char* rasterfile);

int _tmain(int argc, _tchar* argv)

else

cin.get();

return 0;

}bool run_rasterize(const char* shp,const char* rasterfile)

ogrlayer *pogrlyr;

pogrlyr = pogrsrc->getlayer(0);

//ogrenvelope env;

pogrlyr->getextent(&env);

int m_nimagewidth =1024;

int m_nimageheight =1024;

ogrspatialreference *pogrsrs = null;

pogrsrs = pogrlyr->getspatialref();

char *pprj = null;

if (pogrsrs == null)

else

const char *pszformat = "gtiff";

gdaldriver *podriver = null;

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

gdaldataset *ponewds = podriver->create(rasterfile,

m_nimagewidth,

m_nimageheight,

1, gdt_float32 ,

null );

double adfgeotransform[6];

adfgeotransform[0] = env.minx;

adfgeotransform[1] = (env.maxx - env.minx)/m_nimagewidth;

adfgeotransform[2] = 0;

adfgeotransform[3] = env.maxy;

adfgeotransform[4] = 0;

adfgeotransform[5] = (env.miny - env.maxy)/m_nimageheight;

gdalsetgeotransform( ponewds, adfgeotransform );

if (pogrsrs != null)

int * pnbandlist = null;

pnbandlist = new int [1];

pnbandlist[0]=1;

double *dburnvalues = null;

dburnvalues = new double[3];

dburnvalues[0]=255;

dburnvalues[1]=111;

dburnvalues[2]=34;

ogrlayerh * player;

player = new ogrlayerh[1];

player[0] = (ogrlayerh)pogrlyr;

char **papszoptions = null;

papszoptions = cslsetnamevalue( papszoptions, "chunksize", "1" );

papszoptions = cslsetnamevalue( papszoptions, "attribute", "code" );

void * ptransformarg=null;

void * m_hgentransformarg=null;

m_hgentransformarg = gdalcreategenimgprojtransformer( null,

pprj,

(gdaldataseth)ponewds,

ponewds->getprojectionref(),

false, 1000.0, 3 );

m_hgentransformarg,

0.125 );

cplerr err= gdalrasterizelayers((gdaldataseth)ponewds,

1,pnbandlist,

1,player,

gdalgenimgprojtransform,

m_hgentransformarg,

dburnvalues,

papszoptions,

gdaltermprogress,

"vector2raster");

gdaldestroygenimgprojtransformer(m_hgentransformarg);

gdalclose(ponewds);

ogrdatasource::destroydatasource(pogrsrc);

deleteplayer;

deletepnbandlist;

deletedburnvalues;

return true;

}

效果圖:

圖1. 線要素向量圖

圖2. 柵格化後圖

arcmap向量轉柵格 依據向量面某一屬性

因為會用到spitial analysis 的工具,所以需要在customize裡面的extensions勾選spitial analysis工具 input 向量面,在value field 選擇依據的向量面屬性列表,匯出位置自己選擇,在cellsize裡面選擇需要保持解析度一致的源參考 柵格,向...

GDAL 處理柵格資料

gdal 是柵格資料處理模組 ogr 是向量資料處理模組 gdal資料驅動,與ogr資料驅動類似,需要先建立某一型別的資料驅動,再建立響應的柵格資料集。一次性註冊所有的資料驅動,但是只能讀不能寫 gdal.allregister 單獨註冊某一型別的資料驅動,這樣的話可以讀也可以寫,可以新建資料集 d...

gdal 建立GeoTiff柵格資料

1 定義轉換引數 2private readonly double d transform 3 定義座標系統 4private readonly string d project geogcs wgs 84 datum wgs 1984 spheroid wgs 84 6378137,298.257...