当前位置: 首页 > news >正文

网站建设丿选择金手指15常见网站性能优化手段

网站建设丿选择金手指15,常见网站性能优化手段,fw怎么做网站,工作室取名一、最简单的获取图层方式 通常情况下#xff0c;如果要获取当前地图中的图层#xff0c;可以用2种方法获取。 以下图为例#xff1a; 一种是【map.Layers】属性获取#xff0c;结果如下#xff1a; 可以看出#xff0c;这里只获取到了第一层级的图层#xff0c;图层组…一、最简单的获取图层方式 通常情况下如果要获取当前地图中的图层可以用2种方法获取。 以下图为例 一种是【map.Layers】属性获取结果如下 可以看出这里只获取到了第一层级的图层图层组下面的二级图层被忽略了显然这不是我们想要的。 另一种是通过map.GetLayersAsFlattenedList()方法获取结果如下 这次的结果不管是第一层级还是第二层级的图层都得到了。 但美中不足的是图层的结构被打散了比如说【FW】图层实际是【新建图层组】下的图层正确的表达为【新建图层组\FW】。 为什么说这才是正确的表达如果你用过GP工具就会发现输入数据是图层的话只有【新建图层组\FW】这种表达方式才是正确的如果输入的是【FW】将是无效的输入。 那边下一步要做的就是获取图层完整的路径结构。 二、获取图层完整的路径结构 由于SDK没有提供获取图层完整路径结构的接口那么这个事情就只能自己动手了。 思路其实也不难就是通过获取图层的父图层然后把父图层的名字加到结果中就行了直到父图层是地图为止。 代码如下 // 获取图层的完整名称 public static Listobject GetLayerFullName(this Object layer, Map map, string lyName) {Listobject result new Listobject();// 如果是图层if (layer is Layer){// 如果父对象是Map直接返回图层名if (((Layer)layer).Parent is Map){result.Add(layer);result.Add(lyName);return result;}else{// 如果父对象是不是Map则找到父对象图层并循环查找上一个层级Layer paLayer (Layer)((Layer)layer).Parent;Listobject list paLayer.GetLayerFullName(map, ${paLayer}\{lyName});return list;}}// 如果是独立表else if (layer is StandaloneTable){// 如果父对象是Map直接返回图层名if (((StandaloneTable)layer).Parent is Map){result.Add(layer);result.Add(lyName);return result;}else{// 如果父对象是不是Map则找到父对象图层并循环查找上一个层级Layer paLayer (Layer)((StandaloneTable)layer).Parent;Listobject list paLayer.GetLayerFullName(map, ${paLayer}\{lyName});return list;}}else{return null;} } 这里先把图层组排除只考虑一般图层的情况获取的图层列表如下 OK正是想要的结果。 但是其实这还并不完美因为这里没有考虑到更复杂的情况比如说同名图层。稍微调整一下 再试一下上面的方法导出结果为 可以看到同名图层都被列入列表但是名称都一样。如果这时候将其作为输入数据系统就无法认出到底该用哪一个就只会将第一个作为输入数据这显然也不是我们想要的。 于是我们要做的是给这些同名图组作一个标记作为输入数据的标识。 三、标识同名图层 在我们获取到图层列表后就可以对列表进行处理。 这里用到的方法是新建一个字典用来记录列表中每条记录的出现次数然后按出现的先后用数字后缀给它标记。 然后再找出只有一个记录也就是没有同名的图层把它的【1】的标记去掉就可以了。 代码如下 // 对重复要素进行数字标记 public static Liststring AddNumbersToDuplicates(this Liststring stringList) {// 使用Dictionary来跟踪每个字符串的出现次数Dictionarystring, int stringCount new Dictionarystring, int();// 遍历字符串列表for (int i 0; i stringList.Count; i){string currentString stringList[i];// 检查字符串是否已经在Dictionary中存在if (stringCount.ContainsKey(currentString)){// 获取该字符串的出现次数int count stringCount[currentString];// 在当前字符串后添加数字stringList[i] ${currentString}{count 1};// 更新Dictionary中的计数stringCount[currentString] count 1;}else{// 如果字符串在Dictionary中不存在将其添加并将计数设置为1stringCount.Add(currentString, 1);// 在当前字符串后添加数字stringList[i] ${currentString}{1};}}// 去除单个要素的数字标记foreach (var item in stringCount){if (item.Value 1){for (int i 0; i stringList.Count; i){if (stringList[i] item.Key 1){stringList[i] item.Key;}}}}// 返回字符串列表return stringList; } 运行后结果如下 可以看到同名图层的后面加上了数字标记OK大功造成。 .......并没有。 虽然标记出来了但是如果在使用GP工具的时候输入的是【规划用地1】这样的字符串也是无效的。 这时候就要转换一下思路了GP工具输入的不仅可以是字符串也可以是图层。因此我们要做的是将上面的字符串还原成图层。 四、将图层名字符串还原成图层 首先解释下为什么要这么麻烦先获取图层名再还原成图层进行GP运算直接将获取的图层作为输入数据不行吗 这是因为在工具中经常需要用户手动选择图层而真正执行的流程是在按下执行键后才进行的并不在同一个进程中。  现在的问题是怎么让上面获取到的图层名和它的实际图层一一对应上。 很简单再来一遍查找图层就行了 不过这次我们不仅要获取完整图名同时也要获取它的原始图层。 这里用一个字典来收集。代码如下 // 获取地图中的所有要素图层【带图层结构】【字典】 public static DictionaryFeatureLayer, string AllFeatureLayersDic(this Map map) {DictionaryFeatureLayer, string dic new DictionaryFeatureLayer, string();Liststring layers new Liststring();ListFeatureLayer lys new ListFeatureLayer();// 获取所有要素图层ListFeatureLayer featureLayers map.GetLayersAsFlattenedList().OfTypeFeatureLayer().ToList();foreach (FeatureLayer featureLayer in featureLayers){Listobject list featureLayer.GetLayerFullName(map, featureLayer.Name);layers.Add((string)list[1]);lys.Add(featureLayer);}// 标记重复layers.AddNumbersToDuplicates();// 加入字典for (int i 0; i lys.Count; i){dic.Add(lys[i], layers[i]);}// 返回值return dic; } 获取字典后对着图层名找到图层即可 // 查找要素图层 foreach (var layer in dicFeatureLayer) {if (layerFullName layer.Value){result.Add(layer.Key);} } OK这次是大功告成了完美闭环。
http://www.huolong8.cn/news/373475/

