领海基点的重要性-以黄岩岛(民主礁)的领海及专属经济区时空构建为例

目录

前言

一、Turf.js缓冲区绘制

1、缓冲区分析介绍

2、缓冲区参数

3、Mask多边形空洞

4、Mask参数

二、领海基点、领海的WebGIS展示

1、领海基点的绘制

 2、领海面的绘制

三、毗邻区和专属经济区绘制

1、毗邻区的绘制

2、专属经济区的绘制

四、总结


前言

        在上一篇的博客中,我们对黄岩岛(民主礁)的领海基点空间可视化进行了详细介绍,“南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战。在海洋权益知识点中一个非常重要而又容易被忽视的地理概念——领海基线。在高考地理中,这个知识点不仅关乎我们对国家海洋权益的理解,更是我们认识国家海洋战略、维护海洋安全的重要一环。

        领海基线是沿海国划定其领海宽度的起算线,也是划分内水、领海、毗连区、专属经济区和大陆架等管辖海域的法律基础。它可以是沿海国的大潮高潮线,也可以是连接某些选定点的直线基线。在不同海域,基线的划定有着不同的意义和规定。领海基线对于国家来说,具有极其重要的意义。首先,它是国家主权和领土完整的象征。通过划定领海基线,国家能够明确其海洋领土的范围,进而维护其海洋权益。其次,领海基线是维护国家海洋安全的基石。在复杂的国际海洋环境中,一个清晰明确的领海基线能够帮助国家有效应对各种海洋争端和挑战。以下是黄岩岛的领海和毗邻区的相关区域划定示意图:

        如上面所述,当我们划定了领海基点以后,随之明确的距离基点12海里的领海,再往外延伸12海里是毗邻区,领海基点200海里(约370公里)。 在专属经济区内,我们可以进行相关的作业和采集活动。本文以黄岩岛为例,基于之前标注的领海基点,详细掌握如何基于Turf.js来进行多级缓冲区绘制,以绘制领海、毗邻区、专属经济区的面绘制方法,通过详细的方法绘制的介绍,让大家了解如何在前端使用Turf.js来进行缓冲区分析。如果您对这方面也有兴趣,不妨来这里看看。

一、Turf.js缓冲区绘制

         在介绍领海基点绘制之前,我们先来介绍一下Turf.js,它今天进行缓冲区分析的主角。在前端进行空间对象的缓冲计算,经常用得到。因此非常有必要在这里对它的缓冲区分析方法进行简单说明。

1、缓冲区分析介绍

        缓冲计算在现实生活中非常常见,比如需要计算城市主干道的居民区的缓冲距离,比如有效距离要大于15米。GIS缓冲区分析是一种强大的空间分析工具,广泛应用于多个领域。在城市规划中,可以通过为学校、医院等重要设施创建缓冲区来确定其服务范围,从而优化资源配置。在环境保护方面,缓冲区分析可用于确定河流、湖泊等水源的保护区域,以及禁止开采矿物资源的区域。在交通规划中,可以分析道路、铁路等交通设施的周边区域,以便进行交通规划和管理。此外,缓冲区分析也常用于消防安全,例如确定建筑物周边500米范围内的消防水管,以便在火灾发生时快速找到水源。在灾害管理中,缓冲区分析有助于确定地震、洪水等自然灾害的影响范围,以便进行应急救援和灾后重建。通过这些应用,GIS缓冲区分析为决策者提供了重要的空间信息,帮助他们更好地理解和管理地理空间数据。

        计算给定半径的输入要素的缓冲区。支持的单位包括英里miles、公里kilometers和度degrees。当使用负半径时,如果与半径大小相比,结果几何可能太小而无效。如果输入是一个FeatureCollection,则输出的FeatureCollection中将只返回有效的成员 - 也就是说,输出集合可能比输入集合少一些成员,甚至可能为空。缓冲的对象可以是点、线、面。都是可以的。

2、缓冲区参数

        介绍了缓冲区的基本概念和主要应用场景之后。接下来我们来介绍一下缓冲区方法的相关参数。掌握这些参数对于学会方法调用非常有用,希望大家可以先熟悉相关的参数。这些参数对于最终的效果生成有很大的影响,大家可以自己调试相关的参数,来查看实际的效果。

