iClient求点所在瓦片行列号

2024-02-25 09:18

本文主要是介绍iClient求点所在瓦片行列号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:yangjl

前言

前段时间有客户小伙伴问我如何通过坐标点来获取所在瓦片的行列号,在查看网上博客以及资料后解决了小伙伴的需求并写下这篇文章。首先我们需要理解地图比例尺以及分辨率的意义。分辨率在GIS中可以理解为地面分辨率,或者空间分辨率,其意义表示一个像素代表的地面实际距离,它常用于电子设备屏幕上来衡量实际距离,而比例尺是表示图上距离与实际距离之比。

理论部分
1. 分辨率与比例尺转化

它们之间是有方法来对应与转换,我们这里只讨论经纬度下转换,以下为转换式子
Scale=0.0254/DPI/resolution/Math.PI/2/6378137*360;
其中0.0254代表是每英寸0.0254米,DPI一般为96,可以描述为每英寸96个像素点,在iServer中可以对DPI进行设置,6378137为地球半径。如果小伙伴还想了解平面坐标系的转换可以参考https://www.jianshu.com/p/4ddc870f9528

2. 瓦片行列号换算原理

小伙伴如果网上去查找相关原理其实有很多的方法与说明,大概的意思可以理解为首先算出屏幕上的地理坐标点到瓦片切图原点的实际距离L真实,然后算出一个瓦片的实际长度L瓦片真实。然后用L真实除以L瓦片真实。即可得此时的瓦片行列号。
下面我们直接给出瓦片行列号换算公式

X =((x0 - x)/( tileSize*resolution))
Y=((y0 - y)/( tileSize*resolution))
实操部分
1. 发布ugcv5服务

首先利用iDesktop进行地图切片,本次使用的是wg84的经纬度坐标,epsg4326,使用Word示例数据作图,然后切图,切图参数以下,注意块大小以及dpi为我们可用数据
在这里插入图片描述然后使用iserver发布,发布成功后进行对接出图。如何对接出图以及获取出图参数我在这里不再赘述,之前我写的文章中已经详细说明如何对接出图
https://blog.csdn.net/supermapsupport/article/details/103610851
这是成功对接出图的例子。
在这里插入图片描述

1. 计算点所在行列号

