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

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分
const fractional = function(x) {x = Math.abs(x);return x - Math.floor(x);
}
const formatInt = function(x, len) {let result = '' + x;len = len - result.length;while (len > 0) {result = '0' + result;len--;}return result;
}/*** 创建标准分幅网格* @param west,south,east,north 传入要创建的标准分幅网格的经纬度范围* @param scalem 表示比例尺的分母(例如 10000 表示 1:1万)* @returns 返回一个 geojson 对象*/
export function makeStandardMapGrids(west, south, east, north, scalem) {let lngDiff = 0;let latDiff = 0;let scaleCode = '';switch (scalem) {case 1000000:lngDiff = 6;latDiff = 4;break;case 500000:lngDiff = 3;latDiff = 2;scaleCode = 'B';break;case 250000:lngDiff = 1.5;latDiff = 1;scaleCode = 'C';break;case 100000:lngDiff = 0.5;latDiff = 1 / 3;scaleCode = 'D';break;case 50000:lngDiff = 0.25;latDiff = 1 / 6;scaleCode = 'E';break;case 25000:lngDiff = 0.125;latDiff = 1 / 12;scaleCode = 'F';break;case 10000:lngDiff = 0.0625;latDiff = 1 / 24;scaleCode = 'G';break;case 5000:lngDiff = 0.03125;latDiff = 1 / 48;scaleCode = 'H';case 2000:lngDiff = 37.5 / 3600.0;latDiff = 25.0 / 3600.0;scaleCode = 'I';break;case 1000:lngDiff = 18.75 / 3600.0;latDiff = 12.5 / 3600.0;scaleCode = 'J';break;case 500:lngDiff = 9.375 / 3600.0;latDiff = 6.25 / 3600.0;scaleCode = 'K';break;default:return null;}const GridX0 = -180;const GridX1 = 180;const GridY0 = -88;const GridY1 = 88;let x0 = Math.max(GridX0, west);let y0 = Math.max(GridY0, south);let x1 = Math.min(GridX1, east);let y1 = Math.min(GridY1, north);if (((x1 - x0) < lngDiff) || ((y1 - y0) < latDiff)) {return null;}let features = []; // 存储生成的面要素let coordinates = [] // 存储生成的面要素坐标对// 计算标准分幅网格行列范围const col0 = parseInt((x0 - GridX0) / lngDiff);const col1 = parseInt((x1 - GridX0) / lngDiff);const row0 = parseInt((y0 - GridY0) / latDiff);const row1 = parseInt((y1 - GridY0) / latDiff);const millionRowCode = 'ABCDEFGHIJKLMNOPQRSTUV';for (let row = row0; row <= row1; row++) {let gy0 = GridY0 + row * latDiff;let gy1 = gy0 + latDiff;let gcy = (gy0 + gy1) * 0.5; // 分幅中心点 y 坐标let millionRow = parseInt((gy0 - 0) / 4); // 1:100分幅行号let Hemisphere = ''; // 北半球标志if (millionRow < 0) {millionRow = -1 - millionRow;Hemisphere = 'S'; // 南半球标志}for (let col = col0; col <= col1; col++) {let gx0 = GridX0 + col * lngDiff;let gx1 = gx0 + lngDiff;let gcx = (gx0 + gx1) * 0.5; // 分幅中心点 x 坐标let millionCol = parseInt((gcx - GridX0) / 6) + 1; // 1:100分幅列号(从1开始)coordinates = [[[gx0, gy0],[gx1, gy0],[gx1, gy1],[gx0, gy1],[gx0, gy0]]];millionCol = (millionCol < 10) ? ('0' + millionCol) : millionCol;let gridID = Hemisphere + millionRowCode[millionRow] + millionCol;if (scaleCode != '') {// 计算当前分幅在 1:100万 分幅内的行列号(注意,这里行列号从左向右,从北向南,从1开始编号)let colID = parseInt((fractional((gcx - GridX0) / 6) * 6) / lngDiff) + 1;let rowID = parseInt((fractional((GridY1 - gcy) / 4) * 4) / latDiff) + 1;gridID += scaleCode + formatInt(rowID, 3) + formatInt(colID, 3);}// 生成矢量要素(几何信息+属性信息)let feature = {type: "Feature",geometry: {type: "Polygon",coordinates: coordinates},properties: {ID: gridID,extend: '西:' + gx0 + ' 东:' + gx1 + ' 南:' + gy0 + ' 北:' + gy1,lat: gcy.toFixed(6),lng: gcx.toFixed(6)},location: {latitude: Number(gcy.toFixed(6)),longitude: Number(gcx.toFixed(6)),}};features.push(feature);}}return {type: "FeatureCollection",features: features};
}

 我国把 1:1 万、1:2.5 万、1:5 万、1:10 万、1:25 万、1:50 万、1:100 万 7 种比例尺作为国家基本地图的比例尺系列。根据国家标准GB/13989-92 《国家基本比例尺地形图分幅和编号》规定,我国基本比例尺地形图均1:100 万地形图为基础,按规定的经差和纬差划分图幅。下表为地形图的经纬差、行列数及图幅数。

