mysql添加栅格数据_打开栅格目录中的一个数据 创建栅格数据集

本文详细介绍了如何在MySQL环境中打开栅格目录数据并创建新的栅格数据集。通过`GetRasterCatalogItem`方法获取栅格目录中的数据,并使用`CreateRasterDataset`函数创建指定大小、分辨率和类型的栅格数据集。在创建过程中,设置了NoDataValue,并通过像素块进行数据写入操作。
摘要由CSDN通过智能技术生成

打开栅格目录中的一个数据

IRasterDataset GetRasterCatalogItem(IRasterCatalog pCatalog, int pObjectID)

{

//栅格目录继承了IFeatureClass

IFeatureClass pFeatureClass = (IFeatureClass)pCatalog;

IRasterCatalogItem pRasterCatalogItem =

(IRasterCatalogItem)pFeatureClass.GetFeature(pObjectID);

return pRasterCatalogItem.RasterDataset;

}

创建栅格数据集

public IRasterDataset CreateRasterDataset(string pRasterFolderPath, string

pFileName,string pRasterType,ISpatialReference pSpr )

{

IRasterWorkspace2 pRasterWs = GetRasterWorkspace(pRasterFolderPath) as

IRasterWorkspace2;

IPoint pPoint = new PointClass();

pPoint.PutCoords(15.0, 15.0); //设置想,x,y坐标

int pWidth = 300;

int pHeight = 300;

double xCell = 30;

double yCell = 30;

int NumBand = 1;

IRasterDataset pRasterDataset = pRasterWs.CreateRasterDataset(pFileName,

pRasterType, pPoint, pWidth, pHeight, xCell, yCell, NumBand, rstPixelType.PT_UCHAR, pSpr,true);

IRasterBandCollection pRasterBands =(IRasterBandCollection)pRasterDataset;

IRasterBand pRasterBand = pRasterBands.Item(0);

IRasterProps  pRasterProps = (IRasterProps)pRasterBand;

pRasterProps.NoDataValue = 255;

IRaster pRaster = pRasterDataset.CreateDefaultRaster();

IPnt pPnt = new PntClass();

pPnt.SetCoords(30, 30);

IRaster2 pRaster2 = pRaster as IRaster2;

IRasterEdit pRasterEdit = (IRasterEdit)pRaster2;

IRasterCursor pRasterCursor = pRaster2.CreateCursorEx(pPnt);

do

{

IPixelBlock3 pPixelblock = pRasterCursor.PixelBlock as IPixelBlock3;

System.Array pixels = (System.Array)pPixelblock.get_PixelData(0);

for (int i = 0; i < pPixelblock.Width; i++)

for (int j = 0; j < pPixelblock.Height; j++)

if (i == j)

pixels.SetValue(Convert.ToByte(255), i, j);

else

pixels.SetValue(Convert.ToByte((i * j + 30) / 255), i, j);

pPixelblock.set_PixelData(0, (System.Array)pixels);

IPnt pUpperLeft = pRasterCursor.TopLeft;

pRasterEdit.Write(pUpperLeft, (IPixelBlock)pPixelblock);

} while (pRasterCursor.Next());

System.Runtime.InteropServices.Marshal.ReleaseComObject(pRasterEdit);

return pRasterDataset;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值