1. 数据介绍

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

下面以Micaps1类数据为例介绍自定义矢量数据的构建和显示。

2. 实现思路及原理说明

第一步

构建数据的字段、空间参考等信息;

第二步

根据字段和空间参考信息创建内存矢量数据集;

第三步

在内存矢量数据集中逐条添加数据记录(包括几何图形和属性);

第四步

通过内存数据集创建矢量图层;

第五步

添加第四步中的图层到地图,并刷新;

3. 核心接口与方法

接口/类

方法

说明

IField

构造函数

构造字段

IFields

AddField ()

添加字段

DatasetFactory

CreateFeatureDataset

创建数据集

IFeatureDataset

CreateNewFeature()

创建要素

AddFeature()

添加要素

IFeature

SetValue()

属性赋值

4. 示例代码

项目名称

百度云盘地址下/PIE示例程序/03.数据加载/10.打开自定义矢量数据

数据位置

百度云盘地址下/PIE示例数据/矢量数据/Micaps/micaps1下数据

视频位置

百度云盘地址下/PIE视频教程/03.数据加载/10.打开自定义矢量数据.avi

示例代码

 方法(一)打开自定义矢量数据
//以解析Micaps1数据为例
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Micaps文件(*.000)|*.000";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
IFeatureLayer defineLayer = OpenDefineShp(openFileDialog.FileName);
if (defineLayer != null)
{
(defineLayer as ILayer).Name = "自定义矢量图层";
mapControlMain.FocusMap.AddLayer(defineLayer as ILayer);
mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
}
}
/// <summary>
/// 解析自定义数据,生成矢量
/// 以解析Micaps1数据为例,字段只添加站号、经度、纬度、海拔高度
/// </summary>
/// <param name="filePath">输出SHP文件路径</param>
/// <returns></returns>
private IFeatureLayer OpenDefineShp(string filePath)
{
IFeatureLayer featureLayer = null;
int count = ;//记录读取数据的行数
string[] lineValues = null;//每一行的数据值
//字段声明
IField field_id = new Field("PointID", FieldType.OFTInteger, , );
field_id.AliasName = "站号"; IField field_x = new Field("lon", FieldType.OFTInteger, , );
field_x.AliasName = "经度"; IField field_y = new Field("lat", FieldType.OFTInteger, , );
field_y.AliasName = "纬度"; IField field_h = new Field("height", FieldType.OFTInteger, , );
field_h.AliasName = "海拔高度"; IFields fields = new Fields();
fields.AddField(field_id);
fields.AddField(field_x);
fields.AddField(field_y);
fields.AddField(field_h);
//建立内存数据集
IFeatureDataset pDataset = PIE.DataSource.DatasetFactory.CreateFeatureDataset("", fields, GeometryType.GeometryPoint, null, "MEM");
//解析数据文件,写入数据集中
string[] valueLines = System.IO.File.ReadAllLines(filePath);
char[] charSeperate = { ' ' };
for (int j = ; j < valueLines.Length; j++)
{
string str = valueLines[j];
if (count == || count == )
{
count = count + ;
continue;
}
//解析字符串,生成Feature
IFeature newFeature = pDataset.CreateNewFeature();
lineValues = str.Split(charSeperate, StringSplitOptions.RemoveEmptyEntries);
//字段赋值
newFeature.SetValue(, Convert.ToInt32(lineValues[]));
newFeature.SetValue(, Convert.ToDouble(lineValues[]));
newFeature.SetValue(, Convert.ToDouble(lineValues[]));
newFeature.SetValue(, Convert.ToDouble(lineValues[])); //生成Geometry
IPoint point = new PIE.Geometry.Point();
point.PutCoords(Convert.ToDouble(lineValues[]), Convert.ToDouble(lineValues[]));
newFeature.Geometry = point as IGeometry;
pDataset.AddFeature(newFeature);
count = count + ;
(newFeature as IDisposable).Dispose();
}
featureLayer = PIE.Carto.LayerFactory.CreateDefaultFeatureLayer(pDataset);
return featureLayer;
}

5. 示例截图

