1. 功能简介

目前在地理信息领域中数据包括矢量和栅格两种数据组织形式。每一种数据有不同的数据格式,目前PIE SDK支持多种数据格式的数据创建,下面对内存栅格数据格式的数据创建功能进行介绍。

2. 功能实现说明

2.1. 实现思路及原理说明

第一步

获取要读取的栅格数据

第二步

获取栅格数据的读取

第三步

构建新的栅格数据集

第四步

栅格数据写入

第五步

设置空间参考

第六步

设置仿射变换

2.2.  核心接口与方法

接口/类

方法/属性

说明

IRasterDataset

GetBandCount()

获取波段数

Read()

栅格读取

Write()

栅格写入

GetGeoTransform()

获取仿射变换参数

SetGeoTransform()

设置仿射变换参数

SpatialReference

空间参考

DataSource.DatasetFactory

CreateRasterDataset()

空间栅格数据集

2.3. 示例代码

项目路径

百度云盘地址下/PIE示例程序/04数据操作/11内存栅格数据的创建

数据路径

百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif

视频路径

百度云盘地址下/PIE视频教程/04数据操作/11内存栅格数据的创建.avi

示例代码

          /// <summary>
/// 内存栅格数据集的创建
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripButton_CreateMemRasterData_Click(object sender, EventArgs e)
{
//可以自定义打开一个tiff栅格数据
IRasterDataset rasterDataset = (mapControlMain.FocusMap.GetLayer() as IRasterLayer).Dataset;
int BandCount = rasterDataset.GetBandCount();
//栅格数据范围的读取
IEnvelope envelop = rasterDataset.GetExtent();
int xSize = rasterDataset.GetRasterXSize();//行
int ySize = rasterDataset.GetRasterYSize();//列
UInt16[] array = new UInt16[xSize * ySize * BandCount];
int[] bandMap = new int[BandCount];
for (int i = ; i < BandCount; i++)
{
bandMap[i] = i + ;
}
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "请选择要保存的路径:";
saveFileDialog.Filter = "Raster File|*.tiff";
if (saveFileDialog.ShowDialog() != DialogResult.OK) return;
//栅格数据读取
bool OK = rasterDataset.Read(, , xSize, ySize, array, xSize, ySize, PixelDataType.UInt16, BandCount, bandMap);
//构建栅格数据集
IRasterDataset newRasterDataset = DatasetFactory.CreateRasterDataset("", xSize, ySize, BandCount, PixelDataType.UInt16, "MEM", null);
//设设置空间参考
newRasterDataset.SpatialReference = rasterDataset.SpatialReference;
//栅格数据的写入
bool OK1 = newRasterDataset.Write(, , xSize, ySize, array, xSize, ySize, PixelDataType.UInt16, BandCount, bandMap);
//设置仿射变换
double[] geoTrans = rasterDataset.GetGeoTransform();
newRasterDataset.SetGeoTransform(geoTrans);
//创建图层添加到map中
ILayer layer = LayerFactory.CreateDefaultRasterLayer(newRasterDataset) as ILayer;
//第一种添加数据的方法
mapControlMain.FocusMap.AddLayer(layer, );
//第二种添加数据的方法
// mapControl1.AddLayerFromFile(saveFileDialog.FileName, 0); mapControlMain.PartialRefresh(ViewDrawPhaseType.ViewAll);

2.4. 示例截图

PIE SDK内存栅格数据的创建的更多相关文章

  1. PIE SDK内存矢量数据的创建

    1.功能简介 GIS将地理空间数据表示为矢量数据和栅格数据.矢量数据模型使用点.线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点.河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联.栅 ...

  2. PIE-SDK For C++内存栅格数据的创建

    1.功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式.每一种数据有不同的数据格式,目前PIE SDK支持多种数据格式的数据创建,下面对内存栅格数据格式的数据创建功能进行介绍. 2.功能 ...

  3. PIE SDK打开栅格数据

    1. 功能简介 GIS将地理空间数据表示为矢量数据和栅格数据.矢量数据模型使用点.线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点.河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联. ...

  4. PIE SDK矢量数据空间索引的创建

    1. 功能简介 空间索引的使用便于数据的查询:所以在创建矢量数据的时候创建空间索引,下面对矢量数据如何创建空间索引进行功能介绍. 2. 功能实现说明 2.1. 实现思路及原理说明 第一步 创建矢量要素 ...

  5. PIE SDK栅格数据的金字塔创建

    1. 功能简介 金字塔可用于改善性能,可以加快栅格数据的显示速度.随着放大操作的进行,各个更精细的分辨率等级将逐渐得到绘制;但性能将保持不变:目前PIE SDK支持栅格数据的金字塔创建,下面对栅格数据 ...

  6. PIE SDK 文章目录索引

    1.PIE SDK介绍 1.1.  PIE软件介绍 1.2.  PIE SDK介绍 1.3.  PIE支持项目介绍 1.4.  PIE.NET-SDK插件式二次开发介绍 1.5.  PIE.NET-S ...

  7. PIE SDK栅格数据的创建

    1. 功能简介 目前在地理信息领域中数据包括矢量和栅格两种数据组织形式.每一种数据有不同的数据格式,目前PIE SDK支持多种数据格式的数据创建,下面对栅格数据格式的数据创建功能进行介绍. 2. 功能 ...

  8. PIE SDK创建掩膜

      1.算法功能简介 图像掩膜(Mask)用选定的图像.图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程.掩膜是一种图像滤镜的模板,实用掩膜经常处理的是遥感图像.当提取道 ...

  9. PIE SDK打开自定义栅格数据

    1. 数据介绍 信息提取和解译的过程中,经常会生成一部分中间临时栅格数据,这些数据在执行完对应操作后就失去了存在的价值,针对这种情况,PIE增加了内存栅格数据集,来协助用户完成对自定义栅格数据的读取和 ...

随机推荐

  1. 跨域问题hbuilder

    1.借助jquery-jsonp插件 $.jsonp({ url: url, data: { 'name': usd, 'passwd': pass }, callbackParameter: &qu ...

  2. bootstrap实现菜单定位

    <!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...

  3. Ajax步骤

    var request = new XMLHttpRequest(); request.open("GET","get.php",ture); request. ...

  4. Install zlib/libpng/jpeg/freetype/libgd/GD on Mavericks即mac10.9(转)

    转自:http://wangqinhu.com/install-gd-on-mavericks/ Various applications depend on library GD, however, ...

  5. HDU 4081 Peach Blossom Spring (最小生成树+dfs)

    题意:给定一个 n 个点和相应的权值,要求你用 n-1 条边连接起来,其中一条边是魔法边,不用任何费用,其他的边是长度,求该魔法边的两端的权值与其他边费用的尽量大. 析:先求出最小生成树,然后再枚举每 ...

  6. 解决Spring Boot(2.1.3.RELEASE)整合spring-data-elasticsearch3.1.5.RELEASE报NoNodeAvailableException[None of the configured nodes are available

    Spring Boot(2.1.3.RELEASE)整合spring-data-elasticsearch3.1.5.RELEASE报NoNodeAvailableException[None of ...

  7. [.net 多线程]volatile 摘录

    一.volatile 介绍 volatile 关键字指示一个字段可以由多个同时执行的线程修改. 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制. 这样可以确保该字段在任何时 ...

  8. C#常见编译报错

    mCaster.PlayAnim(ANIMID.ASTD); No overload for method 'PlayAnim' takes '1' arguments PlayAnim()内有两个参 ...

  9. 1、认识Socket

    专业术语定义:(不易理解浏览大体意思即可) 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本 ...

  10. 多态实现的原理------新标准c++程序设计

    “多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定.例子: #include<iostream> using namespac ...