C#实现GIS中莫顿码的计算

关于莫顿编码计算过程 关于摩顿编码的计算 莫顿码的基本原理 莫顿码是一种将多维空间中的点坐标用一个一维的数值来表示,通过利用莫顿编码的方式来讲空间中点所对应的空间关系用莫顿码值之间的相邻关系来近似表示。 莫顿编码的计算方式 1.通过依次对多维空间中的点进行“迭代交叉计算”; 2.通过利用查询表来计算对应的莫顿码; 在本篇博客中,我增添了对于二维几何和三维几何坐标所对应的莫顿码值的整个过程。 ... 阅读详情

计算步骤:

1.将横坐标和纵坐标分别转化为二进制,需要注意的是转化后的二进制位数要相同(本文中以8为二进制码进行演示)

2.交叉排序后组合成16位2进制码

3.将16位二进制码重新转化为整形数字,此数字即为我们需要的莫顿码

C#代码如下:

public string getEightBinary(string binary)
        {
            //十进制转二进制字符串
            //   string str = Convert.ToString(row, 2);
            //输出: 1010
            string strBinary = Convert.ToString(int.Parse(binary), 2);
            //保证是8位的二进制数,位数不够用0占位
            int len = 8 - strBinary.Length;
            string prefix = "";
            for(int i = 0; i < len; i++)
            {
                prefix += "0";
            }
            strBinary = prefix + strBinary;
            return strBinary;
        }
        //获取莫顿码,输入row,col范围0-255,输出莫顿码范围0-25535
        public int getMorton(string row, string col)
        {
            if (int.Parse(row) > 255 || int.Parse(col) > 255)
            {
                return -1;
            }
            //转化为8位二进制码
            string x = getEightBinary(row);
            string y = getEightBinary(col);
            //生成二进制的M码
            string strm = "";
            //交叉算法,将两个8位二进制码合并位16位莫顿码
            for (int i = 0; i < x.Length; i++)
            {
                strm = strm + x.Substring(i, 1) + y.Substring(i, 1);
            }
            //将16为2进制码转化为整形数字,即为莫顿码
            int m = Convert.ToInt32(strm, 2);
            return m;
        }

C语言实现四进制(四叉树)、十进制的Morton码 叶节点:即没有子节点的节点。线性四叉数只存储最后叶节点信息,包括叶节点的位置、深度和网格值。地址码(Morton码):线性四叉树叶节点遵照一定的规则,隐含了叶节点位置信息的编号。 阅读详情

相关推荐

三维坐标莫顿码计算 c++算法程序

莫顿码可以将多维数据转化为一维数据编码,根据一维编码位数可确定多维数据保留精度,是一种比较常用的压缩编码方法,尤其是作为哈希表的映射算法等,加速了树结构数据的存储和访问速度。莫顿编码也叫z-order code ,因为其编码顺序按照空间z序.从二维莫顿编码的计算开始:上图展示了8*8的图像每个像素的空间编码,从000000到111111,用一维二进制数,编码了x,y值在0-7的位置坐标。交错二进制...

小小码农的博客 9454

莫顿码(Morton code)介绍

莫顿编码介绍

cheche012345的博客 2万+

C#语言实现的GIS应用开发示例

本文还有配套的精品资源,点击获取 简介:本项目"基于C#的GIS开发Demo"将深入探讨C#语言在GIS应用开发中的应用。C#语言结合.NET Framework库与开源GIS库,支持多种GIS功能实现,包括鹰眼、绘图、视图切换、地理信息操作等。开发过程涉及Visual Studio、地图资源管理,同时记录了存在的问题与项目升级日志,以帮助开发者理解GIS系统架构与关键算法...

weixin_30798867的博客 2844

莫顿码Morton code的c语言实现

十进制 Morton码可以使用栅格单元的行列号计算 原理部分 遵循C语言规范,矩阵的第一行为“0”行、第一列为“0”列,先将十进制的行列号转换成二进制数,进行“位”运算操作,即行号和列号的二进制数两两交叉,得到以二进制数表示的MD码,再将其转换为十进制数。 例如图中第二行和第三列对应的栅格单元,其二进制的行列号分别为:I=0010,J=0011;得到的MD码为:MD=(0001101)2...

撼沧 1万+

莫顿码

莫顿码

八股已死、场景当立(Docker篇)

本文总结了Docker相关的面试八股文,重点介绍了Docker在Java开发中的应用。主要内容包括:Docker容器与虚拟机的区别及其对Java应用性能的影响;如何为Java应用构建优化镜像;Docker常用命令在Java容器管理中的使用;Docker网络模式与数据卷在Java微服务中的配置;使用Docker Compose部署Java+MySQL微服务的方法;以及为Java应用配置健康检查的重要性。文章还通过具体示例说明了Nginx容器挂载、日志收集等常见场景的实现方式,为Java开发者提供了实用的Doc

qq_55253420的博客 714

莫顿曲线映射 二维到一维的变换 MD(莫顿)码 正向变换 线性四叉树

