【ArcGIS Pro二次开发】(58):数据的本地化存储

在做村规工具的过程中,需要设置一些参数,比如说导图的DPI,需要导出的图名等等。

每次导图前都需要设置参数,虽然有默认值,但还是需要不时的修改。

在使用的过程中,可能会有一些常用的参数,希望能够保存下来,而不是每次都去修改默认值。

于是,想到可以将这些参数保存到本地文件,然后下次打开的时候就可以自动读取本地文件上的数据。这样就会方便一些。


一、实现方法

至于要怎么实现,首先想到的是要保存的时候,将已经设置的参数写到一个txt文件里,然后需要的时候读取,应该是比较容易实现的。

做到一半,发现要保存各种格式的数据还挺麻烦的。

于是去网上搜索了一圈,发现了一个好东西:

C# 对象存储_c#对象存储_猿长大人的博客-CSDN博客

这位博主很专业,用的是【ApeFree.DataStore】,是一个开源工具,上面的文章介绍的很详细,想深入了解的可以去看看。

当然,我业余的,用不到这么多内容,只需要简单的保存和读取即可。

以村规参数设置为例:

这是初始数据参数。修改一下DPI和图纸列表,并点击确定关闭窗口:

然后,再重新打开设置窗口:

可以看到,上次保存的参数都在,没有被重置。因为这些数据都被保存在本地,保存文件是一个txt文件:


二、实现流程

首先,需要安装【ApeFree.DataStore】。

安装好后,先创建一个【Settings】,可以设置初始值。

public class Settings
{/// 参数设置// 导出图纸的DPIpublic int dpi { get; set; } = 300;// 导出图纸列表public List<string> listPic { get; set; } = new List<string>() { };
}

在初始化阶段创建一个store:

public partial class VgSetting : ArcGIS.Desktop.Framework.Controls.ProWindow
{// 设置一个storeprivate LocalStore<Settings> store;.........
}
public VgSetting()
{InitializeComponent();combox_pic.Items.Add("现状用地图");combox_pic.Items.Add("规划用地图");combox_pic.Items.Add("管制边界图");// 创建数据存储文件string savePath = @"C:\ProSDKSettings\Settings.txt";store = StoreFactory.Factory.CreateLocalStore<Settings>(new ApeFree.DataStore.Local.LocalStoreAccessSettings(savePath));
}

在窗体加载的时候,读取store里的数据:

