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

openLayers实战(八):坐标系及其转换

 

坐标系介绍

EPSG: 3857 --web地图,基于球体的、web墨卡托投影(伪墨卡托投影Pseudo-Mercator)的投影坐标系,范围为纬度85度以下,由于google地图最先使用而成为事实标准。至今,大多互联网地图都使用EPSG3857,主要是因为该投影是等角投影,适合地图定向及导航,但是纬度越高,面积变形越大。

EPSG: 4326 --全球通用,基于WGS84椭球的经纬度坐标系,大地坐标系,在 EPSG: 4326 坐标系中,经度表示位置的横向偏移量,范围为 -180 到 180,单位是度;纬度表示位置的纵向偏移量,范围为 -90 到 90,单位也是度。

      // 初始化地图配置this.map = new Map({target: this.mapDom, // 地图容器view: new View({center: [121.70185, 31.298777], // 地图中心点zoom: 15,minZoom: 14,maxZoom: 18,projection: "EPSG:4326", // 椭球extent: this.extent, // 限定范围}),

地图上的点是何坐标系

以 EPSG:4326 椭球坐标系为例

1.监听地图的事件得到的点位信息

如:

this.map.on("click", function()) // 点击
this.map.on("pointermove", function()) // 鼠标指针移动

得到的都是EPSG: 4326坐标系下的信息。

2.交互式绘制 interaction 的 draw

绘制出的圆形并不会考虑当前地图的椭球坐标系。这是因为 draw 方法默认使用的是平面坐标系,而不是地球的椭球坐标系。

3.圆形、多边形的坐标系转换

import * as turf from '@turf/turf';// 假设你已经通过 'draw' 方法绘制了一个圆形对象 'circleFeature'// 获取绘制的圆形对象的几何信息
var geometry = circleFeature.getGeometry();// 将几何信息转换为椭球坐标系
var coords = geometry.getCoordinates();
var circleOnEllipse = turf.toWgs84(coords);// 创建一个新的圆形对象,使用椭球坐标系
var circleFeatureOnEllipse = new Feature({geometry: new GeoJSON().readGeometry(circleOnEllipse)
});// 将新的圆形对象添加到矢量源中
vectorSource.addFeature(circleFeatureOnEllipse);

 4.单点的坐标系转换

import * as turf from '@turf/turf';const x1 = 123; // 假设的x坐标
const y1 = 45; // 假设的y坐标
const sourceCRS = 'EPSG:3857'; // 源坐标系(墨卡托投影坐标系)
const targetCRS = 'EPSG:4326'; // 目标坐标系(经纬度坐标系,WGS84)// 创建一个点要素
const point = turf.point([x1, y1]);// 进行坐标转换
const transformedPoint = turf.transformRotateScaleTranslate(point,0, // 旋转角度1, // 缩放比例[0, 0], // 平移向量sourceCRS,targetCRS
);// 提取转换后的坐标
const [longitude, latitude] = turf.getCoord(transformedPoint);console.log('经度:', longitude);
console.log('纬度:', latitude);

http://www.lryc.cn/news/129089.html

相关文章:

  • DAY06_SpringBoot—简介基础配置yaml多环境开发配置整合第三方技术
  • 无涯教程-Perl - setpwent函数
  • 代码随想录-数组篇
  • vue3+element-plus表格默认排序default-sort失效问题
  • CH32V203 单片机 I2C 使用
  • 链表OJ题
  • Llama 2免费托管及API提供
  • 回到未来:使用马尔可夫转移矩阵分析时间序列数据
  • vue element 多图片组合预览
  • Vue2集成Echarts实现可视化图表
  • 3 Python的数据类型
  • new String()到底创建了几个对象
  • 第五十五天
  • 【推荐】深入浅出benan的生命周期
  • mysql使用redis+canal实现缓存一致性
  • 9.利用matlab完成 泰勒级数展开 和 符号表达式傅里叶变换和反变换 (matlab程序)
  • 文字点选验证码识别(上)-YOLO位置识别
  • ssh远程连接慢解决方法
  • 10.4K Star!程序员为程序员针对性优化的开源免费笔记
  • ppt中线材相交接的地方,如何绘画
  • [VS/C++]如何更好的配置DLL项目中的成品输出
  • REC 系列 Visual Grounding with Transformers 论文阅读笔记
  • Linux常用命令总结
  • Scratch 之 制作超丝滑 FNF 推条
  • java通过反射,动态调用指定注解的方法
  • QT学习方法
  • C++中的类型擦除技术
  • 激光雷达 01 线数
  • PHP 公交公司充电桩管理系统mysql数据库web结构apache计算机软件工程网页wamp
  • HTML <strong> 标签