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

基于arcpro3.0.2的北斗网格生成简介

基于arcpro3.0.2的北斗网格生成简介

在这里插入图片描述

采用2000坐标系、可基于行政区范围
软件可生成第一级到第十级北斗网格经纬跨度                  等分         约赤道处距离
第一级 6X4度                      60 和A~V         660      km
第二级 30X30分                    12X8             55.66    km
第三级 15X10分                    2X3              27.83    km
第四级 1X1分                      15X10            1.85      km
第五级 4X4秒                      15X15            123.69  m
第六级 2X2秒                      2X2              61.84    m
第七级 1/4 X 1/4秒                8X8              7.73      m
第八级 1/32 X 1/32秒              8X8              0.97     m
第九级 1/256 X 1/256秒            8X8              12.0     cm
第十级 1/2048 X 1/2048秒          8X8              1.5       cm
public static string GetNewBDBM(double B, double L, int Level)
{List<string> code = new List<string>();double pre_a = 0;   //上一级行号double pre_b = 0;   //上一级列号double pre_Q = 0;    //上一级确定角点纬度值double pre_Y = 0;    //上一级确定角点经度值double pre_dB = 0;   //上一级经差double pre_dL = 0;   //上一级纬差//本级变量double dB = 0, dL = 0;int a = 0, b = 0;double Q = 0, Y = 0;//BL点 转为度for (int i = 1; i <= Level; i++){if (i == 1){   //第一层  1:100万                    GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//                  string bit_1 = "N";   //我国位于北半球=N,   南半球=Sif (B >= 0){   //B=ybit_1 = "N";}else{bit_1 = "S";}//a = getInt(Math.Floor(Math.Abs(B) / dB)) + 1;    //商取整【B/4】+1                    b = getInt(Math.Floor(L / dL)) + 31;             //商取整【L/6】+31  //修正b值b = Math.Abs(b); if (b<0) b = 1;if (b > 59) b = 60;//修正a值if (a > 22) a = 22;//string bit_23 = b.ToString().PadLeft(2, '0');    //补足2位01-60string bit_4 = Get100W_WeiD_bit_1(Math.Abs(a).ToString());//生成北斗码code.Add(bit_1 + bit_23 + bit_4);    //N45A//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = 0;   //全球赤道0度点pre_Y = 0;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}else if (i == 2){GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//获取上一级网格层的确定角点经纬度坐标值Q = pre_Q + (pre_b - 31) * pre_dL;Y = pre_Y + (pre_a - 1) * pre_dB;//获取此点在本级网格层的行列号                  a = getInt((L - Q) / dL) + 1;b = getInt((B - Y) / dB) + 1;//生成北斗码code.Add(fixRowColNum15(a - 1));code.Add(fixRowColNum15(b - 1));//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = Q;   //全球赤道0度点pre_Y = Y;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}else if (i == 3){GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//获取上一级网格层的确定角点经纬度坐标值Q = pre_Q + (pre_a - 1) * pre_dL;Y = pre_Y + (pre_b - 1) * pre_dB;//获取此点在本级网格层的行列号                  a = getInt((L - Q) / dL) + 1;b = getInt((B - Y) / dB) + 1;//生成北斗码  (Z序列)//code.Add(fixRowColNum15(a - 1));//code.Add(fixRowColNum15(b - 1));code.Add(fixRowColZorder(a, b));//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = Q;   //全球赤道0度点pre_Y = Y;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}else if (i >= 4 && i <= 5){GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//获取上一级网格层的确定角点经纬度坐标值Q = pre_Q + (pre_a - 1) * pre_dL;Y = pre_Y + (pre_b - 1) * pre_dB;//获取此点在本级网格层的行列号                  a = getInt((L - Q) / dL) + 1;b = getInt((B - Y) / dB) + 1;//生成北斗码code.Add(fixRowColNum15(a - 1));code.Add(fixRowColNum15(b - 1));//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = Q;   //全球赤道0度点pre_Y = Y;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}else if (i == 6){GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//获取上一级网格层的确定角点经纬度坐标值Q = pre_Q + (pre_a - 1) * pre_dL;Y = pre_Y + (pre_b - 1) * pre_dB;//获取此点在本级网格层的行列号                  a = getInt((L - Q) / dL) + 1;b = getInt((B - Y) / dB) + 1;//生成北斗码  (Z序列)//code.Add(fixRowColNum15(a - 1));//code.Add(fixRowColNum15(b - 1));code.Add(fixRowColZorder(a, b));//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = Q;   //全球赤道0度点pre_Y = Y;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}else if (i >= 7 && i <= 10){GetDetaB_detaL(i, ref dB, ref dL);  //获取本级经纬差值//获取上一级网格层的确定角点经纬度坐标值Q = pre_Q + (pre_a - 1) * pre_dL;Y = pre_Y + (pre_b - 1) * pre_dB;//获取此点在本级网格层的行列号                  a = getInt((L - Q) / dL) + 1;b = getInt((B - Y) / dB) + 1;//生成北斗码code.Add(fixRowColNum15(a - 1));code.Add(fixRowColNum15(b - 1));//==记录历史行列号和确定角点经纬度坐标值pre_a = a;pre_b = b;pre_Q = Q;   //全球赤道0度点pre_Y = Y;   //全球赤道0度点pre_dB = dB;pre_dL = dL;//==}}string buf = "";for (int i = 0; i < code.Count; i++){buf += code[i];}return buf;
}

本blog地址:https://blog.csdn.net/hsg77

http://www.lryc.cn/news/415808.html

相关文章:

  • 网络流算法:最大流问题
  • C++从入门到入土(四)--日期类的实现
  • 【香橙派系列教程】(七)香橙派下的Python3安装
  • 贝叶斯优化算法(Bo)与门控循环单元(GRU)结合的预测模型(Bo-GRU)及其Python和MATLAB实现
  • 人工智能时代,程序员当如何保持核心竞争力?
  • LMDrive 端到端闭环自动驾驶框架
  • P2045 方格取数加强版
  • 【Bigdata】OLAP的衡量标准
  • 关于DDOS攻击趋势及防护措施
  • Apache Flink:一个开源流处理框架
  • Nginx 学习笔记
  • 软甲测试定义和分类
  • Vue 3+Vite+Eectron从入门到实战系列之(二)一Elementplus及VueRouter的配置
  • STL-list
  • 2024 7.29~8.4 周报
  • 随身助手271个可用api接口网站php源码(随身助手API)
  • 珠江电缆,顺应全球变化,实现高质量出海
  • redis面试(四)持久化
  • 构建数据桥梁:Pandas如何简化API到DataFrame的转换
  • echarts制作grafana 面板之折线图
  • 技术男的审美反击:UI配置化新纪元
  • 73.结构体指针参数传递
  • 面向对象编程与Scala:掌握核心概念与应用
  • 《Advanced RAG》-07-探索 RAG 中表格数据的处理方案
  • Dubbo源码深度解析(二)
  • RocketMQ 的高可用性:主从复制与多副本保证
  • Linux系统驱动(四)自动创建设备节点
  • Webpack、Vite区别知多少?
  • 《剑指编程之巅:大学新生,以诗心驭代码》
  • 【八股文】网络基础