Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第6章

简介:


目录:

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第1章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第2章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第3章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第4章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第5章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第6章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第7章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第8章

Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料中文PPT下载

 

这一章我们探讨如何利用要素服务进行创建、更改和删除要素。

 

一个要素类(Feature Class)中包含一个或多个要素,每个要素都有一个Geometry的字段用来保存点线面等空间实体。要素通常还会有其他属性字段用来存储额外的属性信息。要素类就像数据库中的表一样的结构,包含了一列的property,也就相当于数据库中的字段或者列。这些property可以是geometry type, data type, raster type 或者 object type,当然最常用的就是Geometry类型和各种Data 类型,比如int, string等等。

 

MgClassDefinition or MgPropertyDefinition 用来定义要素类的结构,也就相当于数据库表的结构。要创建一个要素类feature class,当然要首先定义他的结构,首先要创建一个MgClassDefinition 然后按照需要的类型生成各个property definition即字段定义。把这些MgPropertyDefinition添加到MgClassDefinition的属性定义集合MgPropertyDefinitionCollection 中,这个集合可以通过MgClassDefinition.GetProperties() 方法获得。然后要创建MgFeatureSchema ,相当于数据库概念中的database,当然还要让这个东西真正落地,要指定某种数据格式。AIMS API现在支持文件型的格式,比如SDF SHP文件或者SQLite文件等。

创建好结构就可以往里面添加数据了,我们有MgInsertFeatures/MgDeleteFeatures/MgUpdateFeatures 这样几个命令类用来添加 删除 和更新数据。添加和更新时的数据记录用MgPropertyCollection 来表现,相当于数据表里面的一行,既然这是个集合,那就包含一系列的MgProperty,这个MgProperty和上面的MgPropertyDefinition不同,MgPropertyDefinition表示的是结构信息,比如字段名,这个字段的数据类型,是否允许为空,小数点几位等等;而MgProperty则表示那个字段上面的值,比如 河流名 = “长江”。 我们可以组织好这样的MgPropertyCollection 以便使用MgInsertFeatures/MgDeleteFeatures/MgUpdateFeatures插入或者更新到数据源中。 注意要使更改生效最后一定要调用MgFeatureService.UpdateFeatures() 来执行前面提到的(insert/delete/update)命令,否则全是无用功。

 

我们考虑这样一个场景,用户在浏览器上用鼠标画了一下点 线 面并输入他们的属性信息,我们需要把这些要素保存到数据源中。属性信息好办,从form中读取数据就行了,关键是空间实体的信息。首先我们要知道用户到底画了什么东西,比如一条线那么我们就要知道各个拐点的坐标。这个过程叫数字化,Ajax Viewer和Fusion Viewer都有对应的API。Ajax Viewer API的使用第2章我们讨论过了,Fusion Viewer API来做数字化可以参考峻祁连的这个博客。我们得到各个坐标值之后即可以利用MgGeometryFactory 来生成对应的MgGeometry对象。

 

如果你看API,发现前面提到的MgInsertFeatures/MgDeleteFeatures/MgUpdateFeatures 这几个命令中的MgProperty需要的是MgByteReader类型的geometry,而不是MgGeometry,这该怎么办呢? 其实在AIMS API中,Geometry有3中表现形式:

  1. MgGeometry 和他的子类,可以由 MgGeometryFactory生成,可以获取更多详细信息和进行空间操作;
  2. MyByteReader, 用于上面提到的要素操作;
  3. AGF(Autodesk Geometry Format) 文本表示, it is a superset of WKT(Well known text);

这3种形式的转换关系可以用下图表示,其中用到工具类 MgAgfReaderWriter or MgWktReaderWriter:

image

 

好了,为更好的理解这个过程,请仔细阅读API参考中的这个图,从下往上看。一定要仔细看,相信你会有收获。

image

 

PPT 下载 Download EN_AIMS_API_Chapter_6

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。





本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2013/04/15/3011765.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
分布式计算 JavaScript 前端开发
JS中数组22种常用API总结,slice、splice、map、reduce、shift、filter、indexOf......
JS中数组22种常用API总结,slice、splice、map、reduce、shift、filter、indexOf......
|
4月前
|
存储 API
Map常用API
Map常用API
39 2
|
4月前
|
存储 算法 Java
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
|
5月前
|
JavaScript API
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
94 1
|
5月前
|
JSON JavaScript API
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
JS【详解】Map (含Map 和 Object 的区别,Map 的常用 API,Map与Object 的性能对比,Map 的应用场景和不适合的使用场景)
143 0
|
7月前
|
存储 算法 Java
【Java 集合框架API接口】Collection,List,Set,Map,Queue,Deque
【Java 集合框架API接口】Collection,List,Set,Map,Queue,Deque
101 0
|
定位技术 API 容器
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
百度地图API开发:map.getDistance计算两点之间的距离(直线距离)
960 0
|
API
java202303java学习笔记第三十二天Map集合常见api
java202303java学习笔记第三十二天Map集合常见api
68 0
java202303java学习笔记第三十二天Map集合常见api2
java202303java学习笔记第三十二天Map集合常见api2
66 0
|
Ubuntu JavaScript 前端开发
Google Map api国内正常使用该如何配置(2021最新)
Google Map api国内正常使用该如何配置(2021最新)
541 0
Google Map api国内正常使用该如何配置(2021最新)