线性四叉树是基于莫顿码的一种四叉树实现方式,它将二维空间划分为一系列正方形区域,并将每个区域标记为叶子节点。每个叶子节点对应着一个莫顿码,通过莫顿码的前缀匹配可以快速定位到对应的叶子节点。线性四叉树的节点可以压缩为一个连续的数组,因此可以实现高效的存储和访问。莫顿码是一种将二维坐标映射为一维编码的方法,它将一个二维点的坐标表示为一个整数,使得相邻的二维点在一维空间中的编码也相邻。(Linear Quadtree)是一种基于莫顿码(Morton Code)的数据结构,用于存储和处理二维空间中的信息。

qq_69574549的博客 5705

Kali Linux下John the Ripper实战:从识别yescrypt哈希到破解zip压缩包(保姆级避坑指南)

本文详细介绍了在Kali Linux中使用John the Ripper工具从识别yescrypt哈希到破解zip压缩包的全过程。针对常见的'No password hashes loaded'报错,提供了两种解决方案,并扩展讲解了哈希识别、zip文件破解及性能优化技巧,是安全测试人员的实用指南。

weixin_29323365的博客 236

Morton码

版权声明:本文为博主原创文章,转载请注明原文出处! 写作时间:2019-07-08 17:11:27 Morton码的计算 Morton码是对栅格格网进行编码的一种算法,在Google中搜索Morton,搜索结果第一位是Wikipedia的Z-order Curve,这是因为Morton码编码结果展现为一种Z形的填充曲线。下面简要说一下如何计算四进制和十进制的Morton码。 四进制Morto...

给永远比拿愉快 1万+

麦当劳app之sign逆向分析

摘要:本文分析了麦当劳APP请求参数sign的逆向过程。通过抓包发现32位sign参数疑似MD5加密,使用frida-trace工具跟踪CC_MD5函数验证其为标准MD5算法。加密参数包含时间戳、token、版本号等固定和动态字段,拼接后经MD5加密生成sign。文章提供了JS和Python两种实现方案,包含完整的请求头参数和加密逻辑,最终成功获取API响应数据。该研究仅用于逆向技术学习,展示了移动应用常见加密参数的逆向分析方法。

佛系更新... 2442

2026软件测试面试题全解析:从用例设计到接口自动化与性能实战

在软件测试岗位的招聘考察中,面试官越来越看重候选人解决实际问题的工程能力,而不仅仅是背诵概念。从最基础的测试用例设计出发,覆盖功能测试、接口测试、自动化测试、性能测试、数据库与Redis一致性等核心知识体系,是应对中高级岗位面试的关键路径。理解Postman抓包、Python脚本、Pytest框架、JMeter压测指标背后的原理,能帮助测试人员构建完整的质量保障思维。当AI辅助测试成为行业新趋势时,掌握数据校验链路与风险识别意识,更能体现资深测试工程师的竞争力。本文围绕2026年高频软件测试面试题,梳理了从

weixin_28676289的博客 246

地理信息系统原理-空间数据结构(7)

