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

河南高端网站建设一份完整的营销策划书

河南高端网站建设,一份完整的营销策划书,开原网站制作,免费教育网站建设之前做过一个【三调土地利用现状分类面积汇总】的工具,在流程中使用了面积平差的方法。 考虑了在其它场合可能也需要进行面积平差,因此单独提取出来作为一个工具。 平差实现的方法如下图: 主要的计算过程如上图所示,算出总面积差…

之前做过一个【三调土地利用现状分类面积汇总】的工具,在流程中使用了面积平差的方法。

考虑了在其它场合可能也需要进行面积平差,因此单独提取出来作为一个工具。

平差实现的方法如下图:

主要的计算过程如上图所示,算出总面积差值后,就开始平差计算。

平差计算也分2步。

第一步按比例分配。

如果还有剩下的未分配值,则再进行第二步按面积由大到小排序分摊。


一、要实现的功能

 

如上图所示,在【数据处理】组—【要素综合】面板下,点击【平差工具】工具。

在弹出的工具框中,分别输入参数:

1、输入地块要素图层。

2、输入用来计算面积平差计算字段。必须是可编辑的双精度字段

3、输入范围图层。这个范围必须和图斑的范围一致,简单的验算方法,两个要素互相擦除得到的是空值。

4,5,6、面积的几个参数设置。

生成结果如下:

汇总统计一下:

对照一下范围要素计算出来的面积:

完全一致,完美。


二、实现流程

直接上代码。

代码中存在例如【Arcpy.FeatureToLine(area, area_line);】等代码块,这是预封装好的arcpy地理处理方法,具体写法可以参看:

【ArcGIS Pro二次开发】(9):GeoProcessing工具和自定义工具的调用-CSDN博客

// 裁剪平差计算public static string Adjustment(string yd, string area, string clipfc_sort, string area_type = "投影面积", string unit = "平方米", int digit = 2){string def_gdb = Project.Current.DefaultGeodatabasePath;string area_line = def_gdb + @"\area_line";string clipfc = def_gdb + @"\clipfc";string clipfc_sta = def_gdb + @"\clipfc_sta";string clipfc_updata = def_gdb + @"\clipfc_updata";// 单位系数设置double unit_xs = 0;if (unit == "平方米") { unit_xs = 1; }else if (unit == "公顷") { unit_xs = 10000; }else if (unit == "平方公里") { unit_xs = 1000000; }else if (unit == "亩") { unit_xs = 666.66667; }// 计算图斑的投影面积和图斑面积Arcpy.Clip(yd, area, clipfc);Arcpy.AddField(clipfc, area_type, "DOUBLE");Arcpy.AddField(area, area_type, "DOUBLE");if (area_type == "投影面积"){Arcpy.CalculateField(clipfc, "投影面积", $"round(!shape_area!/{unit_xs},{digit})");Arcpy.Statistics(clipfc, clipfc_sta, area_type, "");          // 汇总// 计算范围的投影面积和图斑面积Arcpy.CalculateField(area, area_type, $"round(!shape_area!/{unit_xs},{digit})");}else if (area_type == "图斑面积"){Arcpy.CalculateField(clipfc, area_type, $"round(!shape.geodesicarea!/{unit_xs},{digit})");Arcpy.Statistics(clipfc, clipfc_sta, area_type, "");          // 汇总// 计算范围的投影面积和图斑面积Arcpy.CalculateField(area, area_type, $"round(!shape.geodesicarea!/{unit_xs},{digit})");}// 获取投影面积,图斑面积double mj_fc = double.Parse(GisTool.GetCellFromPath(clipfc_sta, $"SUM_{area_type}", ""));double mj_area = double.Parse(GisTool.GetCellFromPath(area, area_type, ""));// 面积差值double dif_mj = Math.Round(Math.Round(mj_area, digit) - Math.Round(mj_fc, digit), digit);// 空间连接,找出变化图斑(即需要平差的图斑)Arcpy.FeatureToLine(area, area_line);Arcpy.SpatialJoin(clipfc, area_line, clipfc_updata);Arcpy.AddField(clipfc_updata, "平差", "TEXT");Arcpy.CalculateField(clipfc_updata, "平差", "''");// 排序Arcpy.Sort(clipfc_updata, clipfc_sort, "Shape_Area DESCENDING", "UR");double area_total = 0;// 获取Tableusing Table table = clipfc_sort.TargetTable();// 汇总变化图斑的面积using (RowCursor rowCursor = table.Search()){while (rowCursor.MoveNext()){using (Row row = rowCursor.Current){var va = int.Parse(row["Join_Count"].ToString());if (va == 1)     // 如果是变化图斑{area_total += double.Parse(row[area_type].ToString());}}}}// 第一轮平差double area_pc_1 = 0;using (RowCursor rowCursor1 = table.Search()){while (rowCursor1.MoveNext()){using (Row row = rowCursor1.Current){var va = int.Parse(row["Join_Count"].ToString());if (va == 1){double area_1 = double.Parse(row[area_type].ToString());// 单个图斑需要平差的值double area_pc = Math.Round(area_1 / area_total * dif_mj, digit);area_pc_1 += area_pc;// 面积平差row[area_type] = area_1 + area_pc;}row.Store();}}}// 计算剩余平差面积,进行第二轮平差double area_total_next = Math.Round(dif_mj - area_pc_1, digit);using (RowCursor rowCursor2 = table.Search()){while (rowCursor2.MoveNext()){using (Row row = rowCursor2.Current){// 最小平差值double diMin = Math.Round(Math.Pow(0.1, digit), digit);var va = int.Parse(row["Join_Count"].ToString());if (va == 1){double area_2 = double.Parse(row[area_type].ToString());// 面积平差if (area_total_next > 0){row[area_type] = area_2 + diMin;area_total_next -= diMin;}else if (area_total_next < 0){row[area_type] = area_2 - diMin;area_total_next += diMin;}row.Store();}}}}// 删除中间要素List<string> all = new List<string>() { "area_line", "clipfc", "clipfc_sta", "clipfc_updata" };foreach (var item in all){Arcpy.Delect(def_gdb + @"\" + item);}// 返回值return clipfc_sort;}

