你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
问题
文章
话题
登录
注册
arcengine 中tin文件怎么转换成raster
1 个回复
evergreenxq
赞同来自:
网上找到一段代码,但报错,请帮忙看看
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, "IMAGINE Image", 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);
double cellsize = 5;
origin.X = origin.X + (5 * 0.5);
origin.Y = origin.Y + (5 * nRow) - (5 * 0.5);
nodataFloat = Convert.ToSingle(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)
{
}
return rasterDataset;
}
要回复问题请先
登录
或
注册
发起人
evergreenxq
相关问题
有谁知道哪里可以免费获取各省市地图数据呢,包括详细的shape文件数据
两个栅格文件分辨率一致,但像元位置不一致,如何处理?
ArcEngine 复制镶嵌数据集
利用现有的瓦片生成tpk文件
把shp多个文件整到一起的一个专门的软件,不是ARCGIS是其他的,
shape文件中的点符号如何去除,只保留标注
使用ArcGIS Server解析DEM等格式文件
我有一个县域图,还有不同ID的点数据文件,怎么知道每个县内包含哪些点呢
FAQ: ArcGIS 坐标系统文件
新建文件地理数据库之后目录仍为空
arcmap发布很大的tif文件很卡的问题。。。。
问题状态
最新活动:
2019-03-12 08:32
浏览:
2669
关注:
2
人
1 个回复
evergreenxq
赞同来自:
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, "IMAGINE Image", 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);
double cellsize = 5;
origin.X = origin.X + (5 * 0.5);
origin.Y = origin.Y + (5 * nRow) - (5 * 0.5);
nodataFloat = Convert.ToSingle(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)
{
}
return rasterDataset;
}
要回复问题请先登录或注册