地图分幅算法实现

关于地图分幅算法的AE实现,下面是C#代码~

 public enum ScaleMark { A, B, C, D, E, F, G, H };//不同比例尺的号码
        private int m_1s1000000_row;//1:100万图幅行
        private int m_1s1000000_list;//1:100万图幅列
        private int m_assign_row;//指定比例尺图幅行
        private int m_assign_list;//指定比例尺图幅列
        private int m_scale;//指定比例尺;

        private FrmGeocodingExport pFGE;
        private esriUnits m_CurMapUnits;


 

        #region 图幅号计算函数
        private IEnvelope FromGeocodingDawn()
        {

            //计算要素的值
            int h = this.m_1s1000000_row ;//1:100万行号
            int l = this.m_1s1000000_list ;//1:100万列号

            ScaleMark ScaleMark_1s1000000 = new ScaleMark();
            IPoint scaleDelta_1s1000000 = new PointClass();
            ScaleMark_1s1000000 = 0;
            this.initialScaleMark(ScaleMark_1s1000000, scaleDelta_1s1000000);

            double delta_x = scaleDelta_1s1000000.X;//1:100万经差(度)
            double delta_y = scaleDelta_1s1000000.Y;//1:100万纬差(度)

            ScaleMark pScaleMark = new ScaleMark();
            IPoint scaleDelta = new PointClass();
            pScaleMark = (ScaleMark )m_scale ;
            this.initialScaleMark(pScaleMark , scaleDelta);

            double delta_xp = scaleDelta.X;//1:10万经差(度)
            double delta_yp = scaleDelta.Y;//1:10万纬差(度)

            int hp = m_assign_row;
            int lp = m_assign_list;

            IEnvelope pEnvelope = new EnvelopeClass();

            if (m_assign_list != 0 && m_assign_row != 0)
            {
                //进行指定图幅号左上角点经纬度计算
                double ymax = h * delta_y - (hp - 1) * delta_yp; //纬度
                double xmin = (l - 31) * delta_x + (lp - 1) * delta_xp;//经度

                //推算指定图幅号右下角点坐标
                double ymin = ymax - delta_yp;
                double xmax = xmin + delta_xp;

                //将点转换成地图存储单位Map(Metres)  convertUnits
                //esriUnits CurMapUnits = this.axMapControl1.Map.MapUnits;
                IUnitConverter UC_map = new UnitConverterClass();

                double yMax = UC_map.ConvertUnits(ymax, esriUnits.esriDecimalDegrees, m_CurMapUnits);
                double yMin = UC_map.ConvertUnits(ymin, esriUnits.esriDecimalDegrees, m_CurMapUnits);

                double xMax = UC_map.ConvertUnits(xmax, esriUnits.esriDecimalDegrees, m_CurMapUnits);
                double xMin = UC_map.ConvertUnits(xmin, esriUnits.esriDecimalDegrees, m_CurMapUnits);

                pEnvelope.PutCoords(xMin, yMin, xMax, yMax);

                return pEnvelope;
            }
            else
            {             
                return null;
            }

        }
        #endregion

 

        #region 各比例尺经纬度差

        private void initialScaleMark(ScaleMark pScaleMark, IPoint scaleDelta)
        {
            //IPoint[] scaleArr = new IPoint[8];
            //IPoint scaleDelta = new PointClass();

            switch (pScaleMark)
            {
                case ScaleMark.A:
                    scaleDelta.X = 6;//1:100万经差(度)
                    scaleDelta.Y = 4;//1:100万纬差(度)
                    break;
                case ScaleMark.B:
                    scaleDelta.X = 3;//1:50万经差(度)
                    scaleDelta.Y = 2;//1:50万纬差(度)  
                    break;
                case ScaleMark.C:
                    scaleDelta.X = 1.5;//1:25万经差(度)
                    scaleDelta.Y = 1;//1:25万纬差(度)
                    break;
      

转载于:https://www.cnblogs.com/j3eee/archive/2009/02/24/1396901.html

编程实现地图图幅编号转换(C#) 摘要        通过对我国国家基本比例尺地形图的新旧图幅分幅编号系统以及各个图幅区域的坐标范围的比较分析, 以及新旧图幅编号相互转化公式,制作了一个简易的图幅编号转换的程序。 旧图幅编号简介 我国基本比例尺地形图的分幅编号是在国际规定的1:100万地形图基础上,按经纬度进行分幅和编号的。    1∶100万地形图分幅和编号是采用国际标准分幅的经差6°、纬差4°为一幅图。从赤道起向北或向 阅读详情

相关推荐

地理信息系统中地图分幅的算法实现

地图分幅是一个地理信息系统(GIS)及测绘学中非常重要的概念,它涉及将一个连续的地形或地表分割成小的、管理和操作上更为方便的单元。分幅可以基于特定的规则和标准,如尺寸、比例尺和地图内容。它的重要性在于,通过分幅能够使得巨大的、连续的地图数据变得易于存储、查询、更新和分发。地图分幅通常指的是将一个大范围的地图按照一定的规则划分为多个较小的区域,每个区域称为一个图幅。这种做法便于对地图数据进行分类和管理,同时也简化了数据的可视化和共享过程。

weixin_34598113的博客 1174

地图切割算法

转http://hi.baidu.com/leilumail/blog/item/4910f32a170d0a28d52af127.html以MapXtreme为例说明图片切割算法:1、定义地图范围、地图视野、输出图片大小。所要切割的地图范围。   int x1 = int.Parse(txtX1.Text);     int x2 = int.Parse(txtX2.Text);

cgboy88的专栏 2574

图幅号查询工具:秒级定位与正反查算法解析

在测绘与GIS领域,标准图幅分幅是空间数据组织的基础,其编号规则从1:100万到1:5000逐级嵌套,手工查表效率低下且易错。图幅号查询工具通过固化分幅算法,实现经纬度与图幅号之间的快速正反查,并支持相邻图幅计算与批量处理。该工具不仅提升了图幅接边、空间数据入库等场景的作业效率,还降低了因坐标系或比例尺混淆导致的错误风险。掌握其核心算法与避坑技巧,能有效优化测绘工作流。

weixin_32466193的博客 291

路径规划--地图分割

垂直单元分解可以解决Cobs{C}_{obs}Cobs​为多边形时的运动规划问题。然而,重要的是要理解,这只是众多分解算法中的一个。这些分解算法在2D中可能并不可取;但是,它们却可以更好地推广到更高的维度。 定义 complex(复合体)指的是一组单元及其边界。单元的可以从复合体派生,但复合体包含描述多个单元如何组合在一起的附加信息。cell decomposition(单元分解)仍然指的是将空间...

启小新的博客 5714

C#实现梯形分幅图幅编号计算:新旧规则与GIS地图分幅实战

在GIS与测绘开发中,经纬度与地图图幅编号的相互转换是空间数据组织和检索的基础能力。地图分幅常采用梯形分幅法,通过经差和纬差将全球划分为规则格网,并依据1:100万至1:1万等比例尺建立多级编号体系。理解传统编号与基于比例尺代码的新编号规则差异,是构建经纬度换算系统的关键。这一技术广泛应用于国土资源调查、地形图生产、地理信息系统开发以及测绘类课程设计等场景。本文基于一套完整的C# WinForms工程,讲解从经纬度到图幅编号的正反算算法、图廓点计算与接图表生成,覆盖新旧编号规则的代码实现、DD.MMSS格式

weixin_32821533的博客 210

基于C++的地图图幅号自动计算程序设计与实现

地图分幅是将连续的地球表面按一定规则划分为矩形单元的过程,旨在实现大范围地理数据的标准化组织与高效管理。国际上普遍采用基于经纬度网格的分幅体系,如UTM分区机制;而我国则建立了以1:100万为基础、逐级细分的国家基本比例尺地形图分幅系统。其中,1:5万比例尺图幅作为中等精度制图的核心,在国土规划、军事指挥等领域广泛应用。其图幅号由行号(字母)和列号(数字)组合构成,体现明显的层次化编码特征。该编号体系不仅支持快速图件检索与拼接,还为GIS空间索引构建提供了逻辑基础,是后续坐标转换与程序化生成的关键前提。

weixin_42348783的博客 897

地图分幅计算 之二 新图幅号计算及实现(C++)

在了解了新旧图幅号的基础之后,就可以开始图幅号的计算了,本文是用C++编写。 在知道比例尺后,经度和维度的差值是确定的,如下表所示: 比例尺 1:100万 1:5万 1:25万 1:10万 1:5万 1:2.5万 1:1万 1:5千 经差 6.0 3.0 1.5 0.5 0.25

小粪球的专栏 5579

地图分幅算法的AE实现

地图分幅算法的AE实现,详细介绍地图分幅定义,制作流程,编码实现运行

地图分幅组件的实现(三) ——标准图廓组件

图廓的构成其实相当复杂,不同比例尺下,图廓规定是不一样的。但是他们有一个共同点,即如果图号确定,那么所有布局的位置信息在ArcMap都会被确定。图廓组件的设计,应当尽量和数据分离,这样在不同数据情况下,都能使用,而无须改动。       以百万分幅为例,其他比例尺类似。百万比例尺下,图廓的五个主要部分是,主图区,接图表,比例尺,(高度表在大部分专题图中不予考虑),图例。其他还有一些是文本描述都可

791

地图分幅转换小程序(相当的实用)

主要是针对地图新旧图幅转换,经纬度查询,可以根据所知道的经纬度查询不同比例尺下的地图图幅号。并方便的相互转换。

AI气象预报:数值模式融合与短临预警的工程实践

气象预报正经历从物理推演到数据驱动的认知范式转变。AI气象预报并非替代传统数值模式,而是通过数值模式融合弥补其在参数化误差、初值敏感性和计算效率上的固有瓶颈。其技术价值在于提升短临预警时效性与空间精度,支撑航空调度、电力调控、防洪应急等关键场景。实践中需兼顾物理一致性、可解释性与业务系统兼容性,避免纯黑箱建模带来的外推失效与不确定性缺失风险。本文聚焦AI作为超分辨率引擎、误差矫正器和短临加速器的三类落地路径,解析HEALPix投影、多尺度图建模、轻量级U-Net等核心适配方法。

weixin_28221501的博客 299

地图分幅组件的实现(五)——应急制图的理解

汶川地震三周年之际,纪念的文章和报道很多,感慨之际想到了三年前地震发生后,自己也积极参与了减灾中心的技术支持。时间过得太快了,应急系统也因为这一历史性事件,突然有了飞速的发展。 地震,海啸,洪水是目前国内应急关注的重点,而应急关注的还有很多其他的行业,例如环境,公安等等。这几年陆陆续续接触了一些应急方案的咨询,从奥运安保到地震应急保障,应急的解决方案都陆续把关注焦点转向了地理信息系统。应急...

zhangziyangup 132

AMCL代码详解(六)amcl中的重采样

每次都从w1左边的竖线开始转,显而易见,转到w1的概率为0-w1之间的随机数,转到w2的概率为w1到w1+w2之间的随机数,转到w3的概率为w1+w2到w1+w2+w3之间的随机数,后面的依次类推。当某个粒子的权值较大的时候,产生的随机数落在相应区间的概率就会增大,从而实现了对权值大粒子的多次复制,权值小的粒子的剔除。可以看出,在整个重采样的过程中,粒子进行了两次种情况的刷新,一种是随机生成的新的粒子,一种是对原来的粒子的复制。得到的值越大,说明粒子的权重越小,当前粒子的可信度比较小,需要重采样粒子。

YiYeZhiNian的博客 1580

地图分幅组件的实现(七)——非标准制图过程的自动化

前面的几节主要关注制图标准化,这一节关注的是非标准化制图。所谓非标准制图,简单说来就是没有国家标准或行业标准的地图需要生产,此类地图多偏向专题类型的地图版式。注重地理分析功能的地图,一般并不关注地图的排版,因为地图方式的结果呈现并非由地图专业人员来完成,而是其他开发人员完成,故对

阿翔 2107

Mplus—随机截距交叉滞后模型(Random Intercepts Cross-Lagged Panel Model, RI-CLPM)

介绍随机截距交叉滞后模型(Random Intercepts Cross-Lagged Panel Model, RI-CLPM)的相关知识,例如模型内容、Mplus语法及对应网址等。

m0_54401011的博客 9537

NVIDIA DGX Spark实战指南:从开箱到AI模型高效部署

本文详细介绍了NVIDIA DGX Spark的开箱体验、硬件架构及AI模型高效部署实战指南。从1 PetaFLOP算力的迷你设备到Grace Blackwell超级芯片的深度解析,再到五分钟快速上手指南和大模型部署技巧,帮助开发者充分利用这款全球最小AI超级计算机的性能优势。

weixin_29239279的博客 1366
上一篇: arcgis server 9.2代码阅读笔记二:在页面上动态加载图层
下一篇: ArcGIS map Cache
developer2016
博客等级 码龄10年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值