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

news2024/9/24 1:19:10

基于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,   南半球=S
            if (B >= 0)
            {   //B=y
                bit_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-60
            string 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.coloradmin.cn/o/1981985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql注入第一关和第二关

第一关&#xff1a; 输入?id1 正常 输入?id1 报错 .0 输入?id1-- 正常 判断他是字符型注入 闭合方式是: ?id1 and 12 union select 1,2,group_concat(schema_name) from information_schema.schemata-- 联合注入 爆出库&#xff1a;ctfshow,ctftraining,information_…

nvidia系列教程-AGX-Orin系统刷机及备份

目录 前言 一、准备工作 二、AGX Orin 系统刷机步骤 三、AGX Orin 系统备份 总结 前言 NVIDIA AGX Orin 是一款高性能的嵌入式计算平台&#xff0c;专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景&#xff0c;用户可能需要对 AGX Orin 进行系统刷…

SpringBoot集成阿里百炼大模型 原子的学习日记Day01

文章目录 概要下一章SpringBoot集成阿里百炼大模型&#xff08;多轮对话&#xff09; 原子的学习日记Day02 整体架构流程技术名词解释集成步骤1&#xff0c;选择大模型以及获取自己的api-key&#xff08;前面还有一步开通服务就没有展示啦&#xff01;&#xff09;2&#xff0c…

2024.8.05(glibc的安装及MySQL的安全用户角色权限)

一、glibc的安装 1、清空/etc目录下的my.cnf [rootlocalhost ~]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 570 6月 8 2017 /etc/my.cnf [rootlocalhost ~]# rm -rf /etc/my.cnf 2、删除mariadb [rootlocalhost ~]# yum -y remove mariadb [rootlocalhost ~]# find / -na…

wps 最新 2019 专业版 下载安装教程,解锁全部功能,免费领取

文章目录 前言软件介绍软件下载安装步骤激活步骤小福利&#xff08;安卓APP&#xff09;软件介绍软件下载安装步骤 前言 本篇文章主要针对WPS2019专业版的安装下载进行详细讲解&#xff0c;软件已激活&#xff0c;可放心使用&#xff1b;并且可以进行账号登录&#xff0c;进行…

Router路由的使用

目录 一.Vue Router的使用&#xff1a; 二.使用vue-router来实现登录页面与主页面展示效果&#xff1a; 1.创建 index.js &#xff1a; 2.在 main.js 导入创建的路由器&#xff1a; 3.在App.vue声明标签&#xff1a; 三.子路由的使用&#xff1a; 1.添加五个组件 2.配置…

光线追踪(纹理映射)

最近在跟着ray trace in one week来学习光线追踪&#xff08;很多概念茅塞顿开&#xff09;做到一半想着记录一下&#xff08;比较随心&#xff09;上面是之前的效果。ray trace in one week Texture Coordinates for Spheres&#xff08;球体纹理坐标&#xff09; u, v 纹理…

K-means聚类算法原理解析

度量最小距离 对于 K-means 聚类算法而言&#xff0c;找到质心是一项既核心又重要的任务&#xff0c;找到质心才可以划分出距离质心最近样本点。从数学角度来讲就是让簇内样本点到达各自质心的距离总和最小。通过数学定义&#xff0c;我们将“质心”具象化&#xff0c;既然要使…

使用SpringBoot+Vue3开发项目(2)---- 设计文章分类的相关接口及页面

目录 一.所用技术栈&#xff1a; 二.后端开发&#xff1a; 1.文章分类列表渲染&#xff1a; 2.新增文章分类&#xff1a; 3.编辑文章分类&#xff1a; 4.删除文章分类 &#xff1a; 5.完整三层架构后端代码&#xff1a; &#xff08;1&#xff09;Controller层&#xff1a…

学习大数据DAY31 Python基础语法4和基于Python中的MySQL 编程

目录 Python 库 模块 time&datetime 库 连接 MySQL 操作 结构操作 数据增删改操作 数据查询操作 上机练习 7 面向对象 OOP 封装 继承 三层架构---面向对象思想模型层 数据层 业务逻辑显示层 上机练习 8 三层架构开发豆瓣网 关于我对 AI 写代码的看法&#xf…

大模型技术在企业应用中的实践与优化

【导读】大模型技术更新层出不穷&#xff0c;但对于众多企业及开发者而言&#xff0c;更为关键的命题则是如何进行应用落地&#xff0c;实现真正的智能化转型。本文系统且深入地探讨了大模型在企业应用中的关键环节和技术要点。从构建高质量的专属数据集、选择适宜的微调策略&a…

天线增益测试方法之射频器件S参数测试软件

天线增益的精确测量对于优化无线信号传输至关重要。NSAT-1000射频器件S参数测试软件作为针对S参数的测试设备&#xff0c;大幅提高了测试精度和效率。本文将为大家介绍该软件在天线增益测试方面的具体操作流程。 一、准备工作 在测试天线增益之前&#xff0c;需要准备好测试软件…

【启明智显分享】Model3A 7寸TFT触摸彩屏智能电压力锅解决方案

随着智能家居市场的快速发展&#xff0c;电压力锅作为厨房电器的代表之一&#xff0c;正逐步向智能化、高端化转型。为了进一步提升用户体验&#xff0c;增强产品竞争力&#xff0c;我们推出基于Model3A 7寸触摸彩屏电压力锅解决方案。该方案旨在通过Model3A芯片的强大性能与7寸…

24/8/5算法笔记 BGD,SGD,MGD梯度下降

今日对比不同梯度下降的代码 1.BGD大批量梯度下降(一元一次&#xff09; 首先导入库 import numpy as npimport matplotlib.pyplot as plt 随机生成线性回归函数 Xnp.random.rand(100,1)w,bnp.random.randint(1,10,size2)#增加噪声&#xff0c;更像真实数据 #numoy广播机制…

mysql的安装与基本操作

1、centos7 中安装 mysql 8.x&#xff08;1&#xff09;下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar&#xff08;2&#xff09;解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar&#xff08;3&…

PXE实验-使用kickstart批量自动部署操作系统

实验准备&#xff1a;rhel7.9具备图形界面的虚拟机&#xff0c;虚拟机网络配置可用&#xff0c;VMware 中NAT的DHCP功能关闭&#xff0c;虚拟机中yum源已配置好 1.在虚拟机中安装kickstart并且启动图形制作工具 yum install system-config-kickstart.noarch -y system-config…

【第13章】Spring Cloud之Gateway全局异常处理

文章目录 前言一、异常处理1. 响应实体类2. 异常处理类 二、单元测试1. 无可用路由2. 服务不可用 总结 前言 网关作为我们对外服务的入口起着至关重要的作用&#xff0c;我们必须保证网关服务的稳定性&#xff0c;下面来为网关服务增加异常处理机制。 一、异常处理 1. 响应实…

动态规划.

目录 &#xff08;一&#xff09;递归到动规的一般转化方法 &#xff08;二&#xff09;动规解题的一般思路 1. 将原问题分解为子问题 2. 确定状态 3. 确定一些初始状态&#xff08;边界状态&#xff09;的值 4. 确定状态转移方程 &#xff08;三&#xff09;能用动规解…

小程序 发布流程

1&#xff1a; 点击HbuilderX 菜单栏上的 发行> 小程序-微信&#xff08;适用于uni-app&#xff09; 2: 第二步&#xff1a; 需要再弹出框中填写发布系小程序的名称和AppId 之后&#xff0c; 点击发行按钮。 3&#xff1a;在Hbuilder 的控制台中 查看小程序发布编译的进度。…

VMware17下载与安装

1.下载 通过百度网盘分享的文件&#xff1a;VMware17 链接&#xff1a;https://pan.baidu.com/s/1gCine3d3Rp_l3NYAu5-ojg 提取码&#xff1a;ek25 --来自百度网盘超级会员V3的分享 2.安装