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. k8s volume存储卷(四)

    介绍 volume存储卷是Pod中能够被多个容器访问的共享目录,kubernetes的volume概念,用途和目的与docker的volume比较类似,但两者不能等价,首先,kubernetes中的v ...

  2. Python的爬虫利器之urllib

    urllib包 urllib是一个包含几个模块来处理请求的库:  - urllib.request发送http请求  - urllib.error处理请求过程中出现的异常  - urllib.pars ...

  3. 论文笔记系列-AutoFPN

    原论文:Auto-FPN: Automatic Network Architecture Adaptation for Object Detection Beyond Classification 之前 ...

  4. 【洛谷P3749】[六省联考2017]寿司餐厅(网络流)

    洛谷 题意: 给出\(n\)份寿司,现可以选取任意多次连续区间内的寿司,对于区间\([l,r]\),那么贡献为\(\sum_{i=l}^r \sum_{j=i}^rd_{i,j}\)(对于相同的\(d ...

  5. JS高阶---进程与线程

    [大纲] 二级大纲: 三级大纲: [主体] (1)进程process 如下所示,两者内存空间相互独立 (2)线程thread (3)图解 注意:有的程序是多进程的,有的时单进程的 (4)单线程与多线程 ...

  6. Ninja——小而快的构建系统

    介绍 Ninja 是Google的一名程序员推出的注重速度的构建工具,一般在Unix/Linux上的程序通过make/makefile来构建编译,而Ninja通过将编译任务并行组织,大大提高了构建速度 ...

  7. 代码审计-strpos数组绕过

    <?php $flag = "flag"; if (isset ($_GET['ctf'])) { if (@ereg ("^[1-9]+$", $_GE ...

  8. 洛谷 P1628 合并序列

    洛谷 P1628 合并序列 题目传送门 题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100 ...

  9. LG2053/BZOJ1070 「SCOI2007」修车 费用流

    问题描述 LG2053 BZOJ1070 题解 将\(m\)个修理工拆为\(n \times m\)个,将修理工和车辆看做二分图,连出一个完全二分图. 边流量为\(1\),费用为时间,费用流即可. \ ...

  10. myeclipse开发javaweb难点总结

    修改项目部署名:右键项目首选项—搜web 创建servlet:先在src下面建包,com.yhh.servlet,然后建新servlet,第二页改url为别名,这种方法xml会自动配置好 配置哪个服务 ...