openlayer 加载4547坐标系 以及 wfs服务数据(或其他坐标系)

news2025/2/22 5:53:29

1.首先查看坐标系基础信息如范围等:如下图:
在这里插入图片描述
2.若将地图设置成4547坐标系:
核心代码:

    proj4.defs(
      "EPSG:4547",
      "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs"
    );
    register(proj4);
    const projection = new Projection({
      code: "EPSG:4547",
      units: "metre",
      extent: [344577.88, 2380651.49, 655422.12, 5036050.38],
    });
    var map = new Map({
      target: "map",
      view: new View({
        center: [495186.517, 2496151.273600001],
        zoom: 2,
        projection: projection,
      }),
      layers: [
        new TileLayer({
          className: "baseLayerClass",
          source: new Tianditu({
            key: "1d109683f4d84198e37a38c442d68311",
            projection: projection
          }),
        }),
      ],
    });

最后你将得到一个如下图所示的地图:
在这里插入图片描述
这样的地图就是4547坐标系

3.若要加载4547坐标系的wfs数据:
如下图所示,wfs查询后返回的数据:为4547的数据,这点也可以在wfs服务的xml文件中查看的到:
wfs服务返回的数据如下图所示:
在这里插入图片描述
在这里插入图片描述
wfs服务的xml如下图所示:可以看到数据是4547坐标系(这里是超图的wfs服务)
在这里插入图片描述

4.核心加载代码:

    const vectorSource = new VectorSource({
      format: new GeoJSON(),
      loader:function(extent, resolution, projection, success, failure) {
     const proj = projection.getCode();
     const url = wfsUrl;
     const xhr = new XMLHttpRequest();
     xhr.open('GET', url);
     const onError = function() {
       vectorSource.removeLoadedExtent(extent);
       failure();
     }
     xhr.onerror = onError;
     xhr.onload = function() {
       if (xhr.status == 200) {
         const features = vectorSource.getFormat().readFeatures(xhr.responseText,{
          dataProjection:"EPSG:4547",
          // featureProjection:"EPSG:4547",
         });
        //  const features = vectorSource.getFormat()
        //  console.log('这是features',features);
         vectorSource.addFeatures(features);
         success(features);
       } else {
         onError();
       }
     }
     xhr.send();
   },
    });

    const vector = new VectorLayer({
      source: vectorSource,
      style: new Style({
        stroke: new Stroke({
          color: "rgba(0, 0, 255, 1.0)",
          width: 10,
        }),
      }),
    });

5.注意:readFeatures 的 dataProjection和featureProjection属性,若你的地图设置的是4326坐标系则需要设置为:即源数据为4547,转换数据为4326,则可在4326的地图上绘制出4547的数据。

{
          dataProjection:"EPSG:4547",
          featureProjection:"EPSG:4326",
}

6.这里我放置一下wfs服务链接,仅供参考使用超图wfs的小伙伴,(其中token为用户自己的超图服务token)

https://ditu.yjgl.sz.gov.cn:8443/iserver/services/data-GD_SZ_YWSJ_CIMGXY/wfs200?token=token&version=2.0.0&count=10000&service=WFS&request=GetFeature&outputFormat=json&typenames=GD_SZ_YWSJ_CIMGXY:排水渠

其余server服务小伙伴参考3的数据返回格式,是一样的返回geojson格式的数据即可。
7.openlayer 注册坐标系:注册了之后可使用 “EPSG:4547”,例如4代码中的dataProjection:“EPSG:4547”

    proj4.defs(
      "EPSG:4547",
      "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs"
    );
    register(proj4);

8.openlayer 生成projection,例如2代码中的projection: projection,

    const projection = new Projection({
      code: "EPSG:4547",
      units: "metre",
      extent: [344577.88, 2380651.49, 655422.12, 5036050.38],
    });

9.proj4
http://proj4js.org/
npm 安装后 import proj4 from “proj4” 即可

npm install proj4

在这里插入图片描述
10.坐标系proj4可在EPSG官网查看复制:
https://epsg.io/
在这里插入图片描述
11.具体坐标系相关可跳转至另外一篇博文:
点击跳转

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ModelBox姿态匹配:抖抖手动动脚勤做深呼吸

摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践。本文分享自华为云社区《姿态匹配:抖抖手动动脚勤做深呼吸》,作者:吴小鱼。 在之前发布的AI说ModelBox推理真的高效吗一文中&…

对于含有琥珀酰亚胺酯的叠氮试剂Azidoacetic Acid NHS Ester,N3-C5-NHS ester,N3-C3-NHS ester 知识分享

本文重点为大家总结关于含有琥珀酰亚胺酯基团的叠氮基相关试剂的性质特点,西安凯新生物科技有限公司​主要从Azidoacetic Acid NHS Ester、N3-C5-NHS ester、N3-C3-NHS ester进行分享。 一、Azidoacetic Acid NHS Ester CAS:824426-32-6 中文名&#xff…

Linux shell脚本之回顾及实用笔记

一、前言 我们从事运维的小伙伴,除了自动化运维外,在没有自动化条件下,借助shell脚本/Python脚本来提升运维效率,无疑是一个必选项,当前也可以自建自动化运维平台,我们这里还是以Linux shell脚本为主,来汇总一些常用的运维脚本,对于有基础的同学,也随本文一起回顾下相…

【学习笔记】《模式识别》2:聚类分析

聚类分析 文章目录聚类分析一、聚类分析的概念二、相似性的测度1.距离的四条基本公理2.欧氏距离(Euclid,欧几里得)--距离3.马氏距离(Maharanobis)4.马氏距离与欧氏距离之间的关系5.明氏距离(Minkowaki)6.汉…

