Openlayers 坐标系全面解析

该文介绍了如何在OpenLayers中进行坐标转换,包括EPSG:4326与EPSG:3857的标准转换,以及自定义坐标系EPSG:4490和EPSG:4525之间的转换。同时,文章详细阐述了如何处理和转换GeoJSON中的坐标,特别是涉及到EPSG:4542投影坐标系的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、EPSG:4326 与 EPSG:3857的坐标转换

import {transform} from 'ol/proj';//导入方法
//EPSG:3857 转 EPSG:4326
transform([12202419, 4469830],"EPSG:3857","EPSG:4326")

//EPSG:4326 转 EPSG:3857
transform([109.6162, 37.2201],"EPSG:4326","EPSG:3857")
      

2、Openlayers 自定义坐标系(EPSG:4490 和 EPSG:4525)

import proj4 from 'proj4'
transform([4107376, 37379693],"EPSG:4525","EPSG:4490")

3、 openlayers自定义投影坐标系(EPSG:4542),GeoJSON读取geometry和坐标转换

思路:
1、拿到所有的featurens,
2、申明一个临时变量来保存所有的features
3、然后循环调用convert2000CoorTo84转换
4、再把转换后的值push到临时变量中,
5、返回一个转换坐标后的geometry
定义转换函数:
1、引入proj4

import proj4Tool from 'proj4'
import { register } from 'ol/proj/proj4';
import GeoJSON from 'ol/format/GeoJSON';

2、定义扩展的EPSG

defineExtarProject() {
    proj4Tool.defs([
      [
        'EPSG:4543',
        '+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'
      ],
      [
        'EPSG:4542',
        '+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs'
      ],
      [
        'EPSG:26713',
        '+proj=utm +zone=13 +ellps=clrk66 +datum=NAD27 +units=m +no_defs'
      ]
    ]);
    register(proj4Tool);
  }

4、读取数据并转换坐标系

  _readGeometryFromGeojson(geoJson, orgEpsg="EPSG:4326") {
    if (typeof (geoJson) === 'string') {
      try {
        geoJson = JSON.parse(geoJson)
      } catch (error) {
        console.log('convert data ...', error)
      }
    }
    var geojsonFeature = new GeoJSON().readFeature(geoJson, {
      dataProjection: orgEpsg, // 元数据的投影坐标
      featureProjection: "EPSG:4326" //规定要素以哪种坐标显示
    });
    return geojsonFeature;
  }

5、获取数据

// 调用后台接口获取到geojson
axios.get('/getGeojson').then(geojson=>{
	this._readGeometryFromGeojson(geojson, 'EPSG:4542');
}).catch(err=>{
	console.log(err)
})
``
回答: OpenLayers中常用的坐标系例子有EPSG:4326和EPSG:3857。EPSG:4326对应WGS84坐标系统中的地理坐标(经纬度),而EPSG:3857是一种墨卡托投影坐标,用于地图显示效果较好。通常情况下,数据存储在EPSG:4326中,显示在EPSG:3857中。在OpenLayers中,可以使用坐标转换功能来实现不同坐标系之间的转换。例如,将EPSG:3857转换为EPSG:4326,可以使用transform方法,传入需要转换的坐标、原始坐标系和目标坐标系。具体使用方法如下所示: ```javascript import {transform} from 'ol/proj'; // EPSG:3857转EPSG:4326 console.log(transform(\[12202419, 4469830\], "EPSG:3857", "EPSG:4326")); ``` 这样就可以将EPSG:3857坐标系下的坐标转换为EPSG:4326坐标系下的坐标。 #### 引用[.reference_title] - *1* [OpenLayers自定义坐标系](https://blog.youkuaiyun.com/qq_24309981/article/details/81149602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Openlayers 坐标系全面解析](https://blog.youkuaiyun.com/A____t/article/details/124626079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值