相关文章:

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …...

python项目练习——22、人脸识别软件

功能分析: 人脸检测: 识别图像或视频中的人脸,并标记出人脸的位置和边界框。 人脸识别: 识别人脸的身份或特征,通常使用已知的人脸数据库进行训练,然后在新的图像或视频中识别出人脸并匹配到相应的身份。 表情识别: 识别人脸的表情,如高兴、悲伤、愤怒等,并给出相应…...

Linux中账号登陆报错access denied

“Access denied” 是一个权限拒绝的错误提示&#xff0c;意味着用户无法获得所请求资源的访问权限。出现 “Access denied” 错误的原因可以有多种可能性&#xff0c;包括以下几种常见原因&#xff1a; 错误的用户名或密码&#xff1a;输入的用户名或密码不正确&#xff0c;导…...

python语言之round(num, n)小数四舍五入

文章目录 python round(num, n)小数四舍五入python round(num, n)基础银行家舍入&#xff08;Bankers Rounding&#xff09;利息被银行四舍五入后&#xff0c;你到底是赚了还是亏了&#xff1f; python小数位的使用decimal模块四舍五入(解决round 遇5不进) python round(num, n…...

安全风险攻击面管理如何提升企业网络弹性?

从研究人员近些年的调查结果来看&#xff0c;威胁攻击者目前非常善于识别和利用最具有成本效益的网络入侵方法&#xff0c;这就凸显出了企业实施资产识别并了解其资产与整个资产相关的安全态势的迫切需要。 目前来看&#xff0c;为了在如此复杂的网络环境中受到最小程度上的网络…...

常用的几款性能测试软件

Apache JMeter是一款免费、开源的性能测试工具&#xff0c;广泛应用于Web应用程序和服务的性能测试。它支持模拟多种不同类型的负载&#xff0c;可以测试应用程序在不同压力下的性能表现&#xff0c;并提供丰富的图表和报告来分析测试结果。 优点&#xff1a; 免费且开源&…...

谷歌google浏览器无法更新Chrome至最新版本怎么办?浏览器Chrome无法更新至最新版本

打开谷歌google浏览器提示&#xff1a;无法更新Chrome&#xff0c;Chrome无法更新至最新版本&#xff0c;因此您未能获得最新的功能和安全修复程序。点击「重新安装Chrome」后无法访问此网站&#xff0c;造成谷歌浏览器每天提示却无法更新Chrome至最新版本。 谷歌google浏览器无…...

认识异常(1)

❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&a…...

C++矩阵

C矩阵【基本】&#xff08;will循环&#xff09; #include<iostream> #include<string.h> using namespace std; int main() {int a[100][100]{0};int k 1;int i 0;int j 0;while(k<100){if(j>10){j0;i;}a[i][j]k;j;k;}i 0;j 0;while(true){if(i 9&am…...

