组件式GIS开发总结(一)

article/2025/10/25 13:01:11

一、组件式开发的优缺点
1)优点

(1)高度的伸缩性
(2)灵活的拓展性
(3)易于开发
(4)易于集成
(5)更高的性价比
2)缺点
(1)与专业的GIS客户端软件相比,组件式GIS的效率相对低下
(2)支持的空间数据量有限
(3)支持的功能有限
(4)系统的容错率和可靠性有待提升
二、SuperMap Objects组件式开发的控件
1)核心控件:SuperMap、SuperWorkspace;
2)功能控件:Super3D、SuperAnalyst、SuperLayout、SuperTopo;
3)辅助开发工具:SuperWkspManager、SuperGridView、SuperLegend;
三、良好的组件式编程习惯
1)避免上帝对象
2)避免幻数
3)避免长函数
4)避免深度嵌套
5)应用分层
6)代码有注释
7)代码简洁、低耦合
8)标识符命名有意义
9)日志打印
四、基本概念
(1) SuperObjects 中提供了两种保存工作空间的接口:SuperWorkspace.Save()和SuperWorkspace.SaveAs();
(2) SuperGIS的工作空间是以树状层次结构保存的,工作空间的拓展名有smw(二进制格式)、sxw(XML格式);
(3) 用户的工作环境同时只允许有一个工作空间,因此,不要在同一个项目中加载一个以上的SuperWorkspace控件;工作空间保存的内容包括数据源、地图、系统资源和三维场景及布局;
(4) SuperMap Objects的主要功能有
1)数据转换
2)空间数据编辑与处理
3)空间数据组织与管理
4)空间数据获取与集成
5)数据访问与互操作
6)空间分析
7)查询分析
8)地理变换
9)地图显示
10)地图投影
11)制图输出
12)地图布局
(5)当需要将2个及以上的同类型的数据集合到一个数据集时,可以使用数据集追加的方法来实现。提供矢量数据集追加方法:soDatasetVector.Append(),提供栅格数据集追加方法:soDatasetRaster.Append();
(6)GIS由软件系统、硬件系统、用户和地理数据组成的。
(7)GIS开发的三种模式:
1)独立开发
2)单纯二次开发
3)集成二次开发
(8)GIS中的2种数据结构:
1)矢量数据结构,特点:定位明显,属性隐含;
2) 栅格数据结构,特点:定位隐含,属性明显;
五、网络分析的类型
1)连通性分析
2)服务区分析
3)物流分析
4)最短路径分析
5)最近设施查找
六、SuperMap Objects 获取字段

//先要判断字段名是否合法,需用以下接口
soDatasetVector.IsAvailableFieldName()
//创建字段,用以下接口
soDatasetVector.CreateField()//创建单个字段的接口
soDatasetVector.CreateFields()//创建多个字段的接口
//删除字段,用以下接口
soDatasetVector.Delete()
//更新字段,用以下接口
soDatasetVecot.UpdateField()//只更新字段值
soDatasetVector.UpdateFieldEx()//同步更新SQL数据源的值

七、栅格分析
1)类型:
(1)栅格统计
(2)表面分析
2)栅格数据模型/结果数据/主要数据源
(1)离散数据
(2)连续数据
八、SuperMap Objects OMD(至关重要)
在这里插入图片描述
三个关系很重要:
3个聚合、1个联合、1个继承;
九、用C#代码写出获取F:\A\AA路径里的工作空间里的所有图层。

this.axSuperWorkspace1.Open(@"F:\A\AA");
for(int i=1; i<=objDss.Count; i++)
{string strDssName = objDss[i].Name;soDatasets objDts = objDss[i].Datasets;
for(int j=1; j<objDts.Count; j++ ){string strDtsName = objDts[j].Name;}
}

十、用C# 代码写出获取图层中的所有字段

