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...