解锁智能未来:用Ollama开启你的本地AI之旅

Ollama是一个用于在本地运行大型语言模型&#xff08;LLM&#xff09;的开源框架。它旨在简化在Docker容器中部署LLM的过程&#xff0c;使得管理和运行这些模型变得更加容易。Ollama提供了类似OpenAI的API接口和聊天界面&#xff0c;可以非常方便地部署最新版本的GPT模型并通过…...

CSS实现卡片在鼠标悬停时突出效果

在CSS中&#xff0c;实现卡片在鼠标悬停时突出&#xff0c;通常使用:hover伪类选择器。 :hover伪类选择器用于指定当鼠标指针悬停在某个元素上时&#xff0c;该元素的状态变化。通过:hover选择器&#xff0c;你可以定义鼠标悬停在元素上时元素的样式&#xff0c;比如改变颜色、…...

GPT建模与预测实战

代码链接见文末 效果图&#xff1a; 1.数据样本生成方法 训练配置参数&#xff1a; --epochs 40 --batch_size 8 --device 0 --train_path data/train.pkl 其中train.pkl是处理后的文件 因此&#xff0c;我们首先需要执行preprocess.py进行预处理操作&#xff0c;配置参数…...

传统方法(OpenCV)_车道线识别

一、思路 基于OpenCV的库&#xff1a;对视频中的车道线进行识别 1、视频处理&#xff1a;视频读取 2、图像转换&#xff1a;图像转换为灰度图 3、噪声去除&#xff1a;高斯模糊对图像进行去噪&#xff0c;提高边缘检测的准确性 4、边缘检测&#xff1a;Canny算法进行边缘检测…...

Git以及Gitlab的快速使用文档

优质博文&#xff1a;IT-BLOG-CN 安装git 【1】Windows为例&#xff0c;去百度下载安装包。或者去官网下载。安装过秳返里略过&#xff0c;一直下一步即可。丌要忉记设置环境发量。 【2】打开cmd&#xff0c;输入git –version正确输出版本后则git安装成功。 配置ssh Git和s…...

MyBatis Interceptor拦截器高级用法

拦截插入操作 场景描述&#xff1a;插入当前数据时&#xff0c;同时复制当前数据插入多行。比如平台权限的用户&#xff0c;可以同时给其他国家级别用户直接插入数据 实现&#xff1a; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.executor.Executor; impor…...

Python学习入门(2)——进阶功能

14. 迭代器和迭代协议 在Python中&#xff0c;迭代器是支持迭代操作的对象&#xff0c;即它们可以一次返回其成员中的一个。任何实现了 __iter__() 和 __next__() 方法的对象都是迭代器。 class Count:def __init__(self, low, high):self.current lowself.high highdef __i…...

华为改进点

华为公司可以在员工福利方面做出改进&#xff0c;提高员工的工作满意度和忠诚度。例如&#xff0c;可以增加员工福利&#xff0c;如提供更多灵活的工作时间、提供更好的培训和发展机会、加大健康保障和福利待遇等。 此外&#xff0c;华为公司也可以加强与客户的沟通与合作&…...

分布式技术---------------消息队列中间件之 Kafka

目录 一、Kafka 概述 1.1为什么需要消息队列&#xff08;MQ&#xff09; 1.2使用消息队列的好处 1.2.1解耦 1.2.2可恢复性 1.2.3缓冲 1.2.4灵活性 & 峰值处理能力 1.2.5异步通信 1.3消息队列的两种模式 1.3.1点对点模式&#xff08;一对一&#xff0c;消费者主动…...

BGP扩展知识总结

一、BGP的宣告问题 在BGP协议中每台运行BGP的设备上&#xff0c;宣告本地直连路由在BGP协议中运行BGP协议的设备&#xff0c;来宣告通过IGP学习到的未运行BGP协议设备产生的路由&#xff1b;&#xff08;常见&#xff09; 在BGP协议中宣告本地路由表中路由条目时&#xff0c;将…...