soDataSources objDss = this.axSuperWorkspace1.Datasources;soDataSource objDs = objDss[1];string strDssName = objDs.Name;soDatasets objDts = objDs.Datasets;for(int i=1;i<=objDts.Count;i++){soDatasetVector objDV = (soDatasetVector)objDts[i];soRecordset objRecordset = objDV.Query("", true, null, "");if(objRecordset!=null){objRecordset.MoveFirst();while(!objRecordset.IsEOF()){for(int k=1;k<=objRecordset.FieldCount;k++){string strFieldInfo = objRecordset.GetFieldInfo(k).Name;string strValue = objRecordset.GetFieldValue(k).ToString();}objRecordset.MoveNext();}}ReleaseObjects(objDV);ReleaseObjects(objRecordset);}}

http://chatgpt.dhexx.cn/article/6XHQQPUx.shtml

相关文章

从零开始搭建一个GIS开发小框架(一)——基本框架

目录 1.概述1.1 项目背景1.2 传送门 2.技术选型&#xff1a;GMap.NET3.底图功能实现2.1 方式一&#xff1a;在线地图&#xff08;以高德为例&#xff09;2.2 greatmaps生成底图&#xff08;瓦片地图&#xff09; 3.搭建主程序&#xff0c;实现几个最基本功能3.1 定位到具体坐标…

三维GIS/GIS开发学习路线、软件和数据、视频资源推荐

GIS开发学习资源合集来了&#xff01;&#xff01;一份前所未有&#xff0c;全网都没有这么详细的资源合集来了&#xff0c;从基础入门视频、实战项目、GIS开发数据合集、开发软件等&#xff0c;囊括了GIS开发学习所以内容。 一、GIS和WebGIS简介&#xff1a; 什么是GIS&#x…

WEB GIS 开发基础概念汇总

WEB GIS 开发基础概念汇总 文章目录 WEB GIS 开发基础概念汇总1.基础概念2.技术框架2.1 常见技术概念汇总2.2 思维导图&#xff08;借用&#xff0c;感觉比较到位&#xff09; 3.内网离线WEB GIS搭建思路4.感谢 1.基础概念 WEB GIS是指依托互联网建立的地理信息服务系统&#…

GIS开发中的JavaScript的应用

JavaScript简介 JavaScript是一种很常见的高级编程语言&#xff0c;它和Java计算机语言没有任何联系。 JavaScript主要用于开发Web端的用户界面&#xff0c;比如在Web和移动GIS应用程序中就会用到JavaScript&#xff1b;它主要目标是构建前端应用程序&#xff0c;这些应用程序…

最全GIS开发编程语言汇总及分类

最近总有很多人关心GIS开发语言的问题&#xff0c;这个确实很重要&#xff0c;毕竟学习一门编程语言需要花费不少时间和精力&#xff0c;找不到合适GIS的编程语言意味着浪费时间。 这里将这些内容做一个详细的对比&#xff0c;大家可以根据自己的需要进行参考。 编程语言的特…

三维gis开发

如何简单制作cesium能渲染的三维地图 目录 一、下载高程数据 二、下载卫星影像数据 三、高程数据切片 四、卫星影像切片 五、cesium里渲染加载 一、下载高程数据 网站&#xff1a;地理空间数据云 1、注册登录 2、高级检索 3、数据集选择GDEMV2数据 4、空间位置根据需要…

GIS开发零基础入门:地图操作(附代码)

示例功能 本示例在加载了天地图矢量图层以及其注记图层的基础上&#xff0c;添加了地图视图的放大、缩小、跳转以及复位功能。 示例实现 本示例需要使用 【include-openlayers-local.js】 开发库实现&#xff0c;然后通过 setZoom(zoom)方法设置地图的缩放等级&#xff0c;通过…

第一章第1节-什么是GIS开发

1. 什么是GIS 要了解GIS开发, 首先我们要知道什么是GIS GIS: Geographic Information System 地理信息系统 地理信息系统&#xff08;GIS&#xff0c;Geographic Information System&#xff09;是一门综合性学科 结合了地理学与地图学以及遥感和计算机科学 详细内容参考: …

GIS开发实战图谱