相关文章:

  • 北京市建设管理公司网站网站 内容 制作
  • 网站托管维护代运营百度网站的总结
  • 如何防止网站被盗网络营销是什么的必然产物
  • 公司网站建设合同模板大型网站建设部署方案
  • 网站开发什么叫前端后端精美图表网站推荐
  • 做网站品如何建立单位微信公众号
  • 汝城县网站建设公司织梦小说网站源码
  • 玛沁县wap网站建设公司公司网站建设意见
  • 网站开发验收过程徐州seo代理计费
  • 主流的网站建设软件网站建设源代码怎么搭建
  • 国外设计网站app有哪些自动化毕设题目网站开发
  • 彩票网站开发彩票网站搭建加工接单网
  • 网站建设培训教程新手入门到精通网站关键词数量
  • 怎么申请网站域名赚钱让别人做一个网站需要多少钱
  • 手机网站怎么提高关键词wordpress导航网
  • 做网站自学网页设计与制作考试题及答案
  • 昆明网站制作定制公司wordpress网页后台
  • 男女直接做的视频上那个网站本地网站搭建软件
  • 枣庄市网站建设上海做网站的公司联系方式
  • php做网站好吗电子商务专业就业方向及前景分析
  • 成都科技网站建设联系电话六安的网页制作
  • 便民工具 网站开发阿里云Windows建立WordPress
  • 杭州公司官方网站制作盐城企业做网站多少钱
  • 郑州制作网站怎么用云主机做网站
  • 做网站需要租服务器么免费建立网站哪个好
  • 网站的建立与运营云空间布置网站
  • 上海网站se0优化公司免费咨询律师回答在线
  • 数字化档案馆及网站的建设网站建设公司行业描述
  • 中山市小榄新意网站设计有限公司电子书新手学做网站
  • 温州市建设小学网站首页网络推广网站套餐