SuperMap开发入门4——保存的坑
工作空间、地图等的打开、保存、删除是最基本的操作,可我居然卡在保存工作空间的问题上了。
功能需求
需求很简单:打开工作空间中的某一地图,缩放一下,保存地图。(下次打开时,已经缩放到上次修改过的地方)
想得简单
按超图的模式,工作空间(Workspace)是通过其中的数据源集合对象( Datasources),地图集合对象( Maps)来管理其下的数据源和地图。工作空间中的地图集合( Maps)中存储的是地图的配置信息,如地图包含图层的个数,图层引用的数据集,地图范围,背景风格等。
那么我的操作是先保存Map,再保存Workspace,而Map没有Save相关方法,顺利找到了Workspace的Save,可能是Workspace保存时,会对所有的Map,Layout, Datasource等进行检查保存吧,经过测试,然并没有!
桌面测试
由于对桌面软件还不熟悉,于是,在桌面软件里来测试一下:
当缩放地图后,关闭地图窗口会弹出如下提示(菜单栏或右键并没有找到保存地图的按键,只能关闭地图窗口时,才有此提示)
如果不关闭修改过的地图窗口,直接保存工作空间,也会提示保存地图。
还有自动保存功能。
很显然,应该是我没有找到地图保存接口和方法。
官方帮助
官方的帮助文档,可谓是唯一的"药",可并不奏效。在Workspace类有一个示例代码:
public void OpenWorkspace()
{
// 打开工作空间,取出工作空间中名为“World”的数据集,查询其描述信息
Workspace workspace = new Workspace();
WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo();
workspaceConnectionInfo.Type=WorkspaceType.SXWU;
String file = @"D:\world\world.sxwu";
workspaceConnectionInfo.Server=file;
workspace.Open(workspaceConnectionInfo);
Datasource datasource = workspace.Datasources[0];
DatasetVector dataset = (DatasetVector) datasource.Datasets["World"];
Console.WriteLine("数据集的描述信息为:"+dataset.Description); // 保存工作空间
workspace.Save();
// 另存工作空间
String file_saveAs = "D:/world/world_saveAs.sxwu";
WorkspaceConnectionInfo workspaceConnectionInfo_saveAs = new WorkspaceConnectionInfo(file_saveAs);
if (workspace.SaveAs(workspaceConnectionInfo_saveAs))
{
Console.WriteLine("另存工作空间成功!");
} // 释放资源
dataset.Close();
workspaceConnectionInfo.Dispose();
workspaceConnectionInfo_saveAs.Dispose();
workspace.Close();
workspace.Dispose();
}
这里面的玄机真的很深,官方也是这样保存的,难道与数据、环境有关?经过测试,然并没有!
技术支持
无奈,请求官方的技术支持,终于告诉我保存地图的奥秘:
string xml = map.ToXML();
mapctrl.Maps.SetMapXML(mapName, xml);
workspace.Save();
我可以理解地图是由XML配置而成,展现时按规则解析即可,但这个保存方式符合哪国人的习惯?workspace的Save方法为什么不把前两步包括进去,不包括为什么没有任何官方资料这样介绍?6C的保存接口已经废弃;记住9D的保存方式,不要问为什么;希望以后的10X不要再进行大幅度的修改,或者修改了说一声。
SuperMap开发入门4——保存的坑的更多相关文章
- SuperMap开发入门2——环境部署
由于超图的相关资源比较少,可参考官方提供的<SuperMap iDesktop 9D安装指南>和<SuperMap iObjects .NET 9D安装指南>完成应用软件和开发 ...
- SuperMap开发入门1——资源下载
前言(废话) 由于项目需要,我们将被改用超图(SuperMap)平台进行GIS开发.记忆中,我还是在学生时代使用过超图软件5.0版本,安装包只有50M,这也是超图与学校有合作关系的缘故. 在以后的学习 ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- 小程序框架WePY 从入门到放弃踩坑合集
小程序框架WePY 从入门到放弃踩坑合集 一点点介绍WePY 因为小程序的语法设计略迷, 所以x1 模块化起来并不方便, 所以x2 各厂就出了不少的框架用以方便小程序的开发, 腾讯看到别人家都出了框架 ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- 报表引擎API开发入门— EJB程序数据源
我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了.数据连接不需要直接访问数据库,而是使用EJB做为数据源.FR通过定义程序数据集使用EJB的相关类获取到EJB数据 ...
- JavaWeb学习总结(一)——JavaWeb开发入门
http://www.cnblogs.com/xdp-gacl/p/3729033.html 只为成功找方法,不为失败找借口! JavaWeb学习总结(一)--JavaWeb开发入门 一.基本概念 1 ...
- 基于Nodejs生态圈的TypeScript+React开发入门教程
基于Nodejs生态圈的TypeScript+React开发入门教程 概述 本教程旨在为基于Nodejs npm生态圈的前端程序开发提供入门讲解. Nodejs是什么 Nodejs是一个高性能Ja ...
随机推荐
- AngularJS中module的导入导出
关于AngularJS中module的导入导出,在Bob告诉我之前还没写过,谢谢Bob在这方面的指导,给到我案例代码. 在AngularJS实际项目中,我们可能需要把针对某个领域的各个方面放在不同的m ...
- SUSE Linux – Zypper 命令示例
來源:http://www.linuxidc.com/Linux/2014-11/109214.htm Zypper是SUSE Linux中用于安装,升级,卸载,管理仓库.进行各种包查询的命令行接口. ...
- C++ 继承体系中的名称覆盖
首先一个简单的样例: int x; int f() { double x; cin >> x; return x; } 在上述代码中.函数f的局部变量x掩盖了全局变量x.这得从 " ...
- easyui-combobox 设置option内容不换行
使用easyui 1.4.4 1 2 3 4 5 6 7 8 <select id="hotalid" class="easyui-combobox" d ...
- [Web 前端] Jquery 复制元素,并修改属性, 追加到另一个元素后面
cp from : https://blog.csdn.net/cooledi/article/details/52813668 jquery 复制元素,并修改属性 $('#ID').clone() ...
- [Android Pro] 终极组件化框架项目方案详解
cp from : https://blog.csdn.net/pochenpiji159/article/details/78660844 前言 本文所讲的组件化案例是基于自己开源的组件化框架项目g ...
- 修改服务的运行权限,解决SVN Post Commit问题
先来看一下错误现象 之前在Windows Server中安装了VirtualSVN Server,然后设置了Post Commit Hooks,在提交代码到版本库之后,将代码check到本地的一个Se ...
- 在Windows7/8/10上,安装IIS
(1)打开控制面板 (2)找到 程序和功能 (3)打开或者关闭Windows功能,找到Internet信息服务,确保 应用程序开发功能 .NET相关模块选中 (4)确保“静态内容”选中 (5)点击确定 ...
- Spring Test, JUnit, Mockito, Hamcrest 集成 Web 测试
关于Spring 3.2 1. Spring 3.2 及以上版本自动开启检测URL后缀,设置Response content-type功能, 如果不手动关闭这个功能,当url后缀与accept头不一致 ...
- caffe添加python数据层
caffe添加python数据层(ImageData) 在caffe中添加自定义层时,必须要实现这四个函数,在C++中是(LayerSetUp,Reshape,Forward_cpu,Backward ...