PIE SDK打开自定义矢量数据的更多相关文章

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

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

  2. PIE SDK打开矢量数据

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

  3. PIE SDK打开网络地图数据

    1. 数据介绍 网络地图数据是在线地图服务发布出来的数据,其支持数据的网络查看和传输,极大的促进了GIS的发展. 目前PIE SDK支持百度地图.谷歌地图.高德地图.天地图.Bing地图.ArcGIS ...

  4. PIE SDK矢量自定义渲染

    1. 功能简介 PIE SDK中关于矢量渲染提供了多种方案,包括简单渲染.分级渲染.唯一值渲染,这几种渲染方式具有一定的通用性,可以满足用户绝大多数的需求. 当面对复杂的业务,当前渲染方案无法满足用户 ...

  5. PIE SDK打开栅格数据

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

  6. PIE SDK打开GDB、Dwg数据

    1. 功能简介 目前不同的GIS软件平台具有自己独特支持的数据格式,如ESRI的File GeoDataBase和Personal GeoDataBase.MapInfo的mif数据.AutoCAD的 ...

  7. PIE SDK打开Micaps数据

    1. 功能简介 Micaps数据是气象信息处理和天气预报制作中的一种气象数据格式.其包含多种气象信息产品(地面常规气象观测数据产品.高空常规气象观测数据产品等),目前Micaps数据被Micaps软件 ...

  8. PIE SDK打开HDF、NC数据

    1. 功能简介 HDF 是美国国家高级计算应用中心(National Center for Supercomputing Application)为了满足各种领域研究需求而研制的一种能高效存储和分发科 ...

  9. PIE SDK打开静止卫星数据

    1. 功能简介 静止卫星是位于地球赤道上空约3.58万km处,与地面始终保持相对静止的卫星,静止卫星的特点是覆盖区域广,具有很强的机动灵活性,能够对特定区域进行分钟级高重复观测,可快速监测灾害目标的动 ...

随机推荐

  1. VUE注册局部组件

    // 局部组件命名规范 /* 1文件夹名大驼峰 MyLocalBtn.vue 2 使用的时候 将驼峰转化为横杠 <my-local-btn></my-local-btn> */ ...

  2. CMS收集器和G1收集器 他们的优缺点对比 G1只有并发标记才不会stop-the-world 其他都会停下来(阿里多次问到)

    CMS收集算法 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 G1收集算法 参考:G1 垃圾收集器入门 首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop ...

  3. Fishing Master (思维+贪心)

    题目网站:http://acm.hdu.edu.cn/showproblem.php?pid=6709 Problem Description Heard that eom is a fishing ...

  4. springboot启动时控制台不显示映射的URL

    背景 今天,第一次使用 2.2.0 版本的springboot,在访问接口时发现访问不到,于是在控制台进行 URL 搜索,发现并相关没有内容 原因 springboot版本差异,切换回 2.0.5.R ...

  5. docker--发布docker镜像

    前戏 前面我们自己做了个docker镜像,我们可以上传到docker hub,别人就可以下载使用了 发布到docker hub 我们前面使用docker search 查找的镜像都是从docker h ...

  6. [LeetCode] 50. Pow(x, n) 求x的n次方

    Implement pow(x, n), which calculates x raised to the power n(xn). Example 1: Input: 2.00000, 10 Out ...

  7. oracle--介质恢复和实例恢复的基本概念

    1.概念 REDO LOG是Oracle为确保已经提交的事务不会丢失而建立的一个机制.实际上REDO LOG的存在是为两种场景准备的,一种我们称之为实例恢复(INSTANCE RECOVERY),一种 ...

  8. docker for windows添加卷映射

    docker settings->share drivers 设置共享目录 启动docker时-v 指定目录 ··· docker run -v /d/temp:/app -it --rm co ...

  9. 去掉DataGridView最后一行的空白行,删除空白行

    //不显示出dataGridView1的最后一行空白   dataGridView1.AllowUserToAddRows = false;       直接在LODE事件

  10. 用欧拉计划学Rust语言(第7~12题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识.学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法. 学习任何一项技能最怕没有 ...