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

南昌网站建设方案优化php 网站建设方案

南昌网站建设方案优化,php 网站建设方案,上海网站建设300,惠州做网站的公司哪家好最近一个小伙伴提了这么一个需求#xff0c;需要把TXT和SHP进行互转。 这种TXT文件其实遇到了好几个版本#xff0c;都有一点小差异。之前已经做过一个TXT转SHP的工具#xff0c;但好像不适用。于是针对这个版本#xff0c;做了互转的2个工具。 【SHP转TXT】 一、要实现的…最近一个小伙伴提了这么一个需求需要把TXT和SHP进行互转。 这种TXT文件其实遇到了好几个版本都有一点小差异。之前已经做过一个TXT转SHP的工具但好像不适用。于是针对这个版本做了互转的2个工具。 【SHP转TXT】 一、要实现的功能 如上图所示在【数据处理】组—【TXT相关】面板下点击【进出平衡SHP转TXT】工具。 在弹出的工具框中分别输入参数 1、输入SHP文件所在的文件夹。 2、输入TXT文件所在的文件夹。 3、这里不用填写会自动列出【1】中所有的shp要素不想转换的可以点复选框取消。 4、选择地块名称和地块用途对应的字段值会写入TXT文件中。 生成结果如下 二、实现流程 核心代码直接贴上注释已经写得比较清楚了。 需要注意的是这里获取要素的点集信息我采取了通过要素的JSON文本来截取的做法原因是不知道怎么用API来获取所以用了这么个取巧的方法以后要是学会了再改吧。这也是无奈之举要学的东西还很多。 foreach (string fullPath in list_shpPath) {// 初始化写入txt的内容string txt_all [地块坐标] \r;string shp_name fullPath[(fullPath.LastIndexOf(\) 1)..]; // 获取要素名string shp_path fullPath[..(fullPath.LastIndexOf(\))]; // 获取shp名// 打开shpFileSystemConnectionPath fileConnection new FileSystemConnectionPath(new Uri(shp_path), FileSystemDatastoreType.Shapefile);using FileSystemDatastore shapefile new FileSystemDatastore(fileConnection);// 获取FeatureClassFeatureClass featureClass shapefile.OpenDatasetFeatureClass(shp_name);using (RowCursor rowCursor featureClass.Search()){int featureIndex 1;while (rowCursor.MoveNext()){using (Feature feature rowCursor.Current as Feature){// 获取地块名称地块性质Row row feature as Row;string ft_name ;string ft_type ;var areaName row[field_mc];var areaType row[field_yt];if (areaName ! null) { ft_name areaName.ToString(); }if (areaType ! null) { ft_type areaType.ToString(); }// 获取面要素的JSON文字Geometry polygon feature.GetShape();string js polygon.ToJson().ToString();// 解析JSON文字// 取坐标点文字string cod js[(js.IndexOf([[[) 3)..js.IndexOf(]]])];// 坐标点列表Liststring list_xy cod.Split(]]).ToList();for (int i 0; i list_xy.Count; i){// 坐标行Liststring xy_detils list_xy[i].Replace(,[[, ).Split(],[).ToList();// 加一行titleint count xy_detils.Count; // 点的个数string title ${count},{ft_name},面,{ft_type}, \r;txt_all title;for (int j 0; j xy_detils.Count; j){// 点序号int index j 1;if (index xy_detils.Count) { index 1; }// XY坐标点string x Math.Round(double.Parse(xy_detils[j].Split(,)[0]), 4).ToString();string y Math.Round(double.Parse(xy_detils[j].Split(,)[1]), 4).ToString();// 加入文本txt_all $J{index},{featureIndex},{x},{y}\r;}}}featureIndex;}}// 写入txt文件string txtPath ${folder_txt}\{shp_name.Replace(.shp, )}.txt;if (File.Exists(txtPath)){File.Delete(txtPath);}File.WriteAllText(txtPath, txt_all); }【TXT转SHP】 一、要实现的功能 如上图所示在【数据处理】组—【TXT相关】面板下点击【进出平衡TXT转SHP】工具。 在弹出的工具框中分别输入参数 1、输入TXT文件所在的文件夹。 2、输入SHP文件所在的文件夹。 3、选择正确的坐标系。 4、这里不用填写会自动列出【1】中所有的TXT文件不想转换的可以点复选框取消。 生成结果如下 二、实现流程 TXT转SHP之前已经已经写过一篇文章可以参看 【ArcGIS Pro二次开发】(41)勘测定界txt文件转数据库(批量)https://blog.csdn.net/xcc34452366/article/details/131309938不过文章中用的TXT文件和今天这个有些不同代码也就不一样但思路是一致的。 这里只放核心代码代码中用到一些自定义方法和之前是一样的引用就不再一一放上 foreach (string txtPath in list_txtPath) {string shp_name txtPath[(txtPath.LastIndexOf(\) 1)..].Replace(.txt, ); // 获取要素名pw.AddProcessMessage($创建要素{shp_name}, 10, time_base, Brushes.Black);// 创建一个空要素Arcpy.CreateFeatureclass(shpPath, shp_name, POLYGON, spatial_reference);// 新建字段Arcpy.AddField(${shpPath}\{shp_name}.shp, 地块名称, TEXT);Arcpy.AddField(${shpPath}\{shp_name}.shp, 地块性质, TEXT);// 打开shpFileSystemConnectionPath fileConnection new FileSystemConnectionPath(new Uri(shpPath), FileSystemDatastoreType.Shapefile);using FileSystemDatastore shapefile new FileSystemDatastore(fileConnection);// 获取FeatureClassFeatureClass featureClass shapefile.OpenDatasetFeatureClass(shp_name);// 预设文本内容string text ;// 获取txt文件的编码方式Encoding encoding ToolManager.GetEncodingType(txtPath);// 读取【ANSI和UTF-8】的不同ANSI为0UTF-8为3// 我也不知道具体原理只是找出差异点作个判断以后再来解决这个问题------int encoding_index int.Parse(encoding.Preamble.ToString().Substring(encoding.Preamble.ToString().Length - 2, 1));if (encoding_index 0) // ANSI编码的情况{Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);using (StreamReader sr new StreamReader(txtPath, Encoding.GetEncoding(GBK))) { text sr.ReadToEnd(); }}else if (encoding_index 3) // UTF8编码的情况{using (StreamReader sr new StreamReader(txtPath, Encoding.UTF8)) { text sr.ReadToEnd(); }}// 文本中的【】符号放前string updata_text ChangeSymbol(text);// 获取要素txt列表的地块标记Liststring Parts GetParts(updata_text);for (int i 0; i Parts.Count; i){// 地块编号、地块性质string dkmc ;string dkxz ;// 根据换行符分解坐标点文本Liststring lines Parts[i].Split().ToList();// 创建空坐标点集合var vertices_list new ListListCoordinate2D();for (int j 1; j lines.Count; j){var vertices new ListCoordinate2D();vertices_list.Add(vertices);}// 构建坐标点集合for (int k 1; k lines.Count; k){Liststring list_point lines[k].Split(\r).ToList();foreach (var point in list_point){if (!point.Contains(,)) // 跳过无坐标部份的文本{continue;}else if (!point.StartsWith(J)) // 名称、地块编号、功能文本{dkmc point.Split(,)[1];dkxz point.Split(,)[3];}else // 点坐标文本{double lat double.Parse(point.Split(,)[2]); // 经度double lng double.Parse(point.Split(,)[3]); // 纬度vertices_list[k - 1].Add(new Coordinate2D(lat, lng)); // 加入坐标点集合}}}/// 构建面要素// 创建编辑操作对象EditOperation editOperation new EditOperation();editOperation.Callback(context {// 获取要素定义FeatureClassDefinition featureClassDefinition featureClass.GetDefinition();// 创建RowBufferusing RowBuffer rowBuffer featureClass.CreateRowBuffer();// 写入字段值rowBuffer[地块名称] dkmc;rowBuffer[地块性质] dkxz;PolygonBuilderEx pb new PolygonBuilderEx(vertices_list[0]);// 如果有空洞则添加内部Polygonif (vertices_list.Count 1){for (int i 0; i vertices_list.Count - 1; i){pb.AddPart(vertices_list[i 1]);}}// 给新添加的行设置形状rowBuffer[featureClassDefinition.GetShapeField()] pb.ToGeometry();// 在表中创建新行using Feature feature featureClass.CreateRow(rowBuffer);context.Invalidate(feature); // 标记行为无效状态}, featureClass);// 执行编辑操作editOperation.Execute();}// 保存编辑Project.Current.SaveEditsAsync(); } 三、工具文件分享 我把工具都集合成工具箱不再单独放单个工具可以到这里下载完整工具箱会不断更新 【ArcGIS Pro二次开发】CC工具箱https://blog.csdn.net/xcc34452366/article/details/131506345PS可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。
http://www.zqtcl.cn/news/712621/