现在可用为map对象注册点击事件,获取当前地图的分辨率,以及坐标点位置,
并利用已知的dpi以及当前分辨率通过分辨率比例尺的转换方式得到当前比例尺

 map.on('click',(e)=>{var point = new ol.geom.Point(e.coordinate);var iconStyle = new ol.style.Style({image: new ol.style.Icon(({src: '../img/markerbig_select.png'}))});var feature = new ol.Feature(point);feature.setStyle(iconStyle);var pointSource = new ol.source.Vector({features: [feature],wrapX: false});vectorLayer = new ol.layer.Vector({source: pointSource});map.addLayer(vectorLayer);
var scale2=view.getResolution()/(0.0254/96/Math.PI/2/6378137*360)}

现在坐标原点,当前分辨率,点击点的坐标,瓦片大小都已知,最后通过我们提供的瓦片行列号换算计算方法可得到当前分辨率下点击点所在的瓦片行列号

var col=parseInt((-180 - e.coordinate[0])/( 256*view.getResolution()));
var row=parseInt((83.62359619140626 - e.coordinate[1])/( 256*view.getResolution()));

在这里插入图片描述
最后,我们可用通用iserver当前瓦片地图服务提供的tileImage操作可进行验证
在这里插入图片描述
最后测试与实际情况符合。

总结

通过坐标点来获取当前瓦片的行列号其实不难,通过今天所说的方式得到瓦片行列只是运用的一方面,如果小伙伴感兴趣,可以去尝试自己在当前的地图范围以及比例尺级别下获取所有的瓦片。

这篇关于iClient求点所在瓦片行列号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745048

相关文章

行列视(RCV)报表工具与其他报表工具的对比研究

行列视(RCV)报表工具与其他报表工具的对比研究 在当今信息化社会,报表工具已成为企业日常运营和决策分析不可或缺的一部分。行列视(RCV)报表工具以其独特的优势,在市场中逐渐崭露头角。本文将通过对RCV报表工具与其他报表工具的对比研究,分析RCV的优缺点,以及其在企业应用中的实际效果。 一、RCV报表工具与其他报表工具的主要区别 1. 数据处理能力 RCV报表工具具备强大的数据处理能力,能

console 确定对象所在js文件

项目里一个页面可能含有多个js    可能一个js引用了另外一个js的对象 怎么找到这个对象所在的js文件呢 利用:console.dir(对象名称); 如图:

对错问题:凡事没有绝对的对与错,要看义所在、良知所在

孔子说:君子对于天下所发生的很多事,如评判政策变动、战争等,没有绝对的对,也没有绝对的错,一切要看事情本身是否符合“ 义 ”。

行列视(RCV)技术助力环保产业实现可持续发展

行列视(RCV)技术在助力环保产业实现可持续发展方面发挥着重要作用。该技术作为一种面向生产型企业的解决方案,通过解决生产过程实时、历史数据与生产管理所需要的管理指标之间的统计、计算问题,为企业的可持续发展提供了有力支持。 首先,行列视(RCV)技术可以帮助环保产业实现资源的高效利用。通过集成和整合各项生产指标数据,该技术能够为企业提供全面的生产情况分析,帮助企业发现资源浪费的环节,从而优化生产流

轻松获取指定日期所在周的周一和周日

哈喽,大家好呀,好久不见!今天是一篇浅记。根据传入日期自动获取所在周一和周日… 正常基操方法,根据传入日期自动获取所在周一和周日。注意传入日期是周日的情况哈,需要往前推7天才是周一。 楼主方法中已处理,可贴出来直接使用。 /*** 获取日期所在周一和周日** @param date* @return*/private static Map<String, String> getM

同行列对角线的格(信息学奥赛一本通-T1120)

【题目描述】 输入三个自然数N,i,j(1≤i≤n,1≤j≤n),输出在一个N*N格的棋盘中(行列均从1开始编号),与格子(i,j)同行、同列、同一对角线的所有格子的位置。 如:n=4,i=2,j=3表示了棋盘中的第二行第三列的格子, 当n=4,i=2,j=3时,输出的结果是:     (2,1) (2,2) (2,3) (2,4)              同一行上格子的位置     (1,3

SQLServer使用 PIVOT 和 UNPIVOT行列转换

在SQL Server中,PIVOT是一个用于将行数据转换为列数据的操作。它特别适用于将多个行中的值转换为多个列的情况,并在此过程中执行聚合操作。以下是关于SQL Server中PIVOT操作的详细解释和示例: 1、本文内容 概述语法备注关键点简单 PIVOT 示例 适用于: SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analyt

PHP获取IP地址所在的地理位置

一、PHP利用腾讯IP分享计划获取IP地理位置 /*** 获取ip地址的地理位置* @param type $ip ip地址* @return type string*/public static function getIPLocation($ip) {$url = 'http://ip.qq.com/cgi-bin/searchip?searchip1=' . $ip;$ch

行列视(RCV)能解决哪些问题?

答:发电企业传统报表工作一般由Excel或WPS进行数据收集、合并、复制、人工核算和统计等工作方式完成,效率低、工作量大,且容易出错,与数字化、智能化发电厂的发展步伐逐步脱节。在此背景下本系统主要解决: 数据收集问题,利用系统提供的接口实现SIS数据自动采集、其他业务系统指标汇总和采集,而人工录入可利用系统提供自定义界面灵活实现;数据存储问题,利用系统自身的“虚拟数据库技术”,实现实时、统计、报

数组习题(杨辉三角、第二最值、行列和、对角线和等)

1.使用二维数组计算杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ..... 2.输入一个n个元素的一维数组,计算最大的和,最大差(不允许使用排序) 最大和:第一大值+第二大值 最大差:第一大值-最小值   3.输入一个m行n列的二维数组,计算第二小值 4.输入n个元素的一维数组,输入查找的key值 如果key