除去前半部分的业务流程。重点在后面的两轮平差计算,需仔细阅读。


三、工具文件分享

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

【ArcGIS Pro二次开发】:CC工具箱icon-default.png?t=N7T8https://blog.csdn.net/xcc34452366/article/details/131506345

http://www.dtcms.com/wzjs/278506.html

相关文章:

  • 福田网站建设龙岗网站建设seo搜索引擎优化平台
  • 暴雪被谁收购了银川seo优化
  • 网站开发应注意哪些问题seo网站有哪些
  • 新网站多久会被百度收录广告免费推广网
  • 烟台网站建设网站百度快速seo软件
  • 黑龙江网站备案管理局交换友情链接的平台有哪些
  • wordpress自动采集导入重庆网站排名优化教程
  • 泰安网红打卡景点重庆seo公司排名
  • 九江网站建设优化公司网络营销公司怎么注册
  • 网站建设的实习报告月嫂免费政府培训中心
  • 鞍山做网站比较好的公司郑州网站推广公司咨询
  • 网站建设登录页面怎么写廊坊seo优化排名
  • pc端与手机端网站开发的区别关联词有哪些小学
  • 网站建设免费汕头seo外包公司
  • 做网站怎么外链生成
  • 网站建设免费按词收费谷歌官方seo入门指南
  • 可以给别人做ps设计的网站网站建设小程序开发
  • 哪里网站可以做微信头像品牌网络seo方案外包
  • 保定哪家公司做网站网络优化大师下载
  • 怎么制作手机个人如何优化网站有哪些方法
  • 石家庄网站推广青岛seo外包公司
  • 一个网站的欢迎页怎样做成都关键词排名推广
  • 优质的营销网站建设制作一个简单的网站
  • 学做网站论坛vip教程网络推广方案范文
  • 深圳做网站有哪些刚刚济南发通知
  • 怎么做淘客网站企业整站推广
  • himall多用户商城系统杭州seo百度关键词排名推广
  • 可以玩h5的网站宁波seo外包服务商
  • java网站开发详解深圳优化服务
  • 真人视讯网站开发上海seo网站推广