总结了GIS开发的技术栈&#xff0c;罗列了应该了解的内容。 算是比较大而全的了&#xff0c;分理论、规范、数据、算法、软件、后端、前端、方向8个专项。 不求短期内全部都会&#xff0c;但还是一个比较好的学习框架和实践索引&#xff0c;如果基础好的话&#xff0c;两三年…

js中的设计模式之适配器模式

Js中的适配器模式 定义 将一个对象的接口适配成用户所期待的接口。 详细描述 适配器模式就是将不同对象的方法适配成可以对接或者统一调用的方式。它也是包装器的一种。 在生活中也有很多类似的例子&#xff0c;比如有的手机没有3.5耳机插口&#xff0c;所以就需要增加一个…

JavaScript设计模式之状态模式

什么是状态模式&#xff1f; 状态模式是一种非同寻常的优秀模式&#xff0c;它也许是解决某些需求场景的最好方法。虽然状态模式并不是一种简单到一目了然的模式&#xff08;它往往还会带来代码量的增加&#xff09;&#xff0c;但你一旦明白了状态模式的精髓&#xff0c;以后…

【JavaScript设计模式】观察者模式

观察者模式 文章目录 观察者模式&#x1f330;&#xff1a;理解观察者模式手写观察者模式必须先订阅再发布吗Vue数据双向绑定&#xff08;响应式系统&#xff09;的实现原理实现一个Event Bus/ Event Emitter在Vue中使用Event Bus来实现组件间的通讯 观察者模式与发布-订阅模式…

js设计模式

js设计模式 1.构造器函数 function Ema(name, age) {this.name nameconsole.log(this);//谁调用了this就指向谁this.sayfunction(){console.log(1)}}let ema1new Ema(zhangsna1)let ema2new Ema(李四1)console.log(ema1);//Ema obj {name:zhangsan1, Fun say}console.log(ema…

八大最常用的JavaScript设计模式

八大最常用的JavaScript设计模式 设计模式&#xff08;Design pattern&#xff09; 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目…

JavaScript 设计模式之组合模式

引 我们知道地球和一些其他行星围绕着太阳旋转&#xff0c;也知道在一个原子中&#xff0c;有许多电子围绕着原子核旋转。我曾经想象&#xff0c;我们的太阳系也许是一个更大世界里的一个原子&#xff0c;地球只是围绕着太阳原子的一个电子。而我身上的每个原子又是一个星系&a…

JavaScript设计模式

JavaScript设计模式 设计模式&#xff1a;代码经验的总结&#xff0c;是可重用的用于解决软件设计中一般问题的方案。 设计模式都是面向对象的。 学习设计模式&#xff0c;有助于写出可复用和可维护性高的程序。 常用的12种设计模式&#xff1a; 工厂模式 单例模式 原型模…

JavaScript中常见的十五种设计模式

一、单例模式 二、策略模式 三、代理模式 四、迭代器模式 五、发布—订阅模式 六、命令模式 七、组合模式 八、模板方法模式 九、享元模式 十、职责链模式 十一、中介者模式 十二、装饰者模式 十三、状态模式 十四、适配器模式 十五、外观模式 一、单例模式 1. …

JS 常用的六种设计模式介绍

常用设计模式 前言 我们经常听到一句话&#xff0c;“写代码要有良好的封装&#xff0c;要高内聚&#xff0c;低耦合”。究竟怎样的代码才算得上是良好的代码。 什么是高内聚&#xff0c;低耦合&#xff1f; 即五大基本原则&#xff08;SOLID&#xff09;的简写 高层模块不…

git工具统计项目的代码行数

1、git 查看代码的项目总行数 &#xff08;1&#xff09;打开Git终端&#xff0c;进入项目的根目录 git log --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add,…

小技巧之统计代码行数

欢迎关注我的微信公众号“人小路远”哦&#xff0c;在这里我将会记录自己日常学习的点滴收获与大家分享&#xff0c;以后也可能会定期记录一下自己在外读博的所见所闻&#xff0c;希望大家喜欢&#xff0c;感谢支持&#xff01; 搞了两个月&#xff0c;连搬带抄写出来的代码&a…