名称类型描述
geojsonFeatureCollection | Geometry | Feature<any>input to be buffered
radiusnumberdistance to draw the buffer (negative values are allowed)
options?Object可选参数 (default {})
options.units?stringany of the options supported by turf units (default "kilometers")
options.steps?numbernumber of steps (default 8)

        根据缓冲对象的不同,返回的对象也有所不同,基本包含以下:FeatureCollection | Feature<Polygon | MultiPolygon> | undefined buffered features。

3、Mask多边形空洞

        有了缓冲区的计算之后,为了将领海、毗邻区、专属经济区的缓冲生成之后,在进行各个面的WebGIS可视化展示时可以独立展示自己的面,因此需要将其它的面进行镂空。比如在展示毗邻区的区域时,需要将毗邻区的缓冲区域中去掉领海的区域。在前端,我们可以使用Turf的Mask方法来生成多边形空洞。获取任何类型的多边形以及一个可选的掩码,并返回一个带有孔洞的多边形外部环。

4、Mask参数

名称类型描述
polygonFeatureCollection | Feature<Polygon | MultiPolygon>GeoJSON Polygon used as interior rings or holes.
mask?Feature<Polygon>GeoJSON Polygon used as the exterior ring (if undefined, the world extent is used)

        经过计算后将返回Feature<Polygon> Masked Polygon (exterior ring with holes)。这两个方法在后面的面缓冲生成中将重复使用,需要掌握具体使用方法,需要掌握。下面结合实际的例子来介绍相应的实例开发。

二、领海基点、领海的WebGIS展示

        在学习了Turf.js的相关知识后,我们来实现领海基点和领海的WebGIS空间可视化的具体展示。在前面的博客中,我们已经得到了计算过的领海基点信息,基于领海基点,我们来绘制领海的面信息。

1、领海基点的绘制

        从前面的博客中,可以知道黄岩岛的领海基点,这里直接将坐标贴出来分享给大家。关键代码如下:

// leaflet 的坐标是纬度、经度
var huangyandao = [[15.135,117.8483333],[15.1233333,117.8466667],[15.1166667,117.8433333],[15.11,117.8366667],[15.1016667,117.825],[15.105,117.7366667],[15.1216667,117.7183333],[15.2116667,117.71],[15.2183333,117.7133333],[15.2233333,117.7216667],[15.225,117.7316667],[15.225,117.74],[15.16,117.8283333],[15.15,117.84],[15.1416667,117.8466667]
];

        下面将这些基点练成一个面,并且将这些点在地图上进行标注。代码如下:

L.polygon([huangyandao],style).addTo(map).bindPopup("南海明珠黄岩岛.");
var turfHuangyandao = new Array();
for (let i = 0; i < huangyandao.length; i++) {//转换成turf需要的坐标格式turfHuangyandao.push([huangyandao[i][1],huangyandao[i][0]]);//构造Leaflet的位置let latlng = L.latLng(huangyandao[i][0], huangyandao[i][1]);var content = "黄岩岛"+i;var title = content;let c = L.circleMarker(latlng, {radius: 5,labelStyle: {text: title,rotation: 0,scale: 1,zIndex: 10,font: "14px Microsoft YaHei",fillStyle: "red",textBaseline: "top" ,minZoom: 9}}).addTo(map);c.bindPopup(content);
}

        来看一下,经过webgis绘制过的效果如下:

 2、领海面的绘制

        对于领海宽度,不同国家规定不同,我国是从领海基线量起,向外最宽不超过12海里。12海里以内的领海、领空及底土等均为国家主权范围,外国船舶享有无害通过权。下面来看下如何生成12海里,生成思路是对领海基点连成的面进行缓冲,选择的缓冲单位是海里。基于Turf.js来进行缓冲计算。最后将领海基点连成的面进行mask计算,这样生成一个环形,即为领海面。相关代码如下:

turfHuangyandao.push(turfHuangyandao[0]);//首尾需要闭合var mask = turf.polygon([turfHuangyandao]);// 创建缓冲区、演示12海里,
const lhbuffered = turf.buffer(mask, 12, {units: 'nauticalmiles',steps: 10});
// 应用掩码(Mask)
const linghai = turf.mask(lhbuffered, mask);
// 将缓冲区结果转换为Leaflet的GeoJSON图层
L.geoJSON(linghai, {style: function(feature) {return {fillColor: "blue",fillOpacity: 0.3,stroke: true,color: "yellow",opacity: 1,weight: 2,};}
}).addTo(map);

        这里缓冲的时候,选择的单位nauticalmiles表示海里,12表示具体的缓冲距离。经过缓冲和mask计算后的领海面展示如下:

         请注意,以上还只是领海的范围,再往外延伸12海里是毗邻区。再往外还有专属经济区。下面我们来讲讲如何绘制毗邻区和专属经济区。

