ol基于4326编码的地图遮罩与反向遮罩

news/2024/5/16 21:10:03

前期准备

ol版本7.1.0   node版本16.14.2   npm版本8.5.0import 'ol/ol.css';
import { Overlay, sphere } from 'ol';
// import { getDistance } from 'ol/sphere';
import Map from 'ol/Map';
import XYZ from 'ol/source/XYZ'
import View from 'ol/View';
import { get, fromLonLat, transform } from 'ol/proj';
import { Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';
import { getTopLeft, getWidth } from 'ol/extent';
import Feature from 'ol/Feature';
import { Fill, Stroke, Icon, Style } from 'ol/style'
import { Polygon, MultiPolygon, LinearRing, Point, Circle } from "ol/geom";//添加图层按钮
import VectorSource from 'ol/source/Vector';
import GeoJSON from 'ol/format/GeoJSON.js';
import { fromExtent } from "ol/geom/Polygon";
// import OLCesium from 'olcs';
import geoJson from '../../../public/json/hf.json'import markerImg from '@/assets/img/bg.png'

正常遮罩

addArea() {if (!this.josndata) {let geo = [geoJson]if (geo.length == 0) {return false;}let features = [];geo.forEach((g) => {console.log(g);let lineData = g.features[0];let routeFeature = "";if (lineData.geometry.type == "MultiPolygon") {routeFeature = new Feature({geometry: new MultiPolygon(lineData.geometry.coordinates),});} else if (lineData.geometry.type == "Polygon") {routeFeature = new Feature({geometry: new Polygon(lineData.geometry.coordinates),});}routeFeature.setStyle(new Style({fill: new Fill({color: "#4e98f444", //填充颜色}),stroke: new Stroke({width: 3, //边界宽度color: [71, 137, 227, 1], //边界颜色}),}));features.push(routeFeature);});// 设置图层this.josndata = new VectorLayer({source: new VectorSource({features: features,}),});// 添加图层this.map.addLayer(this.josndata);}},

反向遮罩

        //创建蒙层,凸显json区域showGuangxiArea() {let initLayer = new VectorLayer({zIndex: 3,source: new VectorSource(),style: new Style({fill: new Fill({color: "rgba( 7, 16, 28, 1)",}),stroke: new Stroke({color: "#26d4fa",width: 2})})});this.map.addLayer(initLayer);this.addConver(initLayer, geoJson);},//添加遮罩addConver(converLayer, data) {const fts = new GeoJSON().readFeatures(data);const ft = fts[0];const converGeom = this.erase(ft.getGeometry());const convertFt = new Feature({geometry: converGeom,});converLayer.getSource().addFeature(convertFt);},//擦除操作,生产遮罩范围erase(geom) {const extent = [-180, -90, 180, 90];const polygonRing = fromExtent(extent);const coords = geom.getCoordinates();coords.forEach(coord => {const linearRing = new LinearRing(coord[0]);polygonRing.appendLinearRing(linearRing);});return polygonRing;},

其中JSON数据是从DataV.GeoAtlas地理小工具系列 (aliyun.com)来拉取的

如果你使用的是3857编码来初始化,请参考下一篇的写法来创建


http://www.mrgr.cn/p/43276887

相关文章

模拟集成电路设计系列博客——6.1.3 多电阻串DAC

在这一小节中,会介绍另一种电阻串DAC的变体,如下图所示[Holloway,1984]:第二个电阻串被连接在连接第一个电阻串的两个相邻节点的缓冲器之间。在如图所示的6-bit例子中,三比特MSB决定了哪两个第一个电阻串的相邻节点被连接到两个中介的缓冲器。第二个电阻串线性采样第一个电…

Linux基础——主机域名解析默认使用IPV6路由

一、问题描述 主机访问内网存储网段,发现域名默认解析的IPV6地址。 ping访问ipv4地址正常通讯。 主机本地解析/etc/resolv.conf的DNS配置正常。# ping 域名默认解析IPV6地址 Ping nasgroup.xxxx.xxxx.com # ping ipv4地址正常 ping -4 nasgroup.xxxx.xxxx.com # 查看本地DNS…

浅析OpenCV分水岭变换watershed函数的markers参数[C++]

0. 前言本文是笔者在学习C++ OpenCV库时学习心得,在学习分水岭变换函数时,由于缺少相关学习资料,导致笔者理解吃力,故写此文章阐述一下对该函数的理解,希望对其他学习人士提供帮助。 本文主要介绍了watershed函数参数以及参数实际表示。 请您按文章次序阅读。 您需要提前了…

基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证

1.算法运行效果图预览2.算法运行软件版本 VIVADO2019.2matlab2022a3.算法理论概述图像阈值计算和分割是图像处理领域的一项重要任务,它通过设定一个阈值将图像从灰度空间转化为二值空间,从而实现对图像区域的有效划分。基于直方图的阈值选取方法主要依赖于图像的灰度直方图分…

Linux基本指令(3)

目录 时间相关的指令: 1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加好后接数个标记,其中常用的标记列表如下: 2.在设定时间方面: 3.时间戳: Cal指令: find指令&a…

C++ 小游戏:战斗之旅

一、游戏名称:战斗之旅 游戏规则 角色选择:玩家可以选择不同的角色,每个角色都有不同的属性和技能。商城:玩家可以访问商城购买不同的装备,包括武器和回复物品。战斗:玩家可以与其他角色进行战斗。在战斗…

【C】---- T6:嵌套循环输出字母

使用嵌套循环,按下面的格式打印字母: F FE FED FEDC FEDCB FEDCBA题目 使用嵌套循环,按下面的格式打印字母: F FE FED FEDC FEDCB FEDCBA 编程 #include <stdio.h>int main(void) {// 以ASCII值定义字母:A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, …

m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面

1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要YOLO(You Only Look Once)是一种实时的目标检测算法,YOLOv2则是其改进版本,由Joseph Redmon和Ali Farhadi于2016年提出。YOLOv2采用了端到端的方式直接从整幅图像预测边界框和类别概率,极大地提高了检测速…

七、OSPF特殊区域及其特性

目录 OSPF区域分类 hello报文中option字段 1.末节区域&#xff08;Stub区域&#xff09; 2.完全末节区域&#xff08;Toally Stub区域&#xff09; 3.七类LSA 4.非完全末节区域&#xff08;NSSA区域&#xff09; 5.完全非完全末节区域&#xff08;Toally NSSA区域&#…

Redis网络相关的结构体 和 reactor模式

目录 1. epoll的封装 结构体aeApiStae 创建epoll fd的封装 epoll_ctl的封装 epoll_wait的封装 2. 结构体aeFileEvent、aeFiredEvent、aeTimeEvent 结构体aeFileEvent 结构体aeFiredEvent 结构体aeTimeEvent 3. struct aeEventLoop aeEventLoop相关的函数 1. 创建eve…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app&#xff0c;上架华为被拒&#xff0c;问题如下&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取&#xff08;电话、相机、存储&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。…

iOS - 多线程-atomic

文章目录 iOS - 多线程-atomic1. 源码分析1.1 get方法1.2 set方法 2. 一般不使用atomic的原因 iOS - 多线程-atomic atomic用于保证属性setter、getter的原子性操作&#xff0c;相当于在getter和setter内部加了线程同步的锁可以参考源码objc4的objc-accessors.mm它并不能保证使…

数据结构单链表”质检员“*2

1.随机链表的逻辑结构复制 原题链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode-cn.com/problems/copy-list-with…

智慧旅游引领旅游行业创新发展:借助智能科技的力量,推动旅游服务的个性化、精准化,提升游客的满意度和忠诚度

随着信息技术的迅猛发展和广泛应用&#xff0c;智慧旅游已成为旅游行业创新发展的重要引擎。智慧旅游借助智能科技的力量&#xff0c;推动旅游服务的个性化、精准化&#xff0c;不仅提升了游客的满意度和忠诚度&#xff0c;也为旅游行业的可持续发展注入了新的活力。本文将从智…

《Vid2Seq》论文笔记

原文链接 [2302.14115] Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning (arxiv.org) 原文笔记 What&#xff1a; 《Vid2Seq: Large-Scale Pretraining of a Visual Language Model for Dense Video Captioning》 作者提出一种多…

《软件设计师教程:数据库系统基础知识大总结》

​ 个人主页&#xff1a;李仙桎 &#x1f525; 个人专栏: 《软件设计师》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ​ ⛺️前言&#xff1a;各位铁汁们好啊&#xff01;&#xff01;&#xff01;今天继续正式学习中级软件设计师考试相关的内容&#xff0c;后续不断更新…

Ansible 自动化运维

一、介绍 1、定义&#xff1a; ansible是自动化运维工具&#xff0c;基于Python开发&#xff0c;具有批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于 paramiko&#xff08;框架&#xff09; 开发的&#xff0c;并且基于模块化工作&#xff0c;本身没有批量…

node.js egg.js

Egg 是 Node.js 社区广泛使用的框架&#xff0c;简洁且扩展性强&#xff0c;按照固定约定进行开发&#xff0c;低协作成本。 在Egg.js框架中&#xff0c;ctx 是一个非常核心且常用的对象&#xff0c;全称为 Context&#xff0c;它代表了当前 HTTP 请求的上下文。ctx 对象封装了…

java中serverlet的体系结构

GenericServlet继承三个接口,HttpServerlet继承GenericServlet

React-editor-js not showing up in a function component

React-editor-js not showing up in a function component react-editor-js 在react 函数组件中显示不出来 真的&#xff0c;我马上就想放弃它了。但是看它周下载量还挺多&#xff0c;我不信别人没遇到过。于是我继续在网络上挖呀挖。只是我一开始的方向错了。我一直以为我的写…