4款实用的黑科技软件,白嫖党最爱,功能强大到离谱

闲话少说,直上干货。 1、Dism 这是一款国人研发,免费又好用的电脑优化工具,备受全球电脑爱好者追捧,它解决了系统安装与维护两大痛点问题——自定义设置与优化,相当于给电脑请了免费“保姆”。从系统安装到调校&#x…

LabVIEW基础-VI Scripting

文章目录使用过程前面板界面修改属性节点VI属性无输入时默认当前VI。输入VI引用的静态方法输入VI引用的动态方法获取对象引用从VI获取前面板所有控件的引用设置修饰物的前景色获取选项卡1上所有的数值控件并设置标签前景色从VI获取前面板选项卡的引用-转换为特定的类-获取选项卡…

B+树的插入、删除和分裂,注意国内教材和国外的对于B+树的定义的不同

B树 1 国内教材上B树的定义 一棵 m 阶的B树满足 (考研教材): 每个非叶子结点最多有 m 棵子树(孩子结点)根结点至少有2棵子树 (1层除外),非叶结点至少有 m/2 (向上取整) 棵子树结点的子树的个数与关键字的个数相等: 介于 m/2 (向…

DSL查询文档

目录一、DSL查询语法二、DSL查询分类全文检索查询精确查询地理坐标查询复合查询复合查询——fuction score复合查询——Boolean Query三、搜索结果处理排序分页高亮一、DSL查询语法 DSL Query基本语法 查询成功 二、DSL查询分类 DSL Query的分类 Elasticsearch提供了基于…

【数据结构基础】之树的介绍,生动形象,通俗易懂,算法入门必看

前言 本文为 数据结构基础【树】 相关知识,下边将对树的定义与相关概念,二叉树的定义、特点与性质,二叉树的存储结构,二叉树的遍历,二叉查找树,平衡二叉树,红黑树,B-树与B树等进行详…

六十九、Vue3

Vue3一 Vue3的变化二 创建Vue3项目的两种方式2.1 vue-cl创建2.2 vite创建三 常用API3.1 setup3.2 ref和reactive3.3 计算和监听属性3.4 生命周期3.5 自定义hook函数一 Vue3的变化 性能的提升 打包大小减少41% 初次渲染快55%, 更新渲染快133% 内存减少54% 源码的升级 使用Proxy…

Spring Boot 并行任务,这才是优雅的实现方式!

Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task;import java.text.SimpleDateFormat; import java.util.Date;import org.springframework.scheduling.annotation.Scheduled; …

不会Python迟早失业?Python何以成为找工作必备技能(资料下载)

前言 大数据时代,没听说过Python的人可能很少。(文末送福利) 未来和data与AI紧密连接的当下,金融公司纷纷改成Fintech(financial technology),投行热衷于向科技公司砸钱,就连卖汉堡…

推进生态社会化分工 与伙伴共担未来 数商云受邀出席京东科技合作伙伴论坛

11月1日,2022京东云城市峰会上海站正式启幕。京东科技携手生态伙伴,共聚“合作伙伴论坛”。作为京东集团科技生态的总担当,京东科技秉承“生态社会化分工”理念,与伙伴共担未来。会上,8大场景合作案例依次分享&#xf…

STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833

实践制作DIY- GC0094-DDS信号发生器 一、功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 LCD1602显示器AD9833信号模块4*4矩阵键盘多个按键 1.通过4*4键盘来设定频率值和三角波正弦波的幅度&…

内网搭建图片网站:软件安装配置 1-3

现代的手机功能越来越强大,也让我们能随时随地抓拍有趣瞬间。而照片越来越多,全都存放在手机上并不现实,存在云端又有安全隐患,只能存放在自己的电脑上。而这又带来难以随时与他人分享的问题。不过,我们完全可以在自己…

智能网联赋能汽车品牌全球化 第五届全球汽车发展趋势论坛将召开

当前,全球汽车产业正处于百年未遇的大变革时期,全球汽车产业格局正在重塑,其中,中国汽车产业正在依靠智能化、网联化优势不断加深在全球汽车市场中的影响力,正在迈入高质量发展的新阶段。如何利用智能网联技术以及顺应…

单片机毕业设计 stm32智能婴儿床系统

文章目录1 简介2 项目背景3 设计概要4 设计方案5 硬件清单5.1 stm32主控5.2 OLED显示屏5.3 继电器模块5.4 L298N电机驱动板模块5.5 MAX声音传感模块 一个5.6 Jdy-311蓝牙模块5.7 音乐播放模块6 软件部分设计6.1 声音传感器子函数6.2 声音传感器软件7 实现效果8 关键代码1 简介 …

大数据行业现在工作很难找吗?

工作到底好不好找,市场需求是一方面,更多的还是要看个人成长背景和实际能力~ 抛开两点都不谈就单说好找或者不好找纯属有点耍流氓了~ 大数据开发主要是负责大数据挖掘,大数据清洗处理,大数据建模等,负责大规模数据的处…

C动态内存管理|有张三和如花的故事你心动了吗

C内存管理C程序地址空间为什么存在?1.堆区空间足够大2.堆区空间大小更为灵活动态内存函数mallocfreefree的注意事项内存泄漏没有free和free另外的细节不可对堆区的空间多次释放释放后要对指针置为NULL,避免野指针free(NULL)会有影响吗callocreallocreall…

报表工具怎么选?JAVA开源工具那么好用,为什么大家还花钱买商用

做报表很长时间了,最近发现一个比较奇怪的现象:各家工具使出各种手段做广告、吸引注意力,但是受到程序员热烈追捧的反倒一直是 Jaspereport + ireport 这种免费、开源的 JAVA 工具,几个开了专版讨论 JAVA 报表的论坛里…