三、毗邻区和专属经济区绘制

        讲完了如何绘制领海基点和领海范围。接下来我们再讲两个非常重要的面,即毗邻区和专属经济区的绘制。以及讲讲海洋权益。

1、毗邻区的绘制

        毗连区是指毗连领海之外的一带海域,从领海基线量起,向海宽度不超过24海里,也就是从领海再向外拓宽12海里。沿海国在其毗连区内具有防止和惩治在其领土或领海内违反其海关、财政、移民或卫生等法律和规章事项的管制权,可见国家在毗连区内行使管制是为了维护本国主权和法律秩序,是为了对违法者进行追究和惩罚。从上可知,毗邻区是领海基线缓冲24海里。关键代码如下:

//毗连区,领海基线再往外12海里
var plqBuffered = turf.buffer(mask, 24, {units: 'nauticalmiles',steps: 10});
//毗连区
var pilianqu = turf.mask(plqBuffered, lhbuffered);
// 将缓冲区结果转换为Leaflet的GeoJSON图层
L.geoJSON(pilianqu, {style: function(feature) {return {fillColor: "#fff700",fillOpacity: 0.3,stroke: true,color: "#fff700",opacity: 1,weight: 2,};}
}).addTo(map);

        来看一下毗邻区的可视化效果,如下图所示:。

2、专属经济区的绘制

         专属经济区从领海基线起不超过200海里,是领海以外并邻接领海的一片海域。在专属经济区内,沿海国享有勘探、开发、养护、管理等权利和从事科学研究、海洋环境保护等管辖权。所有国家享有航行、飞越、铺设海底电缆和管道的自由,但不得从事危害沿海国主权和安全的活动。专属经济区的缓冲距离是200海里,缓冲及mask代码如下:

//专属经济区,领海基线再往外200海里
var zsjjqBuffered = turf.buffer(mask, 200, {units: 'nauticalmiles',steps: 10});
//专属经济区
var zsjjq = turf.mask(zsjjqBuffered, plqBuffered);
L.geoJSON(zsjjq, {style: function(feature) {return {fillColor: "#00ff66",fillOpacity: 0.3,stroke: true,color: "#00ff66",opacity: 1,weight: 2,};}
}).addTo(map);

        来看一下专属经济区的范围,如下图所示: 

        当然,这里的专属经济区很大,已经与一些国家的领海有重叠,一般这种在国际上的处理就是按照国界分开。国界内依然属于专属开发区,所属国家有很大的自主权。 最后为了方便让大家直观的看到三个区域的不同距离,我们选取几个重要的点位进行距离的展示,代码如下:

var targetCity = [{"lat":15.177187,"lon":118.050156,"name":"领海12海里","color":"blue"},{"lat":15.225889,"lon":118.251343,"name":"毗连区24海里","color":"#fff700"},{"lat":15.829251,"lon":121.217651,"name":"专属经济区200海里","color":"#00ff66"}
];for(var i = 0;i< targetCity.length;i++){var polyline;if( i == 0 ){polyline = [[huangyandao[0],[targetCity[i].lat,targetCity[i].lon]]];}else{polyline = [[targetCity[i-1].lat,targetCity[i-1].lon],[targetCity[i].lat,targetCity[i].lon]];}//添加矢量数据var p = L.polyline(polyline, {labelStyle: {text: targetCity[i].name,zIndex: 0,collisionFlg: false,font: "15px sans-serif",textAlign:'end',fillStyle: targetCity[i].color},color: targetCity[i].color}).addTo(map);
}

        来看一下距离标记,如下图所示:

        通过上面的三个区域的展示,相信大家对海洋权益以及区域划分有了更加详细的认识。一个岛屿带来的经济区域范围和物质是无限的,这也是海洋大国要谋求的利益和追求。

