Openlayers:DMS-DD坐标形式互相转换
将DMS拆分为度、分、秒 计算总秒数:秒 + 分 × 60 总秒数超过3600则转化为度数:度 = (总秒数 / 3600) 剩余秒数为总秒数 % 3600 分和秒的范围限制:分 0-59,秒 0-59 不能超过度数范围 需要考虑浮点精度问题
发布日期:2025-04-29 02:10:15
浏览次数:13
分类:精选文章
本文共 1153 字,大约阅读时间需要 3 分钟。
OpenLayers中DD与DMS坐标转换的实现
作为一名开发者,我在处理地理坐标时经常需要将坐标格式进行转换。在OpenLayers中,DD(度度制)与DMS(度、分、秒)是主要的坐标表示方式。之前在实现DD到DMS的转换时,发现直接转换反向操作较为复杂,因此决定详细记录解决方案。
DD与DMS坐标转换
在OpenLayers中,将DD坐标转换为DMS非常简单。DD坐标直接可以通过公式转换为度、分、秒。转换公式如下:
DMS = (DD × 3600 + 180) / 360
例如,将经度度转换为度、分、秒:
- 120.45° = (120.45 × 3600 + 180) / 360 = (433620 + 180) / 360 = 433800 / 360 = 120° 12' 0"
不过,反向转换(DMS到DD)时就比较复杂了。为了实现准确的反向转换,需要考虑分和秒的有效范围。具体来说:
例如,将DMS 120° 12' 0" 转换为DD:
- 总秒数 = 12 × 60 + 0 = 720秒
- DD = (720 + 120 × 3600) / 3600 = (720 + 432000) / 3600 = 432420 / 3600 = 120.45°
开发实现
在实现反向转换时,需要注意以下几点:
实现代码
function dmsToDms(dd) { let d = Math.floor(dd); let remainder = (dd - d) * 3600; let m = Math.floor(remainder / 60); let s = remainder % 60; return { d: d, m: m, s: s };}function dmsToDd(dms) { let d = dms.d; let m = dms.m; let s = dms.s; let totalSeconds = m * 60 + s; let dd = d + (totalSeconds / 3600); return dd;} 总结
通过以上方法,我们可以实现DD与DMS坐标之间的互相转换。在OpenLayers项目中,选择合适的坐标格式取决于实际需求。如果需要更高精度的转换,可以参考上述实现方式进行扩展。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2026年06月10日 16时04分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP大文件切片下载代码
2023-03-01
php如何做表格,新手怎么制作表格
2023-03-01
RabbitMQ集群 - 普通集群搭建、宕机情况
2023-03-01
php如何正确的获得文件的后缀名
2023-03-01
PHP如何生成唯一的数字ID
2023-03-01
PHP如何获取当前页面的最后修改时间
2023-03-01
PHP如何读取json数据
2023-03-01
PHP字符串
2023-03-01
PHP字符串递增
2023-03-01
php学习之基础语法
2023-03-01
RabbitMQ集群 - 仲裁队列、Raft协议(最详细的选举流程)
2023-03-01
PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
2023-03-01
PHP学习总结(12)——PHP入门篇之变量
2023-03-01
PHP学习总结(13)——PHP入门篇之常量
2023-03-01
PHP学习总结(14)——PHP入门篇之常用运算符
2023-03-01
PHP学习总结(1)——PHP入门篇之PHP可以做什么?
2023-03-01
PHP学习总结(2)——PHP入门篇之PHP代码标识
2023-03-01
PHP学习总结(3)——PHP入门篇之PHP的echo语句
2023-03-01
PHP学习总结(4)——PHP入门篇之PHP计算表达式
2023-03-01