华为OD-C卷-按身高和体重排队[100分]

题目描述 某学校举行运动会&#xff0c;学生们按编号(1、2、3…n)进行标识&#xff0c;现需要按照身高由低到高排列&#xff0c;对身高相同的人&#xff0c;按体重由轻到重排列&#xff1b;对于身高体重都相同的人&#xff0c;维持原有的编号顺序关系。请输出排列后的学生编号…...

STM32驱动X-NUCLEO-IHM02A1实现工业级步进电机控制

1. X-NUCLEO-IHM02A1 驱动开发深度解析&#xff1a;面向工业级步进电机控制的 STM32 底层实现 X-NUCLEO-IHM02A1 是意法半导体&#xff08;STMicroelectronics&#xff09;推出的高性能双通道步进电机驱动扩展板&#xff0c;专为 STM32 Nucleo 开发平台设计。该板基于 STSPIN22…...

2025最权威的五大降重复率工具推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理以及机器学习算法的AI论文查重系统&#xff0c;会去分析文本语义&#xff0…...

weixin283基于微信小程序校园订餐的设计与开发+ssm(文档+源码)_kaic

第5章 系统实现 5.1用户登录功能的界面实现 本系统中可以保证安全的功能就是用户登录功能&#xff0c;登录可以验证用户的身份&#xff0c;用户可以注册&#xff0c;当密码忘记后也可以通过忘记密码功能进行找回。在用户登录界面里采用上中下的方式进行设计。在上设计的是功能…...

样本收集的致命误区:为什么你的AI模型“一上产线就拉胯”?

很多工程师在收集TVA训练集时&#xff0c;喜欢从良品堆里挑50个&#xff0c;再从废品筐里挑50个&#xff0c;觉得凑够100个样本就能让AI“快速学习”了。结果一上线&#xff0c;只要背景稍微有点灰尘&#xff0c;或者螺母有点偏转角度&#xff0c;系统就疯狂误报。这就是典型的…...

《算法题讲解指南:动态规划算法--子序列问题》--29.最长递增子序列的个数,30.最长数对链,31.最长定差子序列

&#x1f525;小叶-duck&#xff1a;个人主页 ❄️个人专栏&#xff1a;《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路&#xff0…...

【Microsoft Store】解决微软商店无法打开,MicrosoftStore 初始化失败,请尝试刷新 或稍后返回

【Microsoft Store】解决微软商店无法打开&#xff0c;MicrosoftStore 初始化失败&#xff0c;请尝试刷新 或稍后返回 一、先说说核心问题&#xff1a;为什么会初始化失败&#xff1f;二、关键操作&#xff1a;TLS设置怎么弄&#xff1f;&#xff08;附详细步骤&#xff09;三、…...

春联生成模型-中文-base效果展示:支持‘嵌名联’——将用户姓名自然融入上下联

春联生成模型-中文-base效果展示&#xff1a;支持嵌名联——将用户姓名自然融入上下联 1. 模型效果惊艳展示 春联生成模型-中文-base带来了传统节日文化的智能创新体验。这个基于达摩院AliceMind大模型的专项应用&#xff0c;能够通过简单的两字祝福词&#xff0c;生成符合传…...

Windows系统优化与驱动管理完全指南:释放磁盘空间并解决驱动冲突

Windows系统优化与驱动管理完全指南&#xff1a;释放磁盘空间并解决驱动冲突 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否遇到过系统磁盘空间莫名减少&#xff1f;设备管理器中…...

FontForge完整指南:免费开源字体设计工具的终极解决方案

FontForge完整指南&#xff1a;免费开源字体设计工具的终极解决方案 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 寻找一款功能全面且完全免费的字体设计工具&…...

京东智能评价助手:自动化评价解决方案与效率提升实践

京东智能评价助手&#xff1a;自动化评价解决方案与效率提升实践 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 如何通过技术手段解决电商评价的效率瓶颈&#xff1f; 在电商购物场景中&…...