博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK矢量数据的创建
阅读量:6155 次
发布时间:2019-06-21

本文共 3949 字,大约阅读时间需要 13 分钟。

 

1.功能简介

    GIS将地理空间数据表示为矢量数据和栅格数据。矢量数据模型使用点、线和多边形来表示具有清晰空间位置和边界的空间要素,如控制点、河流和宗地等,每个要素被赋予一个ID,以便与其属性相关联。栅格数据模型使用一个格网和格网元胞(像元)代表空间要素,元胞值表示该元胞位置的空间要素属性。栅格数据模型适用于表示连续的要素,如海拔和降水量。

   

  [矢量数据模型]                                             [栅格数据模型]

    PIE支持多种矢量数据的创建,下面对矢量数据格式的数据创建功能进行介绍。

2.功能实现说明

2.1 Shape数据介绍

    Shapefile是由ESRI开发后被广泛应用的数据格式,它采用文件的方式分开存储数据的控件信息和属性信息,但其不能存储拓扑关系,具有简单、快速显示的优点。一个Shape数据的文件结构如下所示:

 

[Shape数据文件结构]

编号

后缀

文件说明

1

.shp

基本文件,存储地理要素的几何图形信息;

2

.dbf

基本文件,存储地理要素的属性信息;

3

.shx

基本文件,存储图形要素与属性信息的索引;

4

.prj

可选文件,存储数据的空间参考信息;

5

.sbn/.sbx

可选文件,存储数据的空间索引信息(ESRI创建的空间索引);

6

.qix

可选文件,存储数据的空间索引信息(PIE创建的空间索引);

[Shape数据文件结构说明]

2.2 实现思路及原理说明

第一步

创建字段信息并添加值,创建空间参考,保存等

第二步

创建矢量要素数据集

2.3 核心接口与方法

接口/类

方法/属性

说明

DataSource.DatasetFactory

CreateFeatureDataset(…)

创建要素数据集

Carto.LayerFactory

CreateDefaultFeatureLayer(…)

创建矢量图层

Geometry.SpatialReferenceFactory

CreateSpatialReference(string strWkt)

创建空间参考

IField

Name,AliasName,DefaultValue

字段属性

IFields

AddField(IField ptrField)

添加字段

IFeature

SetValue(int nIndex, object field)

设置字段值

IFeatureClass

AddFeature(IFeature ptrFeature)

添加要素

2.4示例代码

项目路径

百度云盘地址下/PIE示例程序/04数据操作/01.矢量数据的创建

视频路径

百度云盘地址下/PIE视频教程/04数据操作/01.矢量数据的创建.avi

示例代码

1      //创建矢量要素数据集 2             //1创建路径 3             SaveFileDialog saveFileDialog = new SaveFileDialog(); 4             saveFileDialog.Title = "待创建的矢量要素数据集"; 5             saveFileDialog.Filter = "ShapeFile|*.shp"; 6             if (saveFileDialog.ShowDialog() != DialogResult.OK) return; 7  8             //2设置字段 9             IField field1 = new Field("Name", FieldType.OFTString, 50, 1);10             field1.Name = "Name";11             field1.AliasName = "名称";12 13             IField field2 = new Field("Level", FieldType.OFTInteger, 50, 1);14             field2.Name = "Level";15             field2.AliasName = "级别";16 17             //3添加字段18             IFields fields = new Fields();19             fields.AddField(field1);20             fields.AddField(field2);21 22             string path = saveFileDialog.FileName;23             //4创建空间参考信息24             ISpatialReference spatialReference = SpatialReferenceFactory.CreateSpatialReference((int)PIE.Geometry.GeoCSType.GeoCSType_WGS1984);25             //5创建矢量要素集26             IFeatureDataset newFeatureDataset = DatasetFactory.CreateFeatureDataset(path, fields, GeometryType.GeometryPoint, spatialReference, "SHP");27 28             #region 6添加point 信息29             //A POINT30             IFeature feature = newFeatureDataset.CreateNewFeature();31             IPoint point = new PIE.Geometry.Point();32             point.PutCoords(90, 45);33             feature.Geometry = point as IGeometry;34 35             feature.FID = 02;36             feature.SetValue(0, "A");37             feature.SetValue(1, 2);38 39             //B POINT40             IFeature feature2 =newFeatureDataset.CreateNewFeature();41             IPoint point2 = new PIE.Geometry.Point();42             point2.PutCoords(93, 40);43             feature2.Geometry = point2 as IGeometry;44 45             feature2.FID = 01;46             feature2.SetValue(0, "B");47             feature2.SetValue(1, 3);48             #endregion49   //将要素字段信息添加进矢量数据集里面50             newFeatureDataset.AddFeature(feature);51             newFeatureDataset.AddFeature(feature2);52             //第一种方法:53             IFeatureLayer featureLayer = new FeatureLayer(); 54             IFeatureClass fClass = new FeatureClass(newFeatureDataset);55             featureLayer.FeatureClass = fClass;56 57             //第二种方法:58    // IFeatureLayer featureLayer = LayerFactory.CreateDefaultFeatureLayer(newFeatureDataset);59             //创建空间索引,为要素数据集创建空间索引60             newFeatureDataset.CreateSpatialIndex(1);61             //(featureLayer.FeatureClass as IFeatureDataset).CreateSpatialIndex(2);     62             m_mapControl.FocusMap.AddLayer(featureLayer as ILayer);          m_mapControl.PartialRefresh(ViewDrawPhaseType.ViewAll);
View Code

2.5示例截图

 

生成的shape文件,格式如下:

  

转载于:https://www.cnblogs.com/PIESat/p/10168304.html

你可能感兴趣的文章
程序员需要关注的十个大数据技术
查看>>
2016年成熟亚太地区公共云服务市场规模将达到81亿美元
查看>>
人工智能大幕开启 安防行业已成先头部队
查看>>
"2016中国APP分类排行榜发布暨颁奖晚宴" —— 兰亭修禊少长有王谢 黔香阁暖高见望诸公...
查看>>
2016年这些网络新贵或被并购
查看>>
Scatec Solar拟在乌克兰建设60MW光伏电站
查看>>
你真的在正确地使用WLAN控制器吗?
查看>>
阿里技术大神:你没做错啥,你错在啥都没做
查看>>
iOS开发之FMDB
查看>>
ENISA报告:ICS-SCADA防护建议
查看>>
web前端性能分析--实践篇
查看>>
《Java和Android开发实战详解》——2.2节构建Java应用程序
查看>>
《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...
查看>>
《Swift开发实战》——导读
查看>>
Java ThreadLocal的使用
查看>>
同步和异步, 阻塞和非阻塞, Reactor和Proactor
查看>>
首次!海豚间像人类一样的交谈被水下麦克风记录
查看>>
《PHP和MySQL Web开发从新手到高手(第5版)》一一第1章 安装
查看>>
《Android 应用案例开发大全(第二版)》——6.1节Android系统的信使:Intent
查看>>
Linux环境下安装RocketMQ(MetaQ)
查看>>