四、总结

         以上就是本文的主要内容,本文以黄岩岛为例,基于之前标注的领海基点,详细掌握如何基于Turf.js来进行多级缓冲区绘制,以绘制领海、毗邻区、专属经济区的面绘制方法,通过详细的方法绘制的介绍,让大家了解如何在前端使用Turf.js来进行缓冲区分析。掌握空间制图,了解地理知识,维护海洋权益。让我们共同学习。行文仓促,难免有许多不足之处,欢迎给为专家博主不吝赐教,万分感谢。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pythonr入门第二讲】你好,世界

"Hello, World!" 是一种传统的编程入门示例&#xff0c;通常是程序员学习一门新编程语言时编写的第一个程序。这个程序的目标非常简单&#xff1a;在屏幕上输出 "Hello, World!" 这个字符串。尽管它非常简单&#xff0c;但具有重要的象征意义和实际价值。 …

25.UE5时间膨胀,慢动作,切换地图,刷BOSS

2-27 时间膨胀、慢动作、切换地图、刷BOSS_哔哩哔哩_bilibili 目录 1.刷新BOSS逻辑 2.时间膨胀实现慢动作 3.胜利画面&#xff0c;下一关 3.1胜利画面UI 3.2第一关、第二关游戏模式 3.3下一关按钮事件的绑定 1.刷新BOSS逻辑 实现当场上的怪物都死亡后&#xff0c;进行刷…

探索Python PDF处理的奥秘:pdfrw库揭秘

文章目录 探索Python PDF处理的奥秘&#xff1a;pdfrw库揭秘1. 背景&#xff1a;为何选择pdfrw&#xff1f;2. pdfrw是什么&#xff1f;3. 如何安装pdfrw&#xff1f;4. 五个简单的库函数使用方法4.1 读取PDF信息4.2 修改PDF元数据4.3 旋转PDF页面4.4 提取PDF中的图片4.5 合并P…

游戏引擎学习第19天

介绍 这段内容描述了开发者在进行游戏开发时&#xff0c;对于音频同步和平台层的理解和调整的过程。以下是更详细的复述&#xff1a; 开发者表达了他希望今天继续进行的工作内容。他提到&#xff0c;昨天他讲解了一些关于音频的内容&#xff0c;今天他想稍微深入讲解一下他正…

【初阶数据结构与算法】线性表之栈和队列的定义与实现(含源码和有效的括号练习)

文章目录 一、栈的概念与结构1.栈的概念与操作2.栈的底层结构选型 二、栈的实现1.栈结构的定义2. 栈的初始化和销毁栈的初始化栈的销毁 3.栈的扩容与入栈栈的扩容入栈 4.判断栈是否为空和出栈判断栈是否为空出栈 5.取栈顶元素和获取栈中有效元素个数取栈顶元素获取栈中有效元素…

详细分析ipvsadm负载均衡的命令

目录 前言1. 基本知识2. 命令参数3. 拓展 前言 LVS四层负载均衡架构详解Lvs推荐阅读&#xff1a;添加链接描述 1. 基本知识 ipvsadm 是用于管理和配置 Linux 服务器上 IP Virtual Server (IPVS) 的工具&#xff0c;是 Linux 提供的一个负载均衡模块&#xff0c;支持多种负载…

小程序-基于java+SpringBoot+Vue的小区服务管理系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

苹果ASA归因对接以及API接入

一、归因概要 广告归因&#xff0c;目的是用于衡量广告带来的激活用户的成本以及后续进一步的用户质量表现。 Apple Ads 广告平台是基于 App Store&#xff08;站内广告&#xff09;&#xff0c;同时属于自归因平台&#xff08;通常称为 SAN&#xff09;。这两个因素&#xff…

内容占位符:Kinetic Loader HTML+CSS 使用CSS制作三角形原理

内容占位符 前言 随着我们对HTML和CSS3的学习逐渐深入&#xff0c;相信大家都已经掌握了网页制作的基础知识&#xff0c;包括如何使用HTML标记构建网页结构&#xff0c;以及如何运用CSS样式美化页面。为了进一步巩固和熟练这些技能&#xff0c;今天我们一起来完成一个有趣且实…

【金融风控项目-08】:特征构造

