java 解析栅格数据_栅格数据使用总结(转)

#4楼[楼主] 2009-02-09 15:38 | 尤文之鹤

public IRasterDataset tin2raster(string tempBathyTIN,string geoPath, string gridName)

{

string tinFolder = System.IO.Path.GetDirectoryName(tempBathyTIN);

string tinName = System.IO.Path.GetFileName(tempBathyTIN);

IRasterDataset rasterDataset = new RasterDatasetClass();

try

{

string rasterPath = System.IO.Path.GetDirectoryName(geoPath);

IWorkspaceFactory TinWF = new TinWorkspaceFactory();

ITinWorkspace TinWK = TinWF.OpenFromFile(tinFolder,0)as ITinWorkspace;

ITinAdvanced2 tinAd = TinWK.OpenTin(tinName) as ITinAdvanced2;

IEnvelope extent = tinAd.Extent;

IPoint origin = extent.LowerLeft;

origin.X = origin.X - (5 * 0.5);

origin.Y = origin.Y - (5 * 0.5);

int nCol = (int)Math.Round(extent.Width / 5) + 1;

int nRow = (int)Math.Round(extent.Height / 5) +1;

ISpatialReference2 spatialRef = (ISpatialReference2)extent.SpatialReference;

IWorkspaceFactory rasterWF = new RasterWorkspaceFactoryClass();

IRasterWorkspace2 workSpace = (IRasterWorkspace2)rasterWF.OpenFromFile(rasterPath,0);

rasterDataset = workSpace.CreateRasterDataset(gridName, "GRID", origin,nCol,nRow,5,5,1,ESRI.ArcGIS.Geodatabase.rstPixelType.PT_FLOAT, spatialRef,true);

IRasterBandCollection bandColl = (IRasterBandCollection) rasterDataset;

IRasterBand rasterBand = bandColl.Item(0);

IRawPixels rawPixels = (IRawPixels)rasterBand;

IPnt blockSize = new DblPntClass();

blockSize.X = nCol;

blockSize.Y = nRow;

IPixelBlock3 pixelBlock = (IPixelBlock3)rawPixels.CreatePixelBlock(blockSize);

ITinSurface tinSurface = (ITinSurface)tinAd;

IRasterProps rasterProps = (IRasterProps)rawPixels;

object nodataFloat;

//long nodataInt;

object val = pixelBlock.get_PixelDataByRef(0);

MessageBox.Show(val.ToString());

double cellsize = 5;

origin.X = origin.X + (5 * 0.5);

origin.Y = origin.Y + (5 * nRow) - (5 * 0.5);

nodataFloat = Convert.ToDouble(rasterProps.NoDataValue.ToString());

tinSurface.QueryPixelBlock(origin.X,origin.Y,cellsize,cellsize,esriRasterizationType.esriElevationAsRaster,nodataFloat,val);

IPnt offset = new DblPntClass();

offset.X = 0;

offset.Y = 0;

rawPixels.Write(offset,pixelBlock as IPixelBlock);

}

catch(Exception ex)

{

MessageBox.Show(ex.ToString());

}

return rasterDataset;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值