关键词:
1. 数据介绍
信息提取和解译的过程中,经常会生成一部分中间临时矢量数据,这些数据在执行完对应操作后就失去了存在的价值,针对这种情况,PIE增加了内存矢量数据集,来协助用户完成对自定义矢量数据的读取和显示。
下面以Micaps1类数据为例介绍自定义矢量数据的构建和显示。
2. 实现思路及原理说明
第一步 |
构建数据的字段、空间参考等信息; |
第二步 |
根据字段和空间参考信息创建内存矢量数据集; |
第三步 |
在内存矢量数据集中逐条添加数据记录(包括几何图形和属性); |
第四步 |
通过内存数据集创建矢量图层; |
第五步 |
添加第四步中的图层到地图,并刷新; |
3. 核心接口与方法
接口/类 |
方法 |
说明 |
IField |
构造函数 |
构造字段 |
IFields |
AddField () |
添加字段 |
DatasetFactory |
CreateFeatureDataset |
创建数据集 |
IFeatureDataset |
CreateNewFeature() |
创建要素 |
AddFeature() |
添加要素 |
|
IFeature |
SetValue() |
属性赋值 |
4. 示例代码
项目名称 |
百度云盘地址下/PIE示例程序/10.打开自定义矢量数据 |
项目位置 |
百度云盘地址下/矢量数据/Micaps/micaps1下数据 |
代码位置 |
百度云盘地址下/PIE视频教程/10. 打开自定义矢量数据.avi |
示例代码 |
|
1 方法(一)打开自定义矢量数据 2 //以解析Micaps1数据为例 3 OpenFileDialog openFileDialog = new OpenFileDialog(); 4 openFileDialog.Filter = "Micaps文件(*.000)|*.000"; 5 if (openFileDialog.ShowDialog() == DialogResult.OK) 6 7 IFeatureLayer defineLayer = OpenDefineShp(openFileDialog.FileName); 8 if (defineLayer != null) 9 10 (defineLayer as ILayer).Name = "自定义矢量图层"; 11 mapControlMain.FocusMap.AddLayer(defineLayer as ILayer); 12 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 13 14 15 /// <summary> 16 /// 解析自定义数据,生成矢量 17 /// 以解析Micaps1数据为例,字段只添加站号、经度、纬度、海拔高度 18 /// </summary> 19 /// <param name="filePath">输出SHP文件路径</param> 20 /// <returns></returns> 21 private IFeatureLayer OpenDefineShp(string filePath) 22 23 IFeatureLayer featureLayer = null; 24 int count = 0;//记录读取数据的行数 25 string[] lineValues = null;//每一行的数据值 26 //字段声明 27 IField field_id = new Field("PointID", FieldType.OFTInteger, 20, 4); 28 field_id.AliasName = "站号"; 29 30 IField field_x = new Field("lon", FieldType.OFTInteger, 20, 4); 31 field_x.AliasName = "经度"; 32 33 IField field_y = new Field("lat", FieldType.OFTInteger, 20, 4); 34 field_y.AliasName = "纬度"; 35 36 IField field_h = new Field("height", FieldType.OFTInteger, 20, 4); 37 field_h.AliasName = "海拔高度"; 38 39 IFields fields = new Fields(); 40 fields.AddField(field_id); 41 fields.AddField(field_x); 42 fields.AddField(field_y); 43 fields.AddField(field_h); 44 //建立内存数据集 45 IFeatureDataset pDataset = PIE.DataSource.DatasetFactory.CreateFeatureDataset("", fields, GeometryType.GeometryPoint, null, "MEM"); 46 //解析数据文件,写入数据集中 47 string[] valueLines = System.IO.File.ReadAllLines(filePath); 48 char[] charSeperate = ‘ ‘ ; 49 for (int j = 0; j < valueLines.Length; j++) 50 51 string str = valueLines[j]; 52 if (count == 0 || count == 1) 53 54 count = count + 1; 55 continue; 56 57 //解析字符串,生成Feature 58 IFeature newFeature = pDataset.CreateNewFeature(); 59 lineValues = str.Split(charSeperate, StringSplitOptions.RemoveEmptyEntries); 60 //字段赋值 61 newFeature.SetValue(0, Convert.ToInt32(lineValues[0])); 62 newFeature.SetValue(1, Convert.ToDouble(lineValues[1])); 63 newFeature.SetValue(2, Convert.ToDouble(lineValues[2])); 64 newFeature.SetValue(3, Convert.ToDouble(lineValues[3])); 65 66 //生成Geometry 67 IPoint point = new PIE.Geometry.Point(); 68 point.PutCoords(Convert.ToDouble(lineValues[1]), Convert.ToDouble(lineValues[2])); 69 newFeature.Geometry = point as IGeometry; 70 pDataset.AddFeature(newFeature); 71 count = count + 1; 72 (newFeature as IDisposable).Dispose(); 73 74 featureLayer = PIE.Carto.LayerFactory.CreateDefaultFeatureLayer(pDataset); 75 return featureLayer; 76 |
5. 示例截图
piesdk矢量数据项查看(代码片段)
...成,矢量数据项查看可以看到数据的属性表,下面就基于PIESDK,介绍矢量数据项查看功能的实现。2功能实现说明2.1实现思路及原理说明第一步加载图层第二步将图层和对话框进行绑定2.2核心接口与方法接口/类方法/属性说明PIE.Ax... 查看详情
piesdk内存矢量数据的创建(代码片段)
1.功能简介 GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关... 查看详情
piesdk矢量数据的创建(代码片段)
1.功能简介 GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联。... 查看详情
piesdk矢量透明度标注控制(代码片段)
1.功能简介 透明度和标注是矢量图层的相关属性;图层透明值是0-100间的整数,标注是显示在地图上的文字信息,它是出图中不可或缺的重要元素。标注的样式丰富,并且放置位置灵活。2.功能实现说明2.1实现思路及... 查看详情
layuilayui自定义icon图标(代码片段)
...或者页面滑到底端右边出现的购物车图标,示例图如下:打开购 查看详情
piesdk专题制图打开模板说明文档(代码片段)
1. 功能简介 在PIESDK中,所有的制图元素、视图范围以及排版等都可以保存成一个模板,以供多次重复使用。使用时只需要打开该模板,加载相应数据,就可以直接出图了,省去了重复制作图幅的麻烦,... 查看详情
piesdk过滤控制(代码片段)
1. 功能简介 栅格数据前置过滤是在渲染之前对内存中的数据根据特定的规则进行处理,然后再进行数据渲染。本示例以定标为例进行示例代码编写。 定标(校准)是将遥感器所得的测量值变换为绝对亮... 查看详情
piesdk热力图(代码片段)
1.算法功能简介 热力图,也就热图或者热点图,它能以特殊高亮的的形式显示某一区域的等级的优越性、重要性或者某一区域类别的密度和变换趋势;例如百度地图热力图是用不同颜色的区块叠加在地图上实时描述... 查看详情
piesdk的矢量裁剪矢量文件的algo
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingPIE.SystemAlgo;usingPIE.Carto;usingSystem.IO;usingPIE.DataSource;usingPIE.Geometry;namespaceAlgo///<summary>///用矢量文件裁剪矢量文件///</summary>publicclassVec... 查看详情
微信小程序自定义tabbar(实操)(代码片段)
...步骤实现步骤完整代码-矢量图images图片app.json代码三、自定义效果图实现步骤实现步骤完整代码-矢量图images图片app.json代码custom-tab-bar下的代码使用自定义TaBar一、前言一般使用tabBar的样式,固定不能改变。如下固定效果图... 查看详情
layuilayui自定义icon图标(代码片段)
...或者页面滑到底端右边出现的购物车图标,示例图如下:打开购物车,点击下载代码,压缩包解压后放在你项目的任何位置,作者为了方便,自创了一个文件夹icon_exts,放在了layui/css下面。(网上大多数教程要把图标添加至项目... 查看详情
piesdk坐标系创建定义对比(代码片段)
1. 坐标系创建1.1 从WKT字符串导入空间参考 ISpatialReference接口是一个任何空间参考对象都实现的接口,它包含了所有空间参考对象都公有的方法和属性,如获得空间参考对象的Domain、Name、ExportToWk... 查看详情
piesdk专题制图保存模板说明文档(代码片段)
1. 功能简介 在PIESDK中,所有的制图元素、视图范围以及排版等都可以保存成一个模板,以供多次重复使用。使用模板时只需要打开该模板,加载相应数据,就可以直接出图,省去了重复制作图幅的麻烦... 查看详情
vue相邻自定义组件渲染错误正确的打开方式(代码片段)
话不多说看问题:当封装自定义组件时例如(自定义下拉列表)两个相同的组件在多次v-if变化时偶尔会发生渲染错误,明明赋值正确但是组建中的ajax方法可能返回的数据乱掉,或者其他神逻辑错误。 经过查询发现正确的做... 查看详情
piesdk图层渲染变化事件监听(代码片段)
1.功能简介 通过PIESDK加载图层后,会默认的赋值给数据一个渲染。当用户重新给数据赋值Render或改变数据显示效果时,会触发渲染变化事件。 所谓的事件监听是在事件触发时,将执行用户指定的函数或方法... 查看详情
如何转换自定义矢量化器以预测分类?
】如何转换自定义矢量化器以预测分类?【英文标题】:Howtotransformcustomizevectorizerforpredictingclassification?【发布时间】:2021-10-0606:23:42【问题描述】:据我谷歌搜索,我没有找到类似的问题,或者我用错误的关键字搜索它。我想... 查看详情
piesdk专题制图另存模板(代码片段)
1.功能简介 在PIESDK中,所有的制图元素、视图范围以及排版等都可以保存成一个模板,以供多次重复使用。使用模板时只需要打开该模板,加载相应数据,就可以直接出图,省去了重复制作图幅的麻烦,方便快捷... 查看详情
piesdk缨帽变换(代码片段)
...分量组成的一维平面可定义为“土壤”。 PIESDK支持算法功能的执行,下面对缨帽变换算法功能进行介绍。2.算法功能实现说明2.1.实现步骤第一步算法参数设置第二步算法执行第三步结果显示2.2. 算法参数算法名... 查看详情