private void Form_Load(object sender, EventArgs e)
{try{// 加载storestore.Load();// 参数获取textDPI.Text = store.Value.dpi.ToString();listBox.Items.Clear();foreach (var item in store.Value.listPic){listBox.Items.Add(item.ToString());}}catch (Exception ee){MessageBox.Show(ee.Message + ee.StackTrace);return;}
}

在窗体关闭的时候,把store里的数据存入本地txt文件即可:

// 窗体关闭
private void Form_Closed(object sender, EventArgs e)
{try{// 保存参数store.Value.dpi = int.Parse(textDPI.Text);store.Value.listPic = listBox.Items.Cast<string>().ToList();// 保存storestore.Save();}catch (Exception ee){MessageBox.Show(ee.Message + ee.StackTrace);return;}
}

以上即可实现工具的功能,【ApeFree.DataStore】还有不少东西,后面再慢慢学习吧。


三、工具文件分享

我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:

【ArcGIS Pro二次开发】:CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/85390.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天一道leetcode:139. 单词拆分(动态规划中等)

今日份题目&#xff1a; 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例1 输入: s "leetcode", …

【解密算法:时间与空间的博弈】

本章重点 ​​什么是数据结构&#xff1f; 什么是算法&#xff1f; 算法效率 时间复杂度 空间复杂度 常见时间复杂度以及复杂度oj练习 1. 什么是数据结构&#xff1f; 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系…

Docker 数据管理

文章目录 前言1、Dcoker 文件体系2、volume挂载案例2.1、挂载运行一个容器实例方法1方法2 3、volumes-from 案例4、备份/恢复数据卷5、删除数据卷 前言 为什么要有数据管理&#xff1f; 因为&#xff1a; Docker 是不提供持久化的 &#xff0c;容器是不稳定的&#xff1b;一个…

TCP 三次握手,四次挥手

1、三次握手 第一次握手 SYN 等于1&#xff0c;SeqX 第二次握手 SYN等于1 ACK等于1&#xff0c;SeqY&#xff0c;AckX1 第三次SYN等于0 ACK等于1&#xff0c;SeqX1&#xff0c;AckY1 ackRow都是对应请求seqraw&#xff0c;三次握手后&#xff0c;Seq就是服务器前一个包中的ac…

【Git】—— 标签管理

目录 &#xff08;一&#xff09;理解标签 1、作用 &#xff08;二&#xff09;创建标签 &#xff08;三&#xff09;操作标签 1、删除标签 2、推送标签 3、删除远程标签 &#xff08;一&#xff09;理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的…

Java基础篇--运算符

目录 算术运算符 赋值运算符 比较运算符 逻辑运算符 条件运算符&#xff08;?:&#xff09; instanceof 运算符 Java运算符优先级 在程序中经常出现一些特殊符号&#xff0c;如、-、*、、>等&#xff0c;这些特殊符号称作运算符。运算符用于对数据进行算术运算、赋值…

flowable-ui部署(6.80)

不使用tomcat直接看最后边 前置条件&#xff1a;Apache Tomcat/9.0.78版本及以下 https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78-windows-x64.zip 一、下载资源 https://github.com/flowable/flowable-engine/releases/download/flowable-6.…

vue3+ts使用antv/x6

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

TCP网络服务器设计

最近设计了一个网络服务器程序&#xff0c;对于4C8G的机器配置&#xff0c;TPS可以达到5W。业务处理逻辑是简单的字符串处理。服务器接收请求后对下游进行类似广播的发送。在此分享一下设计方式&#xff0c;如果有改进思路欢迎大家交流分享。 程序运行在CentOS7.9操作系统上&a…

yum 安装本地包 rpm

有时直接yum install 有几个包死活下不下来 根据网址&#xff0c;手动下载&#xff0c;下载后上传至 centos 然后运行 sudo yum localinstall xxx.rpm 即可安装 参考 https://blog.csdn.net/weiguang1017/article/details/52293244

利用状态监测和机器学习提高冷却塔性能的具体方法

在现代工业生产中&#xff0c;冷却塔扮演着至关重要的角色&#xff0c;它们的性能直接影响着工艺流程的稳定性和效率。为了确保冷却塔的正常运行和减少系统故障&#xff0c;状态监测和机器学习成为了关键技术。 图.冷却塔&#xff08;PreMaint&#xff09; 在前文《基于人工智…

开发工具IDEA的下载与初步使用【各种快捷键的设置,使你的开发事半功倍】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于IDEA的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.IDEA的简介以及优势 二.IDEA的下载 1.下…

Android应用开发(35)SufaceView基本用法

Android应用开发学习笔记——目录索引 参考Android官网&#xff1a;https://developer.android.com/reference/android/view/SurfaceView 一、SurfaceView简介 SurfaceView派生自View&#xff0c;提供嵌入视图层次结构内部的专用绘图表面&#xff0c;SurfaceView可以在主线程之…

opencv基础60-用分水岭算法cv2.distanceTransform()实现图像分割与提取原理及示例

在图像处理的过程中&#xff0c;经常需要从图像中将前景对象作为目标图像分割或者提取出来。例如&#xff0c;在视频监控中&#xff0c;观测到的是固定背景下的视频内容&#xff0c;而我们对背景本身并无兴趣&#xff0c;感兴趣的是背景中出现的车辆、行人或者其他对象。我们希…

从安装 Seata 开始的分布式事务之旅 springboot集成seata

从安装 Seata 开始的分布式事务之旅 介绍什么是 Seata&#xff1f; 安装 Seata Server下载 Seata Server 发行版配置Seata解压文件配置Seata的yml文件把配置文件config.txt加载到nacos上修改config.txt文件加载到nacos上 启动Seata服务正常启动查看启动日志打开控制台页面 启动…

限流在不同场景的最佳实践

目录导读 限流在不同场景的最佳实践1. 前言2. 为什么要限流3. 有哪些限流场景3.1 限流场景分类3.2 限流与熔断降级之间的关系3.3 非业务限流3.4 业务限流 4. 有哪些限流算法4.1 计数器限流算法4.2 漏桶限流算法4.3 令牌桶限流算法4.4 滑动时间窗限流算法4.5 限流算法选型 5. 限…

NPM包的安装、更新、卸载

目录 1、下载安装全局包 2、解决全局安装包时的EACCES权限错误 2.1 重新安装NPM 2.2 手动更改npm的默认目录 3、更新从注册表下载的包 3.1 更新本地包 3.2 更新全局安装的软件包 3.3 确定哪些全局包需要更新 3.4 更新单个全局包 3.5 更新所有全局安装的软件包 4、在项…

VLAN监控及常见问题排查

局域网&#xff0c;我们通常称为LAN&#xff0c;是一种由基于同一地理位置的设备组成的网络&#xff0c;可实现它们之间的通信&#xff0c;局域网的虚拟对应物是虚拟局域网或 VLAN。VLAN 增强了 LAN&#xff0c;提供了进行更改的灵活性、更高的可扩展性和更好的安全性。 使用 …

使用 Gradio 构建生成式 AI 应用程序(一): 图片内容读取app

今天我们来学习DeepLearning.AI的在线课程&#xff1a;Building Generative AI Applications with Gradio&#xff0c;该课程主要讲述利用gradio来部署机器学习算法应用程序, 今天我们来学习第一课&#xff1a;Image captioning app&#xff0c;该课程主要讲述如何从图片中读取…

JavaScript 操作历史记录api怎样使用 JavaScript

JavaScript 操作历史记录api怎样使用 JavaScript History 是 window 对象中的一个 JavaScript 对象&#xff0c;它包含了关于浏览器会话历史的详细信息。你所访问过的 URL 列表将被像堆栈一样存储起来。浏览器上的返回和前进按钮使用的就是 history 的信息。 History 对象包含…