指针不仅增加了数据的存储量,还增加了操作的复杂性:如层次数(分割次数)由从父结点移到根结点的次数来确定,结点所代表的图像块的位置需要从根节点开始逐步推算下来。④如何计算莫顿码:如图所示,通常是将栅格数据十进制的行列号,转成二进制的行列号,再将二进制的行号和列号进行错位交叉排列,得到二进制的莫顿码,再将二进制的莫顿码转成十进制的莫顿码。(1) 常规四叉树(记录这棵树的叶结点外,中间结点,结点之间的联系用指针联系,每个结点需要6个变量:父结点指针、四个子结点的指针和本结点的属性值。

lntu_ling 8919

基于Spring Boot 3 + Vue 3 + Vite的现代化社区订餐系统设计与实现

本文将详细阐述系统的整体架构、数据库设计、核心功能模块(用户管理、餐厅管理、菜品浏览、购物车、订单管理)的实现细节,并提供关键代码示例。<el-input v-model="loginForm.password" type="password" placeholder="密码" prefix-icon="Lock" show-password />.requestMatchers("/api/auth/**", "/api/dishes/public/**").permitAll() // 公开接口。

2201_76125393的博客 468

Morton Code

<br />莫顿码 ,实现了一维与二维(或多维)的转换。它通过交叉存储两个数的位产生一个数,即莫顿码。<br />可以应用于为一个整数对产生一个唯一索引。<br /> <br />例如,对于坐标系中的坐标点使用莫顿编码生成的莫顿码,可以唯一索引对应的点。这些索引为“Z”形排序 。<br /> <br />计算莫顿码:<br /> <br />有两种方式,一交叉分离计算,二查询对应的莫顿表计算。例如,计算两个unsigned short的莫顿码<br /> <br />1 交叉分离<br /> <br /

xiaodlichao的专栏 1万+

MTK平台Wi-Fi学习--wifi channel 通过国家码进行功率限制和wifi eFEM 基本配置和wifi Tx SEM问题

本文介绍了WiFi功率限制配置和eFEM硬件设置方法。在功率限制方面,通过国家码可针对不同信道设置功率上限,需在rlm_txpwr_init.h文件中配置信道和功率值(单位0.5dBm),WiFi6的HE_TB模式还可分RU设置。eFEM硬件配置需参考平台设计,注意VDET接口处理,首次使用建议提交HW/SW案例审核。软件配置需获取专用FEM包,包含NVRAM、GPIO等文件,按指导合并后版本才会切换为eFEM版本。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 485

热力学仿真软件:SimScale_(1).SimScale入门与基础操作

导航栏:位于页面顶部,包含项目管理、仿真设置、结果分析等主要功能。项目列表:展示用户创建的所有项目。工作区:用于进行具体的操作,如几何建模、网格划分、边界条件设置等。控制台:显示操作日志和仿真进度。网格划分是将几何模型离散化为一系列小单元的过程,这些单元用于求解热力学方程。SimScale提供了多种网格划分方法,包括结构化网格和非结构化网格。SimScale提供了丰富的API接口,用户可以通过编程语言进行二次开发,实现自动化仿真和结果分析。项目管理:创建、删除和管理项目。几何建模:创建、导入和修复几何模型。

kkchenjj的博客 1868

morton码_7-基于Morton码的一种二维游程编码方法

基于Morton码的一种二维游程压缩编码方法孟庆武1孟露2伊海波3(1.黑龙江工程学院测绘工程学院,黑龙江哈尔滨150050;2.东北林业大学林学院,黑龙江哈尔滨150086;3.黑龙江第一测绘工程院,黑龙江哈尔滨150086)摘要:在分析常规二维游程压缩编码方法缺陷的基础上,提出了一种基于Morton码的二维游程压缩编码方法。该方法按Morton码由小到大顺序扫描栅格数据,对于由2×2个像元组成...

weixin_39526185的博客 1385

Ubuntu22.04如何安装cuDNN8.9.7

本文详细介绍了在Ubuntu 22.04系统上为CUDA 12.2安装适配cuDNN 8.9.7的完整流程,特别针对RTX A6000显卡。主要内容包括:1)选择与CUDA 12.2兼容的cuDNN版本;2)使用deb包方式的安装步骤(添加仓库、导入密钥、安装组件);3)通过MNIST示例验证安装;4)版本锁定、卸载旧版等补充说明;5)性能测试方法。文中强调了版本匹配的重要性,并提供了多卡配置建议,为搭建深度学习开发环境提供完整指导。

2501_93651177的博客 1845

morton码_求矩阵四叉树的四进制和十进制Morton码

Yogurt是一名学GIS的学生,今天要跟大家分享的是四叉树这种空间索引方式的Morton编码方法,接下来我将在小课堂中简单介绍一下空间索引以及其几种编码方式~~---------------------------------------------------------yogurt小课堂开课啦--------------------------------------------------...

weixin_42394573的博客 5190

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Geohash 基本知识及 .NET 下计算相邻8个区域编码

目录 一、简介 二、计算方法 三、GeoHash的精度 四、查找相邻8个区域的Geohash编码(.NET) 五、MySQL 中使用 GeoHash 最近项目中需要搜索周边的 POI 信息,查找的过程中了解到了 Geohash ,这这里记录下以便自己牢记也和大家分享下。 一、简介 GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串。GeoHash...

weixin_30378311的博客 992

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

线性四叉树十进制Morton码计算示例

线性四叉树十进制Morton码计算,具体算法描述龚健雅《地理信息系统基础》P108

weixin_34279184的博客 9009

莫顿曲线映射 一维到二维的变换 MD(莫顿)码 反向变换 线性四叉树

【代码】莫顿曲线映射 一维到二维的变换 MD(莫顿)码 反向变换 线性四叉树。

qq_69574549的博客 802

访存优化_4、多维数组,插桩与循环分块、莫顿码、多核缓存伪共享

二维数组因为涉及到扁平化的问题,所以分为了两种方法。以下符号约定:i 行号,j 列号;n 行数,m 列数C/C++ 编译器把静态数组 a[i][j]翻译为a[i* m + j],所以是行主序。Fortran 等会把矩阵A(i, j)翻译为a[i+ j * n],所以是列主序。手动扁平化时,如果用 a[i* m + j]就是行主序。手动扁平化时,如果用 a[i+ j * n]就是列主序。简单来说:哪个索引连续,就是什么主序。实际上,如果你认为 C++

zhuangtu1999的博客 868

AE+ArcGIS二次开发课程设计(基于C#)

AE+ArcGIS二次开发课程设计(基于C#)1.工作内容2.程序功能介绍3.功能模块介绍3.1 实现【创建TIN】说明3.1.1 功能说明3.1.2 代码实现(包含了所有主要的代码,库引用自行导入)3.2 实现【TIN坡度坡向分析】说明3.2.1 功能说明3.2.2 代码实现3.3 实现【自然邻域插值+分级渲染分析】说明3.3.1 功能说明3.3.2 代码实现 1.工作内容 本系统开发需要进行系统环境的配置,在进行工作前安装好VS2010+ArcGIS Engine10.2,能够进行二次开发的环境。

qq_44591181的博客 8870
上一篇: C语言 521猫语表白代码(unicode加密)
下一篇: C#图像栅格叠加
星空的你
博客等级 码龄5年 193粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值