文章目录 1.数据准备1.1 风控建模特征数据1.2 人行征信数据1.3 据之间的内在逻辑 2 样本设计和特征框架2.1 定义观察期样本2.2 数据EDA(Explore Data Analysis)2.3 梳理特征框架 3 特征构造3.1 静态信息和时间截面特征3.2 未来信息问题3.2.1 未来信息案例3.2.2 时间序列特征的未…

Linux网络:HTTPS协议

Linux网络&#xff1a;HTTPS协议 加密方式对称加密非对称加密混合加密中间人攻击 证书数据签名CA认证 HTTPSSSL/TSLHTTPS 在HTTP协议中&#xff0c;所有的数据都采用明文的形式传输&#xff0c;这就会导致数据非常容易泄露&#xff0c;只要拿到HTTP报文&#xff0c;就可以窃取各…

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置 1、主从模式1.1、主节点配置1.2、从节点配置1.3、测试 2、集群模式 1、主从模式 1.1、主节点配置 # 监听所有网络接口 bind 0.0.0.0# cluster-enabled表示为集群模式&#xff…

柔性仿人手指全覆盖磁皮肤,具备接触觉和运动觉的双模态感知能力

人体精细触觉和本体运动觉依赖于相同类型的感受器&#xff0c;这些感受器位于肌肉、肌腱、关节和皮肤中&#xff0c;负责感知轻触、挠痒、细微压力、形状变化、肌肉张力、肌腱拉伸和关节位置变化等信息。因此方斌教授团队着手于具有高精度、小尺寸、可定制等优势的磁触觉传感器…

【蓝桥杯C/C++】I/O优化技巧:cin.tie(nullptr)的详解与应用

文章目录 &#x1f4af;前言&#x1f4af;I/O流的基本概念&#x1f4af;cin.tie(nullptr)使用场景底层机制与ios::sync_with_stdio(false) 的搭配使用手动刷新输出流 &#x1f4af;使用示例和性能对比示例代码 &#x1f4af;常见误区和注意事项进一步优化&#xff1a;快速输入输…

字节青训-判断数组是否单调、判断回旋镖的存在、字符串解码问题、小F的矩阵值调整、数字字符串中圆圈的数量计算 、小Q的非素数和排列问题

目录 一、判断数组是否单调 问题描述 测试样例 解题思路&#xff1a; 解题思路 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; ​编辑 二、判断回旋镖的存在 问题描述 测试样例 解题思路&#xff1a; 解题思路 算法步骤 最终代码&#xff…

ArkTS组件结构和状态管理

1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构&#xff0c;构成一个自定义组件 自定义组件中提供了一个build函数&#xff0c;开发者需要在函数内以链式调用的方式进行基本的UI描述&#xff0c;UI描述的方法请参考UI描述规范srtuc…

14. 乘法口诀挑战赛

文章目录 概要整体架构流程技术细节小结 1. 概要 ~ Jack Qiao对米粒说&#xff1a;“为了帮助孩子们更好地学习乘法&#xff0c;智慧镇的镇长决定举办一场特别的活动——“乘法口诀挑战赛”。比赛的规则非常简单&#xff1a;参与者需要输入一个正整数 n&#xff0c;然后系统会…

环形缓冲区 之 STM32 串口接收的实现

STM32串口数据接收环形缓冲区接收实例说明 ...... 矜辰所致前言 关于环形缓冲区&#xff0c;网上有大量的理论说明文章&#xff0c;在有些操作系统中&#xff0c;会有实现环形缓冲区的代码&#xff0c;比如 RT-Thread 的 ringbuffer.c 和 ringbuffer.h 文件&#xff0c;Li…

Matplotlib | 理解直方图中bins表示的数据含义

引出问题 hist作图中 bins 发生变换 y轴的数据也变化 想不通 不是说y轴计算的是频率吗 频率既然是定值 为什么y轴的数据就还会变化&#xff1f;那我确定了bins的数值 我想获得bins内各个柱子&#xff08;bin&#xff09;中数据点的数量如何获得 bins的变化 先看一组数据 da…

【Linux】基础02

Linux编译和调试 VI编辑文件 vi : 进入文件编辑 是命令行模式 i &#xff1a;从光标处进入插入模式 dd : 删除光标所在行 n dd 删除指定行数 Esc &#xff1a; 退出插入模式 &#xff1a; 冒号进入末行模式 :wq : 保存退出 :q &#xff1a; 未修改文件可以退出 :q! …