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. CentOS 7上安装Docker

    目录 安装步骤 1.查看Docker的版本 ​ 2.安装 Docker 3.启动Docker 4.设置为开启启动 5.查看Docker安装信息 6.使用Docker 中国加速器 安装步骤 安装操作系统 ...

  2. day7_7.5 字符表与文件操作

    一.字符编码. 1. 在计算机的运行中,有三大部分组成,计算机硬件,操作系统,应用程序,当使用者在使用文档编写文字时,所显示的所有字符都存储在内存中,随后再存储在硬盘里,(仅限文字),所以,当美国人发 ...

  3. Pycharm中使用from appium import webdriver时报错:ModuleNotFoundError: No module named 'appium'

    此时先检查一下有没有安装Appium-Python-Client,如果没有安装Appium-Python-Client就在控制台输入pip install Appium-Python-Client进行 ...

  4. django报错:django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?

    django 迁移数据库报错 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.Did you ins ...

  5. NCBI之UniVec数据库及去载体

    1.数据库简介 UniVec是一个数据库,可用于快速识别核酸序列中可能来自载体来源(载体污染)的片段.使用UniVec进行筛选是高效的,因为已经消除了大量冗余子序列,从而创建一个只包含来自大量载体的每 ...

  6. requests--重定向,序列化

    重定向 默认情况下,除了 HEAD, Requests 会自动处理所有重定向.可以使用响应对象的 history 方法来追踪重定向. Response.history 是一个 Response 对象的 ...

  7. appium--多进程启动多设备

    前戏 在前面我们都是使用一个机器进行测试,在做app自动化的时候,我们要测不同的机型,也就是兼容性测试,如果一台一台设备去执行,那就显的太麻烦了.所以经常需要我们启动多个设备,同时跑自动化测试用例,要 ...

  8. 【CFGym102059G】Fascination Street(思维DP)

    点此看题面 大致题意: 有\(n\)个路灯,每个路灯有一定的建造费用,且建成后可照亮自身及周围距离为\(1\)的两个格子.你可以交换\(k\)次两个路灯的建造费用,求照亮所有格子的最小费用. 题意转换 ...

  9. git拆分仓库

    1.git filter-branch拆分当前分支 修改仓库目录,改成拆分后的结构 创建一个当前分支的拷贝分支 git filter-branch -f --tag-name-filter cat - ...

  10. Centos.安装Goaccess1.2

    下载 wget http://tar.goaccess.io/goaccess-1.2.tar.gz 解压 tar -xzvf goaccess-1.2.tar.gz 安装支持库GeoIP-devel ...