相关文章:

  • wordpress国内视频网站吗东昌府区住房和城乡建设局网站
  • 网站免费网站的方法做网站优化词怎么选择
  • 丹东市住房和城乡建设网站seo营销型网站推广
  • 企业网站维护怎么做网站空间用万网的 域名不在万网
  • 嘉定企业网站开发建设网站建设常识网站建设技术知识大全
  • wordpress网站导航网站上如何做问卷调查
  • 南通网站搜索引擎优化海外学校网站建设
  • 个人站长适合做什么网站跨境电商数据分析网站
  • seo网站怎么优化影视制作公司简介
  • 如何制作一个自己的网页网站合肥网络优化公司有几家
  • 做网站的公司一年能赚多少钱织梦修改网站背景颜色
  • 门户网站建设的报价淘宝联盟怎么建网站
  • 常用的网站开发公司注册名称怎么起
  • j动态加载网站开发南京建设网站公司哪家好
  • 云南网站建设工具wordpress防御ip攻击
  • 珠海市网站建设开发公司站长工具whois查询
  • 网站备案icp过期网站建设好了怎么做推广
  • 网站自动识别手机代码网络服务器是指
  • 做自媒体那几个网站好点乐清做网站建设
  • 如何制作自己的网站在线观看2021网页源码
  • 电子商务网站建设百度文库工业设计公司招聘
  • 网站seo测评餐厅设计公司餐厅设计
  • 深圳网站seo推广wordpress swf 上传
  • 织梦做双语网站怎么做制作网站的教程
  • 公司网站开发的国内外研究现状个人网页设计大全
  • 做一个网站人员网站建设及推广优化
  • 胶州市城乡建设局网站能进封禁网站的浏览器
  • 网站做几级等保荣耀商城手机官网
  • 营销网站费用渭南网站建设公司
  • wordpress主题集成插件下载网站如何做360优化