电子海图系统线状符号表达及绘制方法

地图符号作为表现地理空间中各种实在物体和相关现象的图像化表示方法,已逐渐成为GIS(ge-ographicinformationsystem,地理信息系统)系统和现代地图学中的研究热点之一,尤其是在电子海图系统研制过程中,其符号表达的好坏将直接影响系统的性能.根据符号在地图上的表现方式不同,可以将符号大体上划分为点状符号、线状符号以及面状符号3个大类.其中,由于线状符号的基本构成单元是点状符号,而且面状符号由线状符号构成;因此,线状符号作为承上启下的连接符号类被广泛使用.与此同时,线状符号也是地图符号中最复杂的一个类.线状符号一般由基本图元组成,基本图元可以是直线、折线、多边形以及各种简单图形.这些基本图元按照一定的排列组合方式绘制或填充就成为线状符号.

1.线状符号的基本概念

1.1.线状符号的分类

根据线状要素的构成特点以及实际绘制的需要可以将线状要素分成下列几类:

1)无限长线状符号:其特点是线状符号中没有间隔,可以看成是一个整体的线状符号单元.它是线状符号中最简单的一类.

2)间隔线型线状符号:此类符号是由一定长度的短线和线与线之间的有效空白通过有规律的拼接组成的线状符号.

3)类坎型线状符号:此类符号由定位线以及与定位线有一定角度的短线循环拼接而成.由于坎类线状要素属于其类且应用最为普遍,故称其为类坎型线状符号.

4)点图元型线状符号:此类符号的基本图元为点状要素,按照一定的顺序与有效空白连接而成.

5)点、线图元型线状符号:此类符号的基本图元为点状、线状要素,按照一定的顺序与有效空白连接而成.

6)复合型线状符号.这类符号是由上述几类符号组合而成.

7)特殊线状符号.这类符号是非规则符号,如陡崖、石滩等.各线状符号类型及相应符号图式如表1所示.

1.2.线状符号的可分解性与不可分解性

1)线状符号的可分解性.线状符号的可分解性是指线状符号的每一个图元都可由几个最基本的要素表示,这些要素按照一定的方式在线状符号定位线的串接下形成一个循环图元;所以一个线状符号可以由通过图元分解的线状要素组成,几乎所有的规则线状符号都是可分解的.

2)线状符号的不可分解性.线状符号的不可分解性是指线状符号中组成要素的单元或者排列顺序是随机的、没有规律的,所以不能把线状符号分解为基本图元.在绘制过程中只能把线状符号看成一个整体来进行绘制.一般不可分解的线状符号都是非规则的.如果要使符号单元分解后能优化配置,而且新组合后能达到较好的视觉要求,可以这样处理分解后的相互依赖的线状符号:一是直接优化配置,并将图案单元的每个定位点记录下来;二是根据它所依赖的线状符号的图案单元的定位点和它们的空间关系,求得它的图案单元在定位线上的配置坐标.故每种基本线状符号都应该有2种配置算法:根据其他图案单元的定位点和相对位置进行配置;单独按配置要求进行优化处理,记录每个图案单元的定位点坐标.线状符号的分解性与不可分解性是相对的.有些规则符号在优化配置的情况下是不能直接分解的,但若把它们的相对位置考虑进去就能进行分解;不规则线状符号一般不能分解,但若能找到符号单元和排列方式的变化规律,从理论上讲还是能进行分解的.

2.以视觉变量为主要成员的线状符号数据结构

2.1.视觉变量

虽然线状符号都可以分解为基本图元,但是这些基本图元之间是有差别的.这些能引起人们视觉差别的最基本的图形和色彩的变化因素叫做视觉变量或图形变量,也叫可视化变量.视觉变量直接关系到线状符号的形象特点.线状符号之间的差别就是因为它们之间一个或者多个视觉变量之间存在差别.

在一般情况下,图形由6个基本的视觉变量组成:形状、尺寸、颜色、密度、方向和明度.从线型符号基本组成要素图案的结构角度来说,线状符号可以用不同的形状、不同的尺寸、不同的颜色、不同的密度、不同的方向以及不同的明度和位置来区分各种不同线状地理事物的分布、质量、数量等特征,使得图形更具有表现力.

2.2.线状符号图元的数据结构

线状符号结构的不同决定了线状符号的不同;构成符号的基本线型由形状决定,形状变量的差别是线状符号表现在视觉上最重要的差别;密度、尺寸、位置是每个待配置符号参与绘制及其相关运算的最基本的视觉变量;在少数线状符号(如坎符号的堤岸)中,方向也作为一个参数参与运算;而每个线状符号显示、输出的色彩是由颜色、明度等视觉变量控制的.如果是单线符号,其颜色变化确定视觉效果;而当其宽度增加到一定程度时就要同时考虑亮度的变化.

由此可以根据视觉变量定义一个基本线型的图案单元(只含单一的图元)的数据构造.图案单元信息={坐标,线式,线宽,间隔,偏移量,笔颜色,填充否,刷子颜色……}.坐标表示符号在地图坐标系中的位置;线式主要表现图元中线状要素的线型;线宽代表线状要素的宽度;间隔是指2个图元间沿定位线的相隔长度;偏移量是指图元与定位线之间的夹角,竖线的夹角为90°,横线的夹角为零;笔的颜色为RGB(红、绿、蓝)型;如果填充则考虑刷子的颜色,一般在有宽度的直线段(即矩形,多边形等)、圆等情况下才用到.

由于线状符号可能由多个不同种类的基本图元交替组成,因此可以由图1形象、直观地表达一个线状符号图元构造的数据构造情况.

3.线状符号拐点的基本处理方法

拐角点问题是由基本图元在拐点处绘制不当产生的,因为在循环配置时,基本图元可能跨越原有的定位线而引发在多个定位线上绘制的问题.根据不同类型线状符号在拐点处的表现形式不同,可以把拐点问题大致分为3个种类.

1)单一基本图元线状符号的拐点问题

此类符号的定位线可以在符号上,也可以在符号中,如图2(a)、2(b)显示此类符号在拐角处的问题.

对于图2(a)和2(b)中的问题,这里提出断点几何线状填充方法:

规定正方向,判断出现拐角点问题的部分相对于定位线的位置,即位于定位线拐角的内部还是外部,设定位线的夹角在0~180°之间,则判定方法如图3所示.

由向量乘积判定角度范围a軆×b軋<0,则需要在断点处补接线段的长度应为d′=d/sinθ+d·cotθ;若b軋×c軆>0,则需要在断点处补接线段的长度应为d′=d/sinθ.此处d指线状符号边界到定位线的距离.

对于在内部的拐点问题也需要先判断两定位线的夹角θ,若b軋×c軆<0,则需要在断点处擦除线段的长度应为d′=d/sinθ+d·cotθ;若b軋×c軆>0,则需要在断点处擦除线段的长度应为d′=d/sinθ.此处d指线状符号边界到定位线的距离.

优化后的符号图2(c)和图2(d)所示,可见优化后的线状符号有效地解决了拐点问题.

2)多基本图元线状符号的拐点问题

在通常情况下,对此类符号的绘制一般只考虑了定位线的起点和终点应采取的处理,而在定位线变化趋势较明显的拐点处可能出现基本图元断裂、错开、自交等严重变形的情况.如图4(a)所示.

这里提出了循环配置图元方法解决这个问题:在通常情况下,对此类符号的绘制应首先设定其图元的主要基本图元和次要基本图元.主要基本图元是指在拐点处绘制此基本图元可以保证符号的可连续性以及美观性,不给人以断裂或者不舒适的感觉的图元.次要基本图元可以辅助主要基本图元构成线状符号图元从而正确地显示该线状符号.具体的处理方法如下:

①将符号的图元划分为主要基本图元和次要基本图元.确定主要基本图元长度d1、次要基本图元长度d2、以及图元总长度d,如图4(c)所示.

②在每个拐点处把拐点作为主要基本图元的中点,并在拐点前后确定拐点图元的长度.

③设两拐点之间的距离为S,拐点图元在此部分的长度为d′,则可算出此长度线状符号绘制的图元数i以及剩余长度Δd.

④若Δdd1/2,则需要确定一个阈值长度δ,若δ>d/i,则将剩余长度Δd平均分给剩余图元,若δ通过上述方法优化后的符号如图4(b)所示,可见优化后的符号有效地解决了拐角处图像的严重变形问题;但在实际运行中可能由于处理方式的复杂性造成系统利用率高,绘制速度减慢等实际问题.

3)多基本图元填充线状符号的拐点问题

此类符号可以分解为上述2种方法的综合.其中,首先绘制封闭的线状填充区域及其边界线,线状填充区域及其边界线可以看做单一基本图元线状符号;其次绘制填充单元,填充单元即可看做多基本图元线状符号的图元要素.在实际中,充分利用上述2种拐点处理方法处理拐点,从而解决多基本图元填充线状符号的拐点问题.

4.结束语

通过对线状符号进行具体分析讨论,总结了线状符号的分类,针对线状符号在拐点处容易出现交叉、断裂、空白等失真现象,设计了以视觉变量为主要成员的线状符号数据结构,同时提出了断点几何线状填充以及循环配置图元方法,对线型符号的绘制进行了优化,使其在拐点处的绘制更加简洁、美观,因此具有一定的实际意义.                                                                                                 参考文章:电子海图、AIS、雷达

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

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

相关文章

python使用Pandas 绘制线状图,曲线图,条形图

今天的文章讲解如何利用 Pandas 来绘图&#xff0c;前面写过 matplotlib 相关文章&#xff0c;matplotlib 虽然功能强大&#xff0c;但是 matplotlib 相对而言较为底层&#xff0c;画图时步骤较为繁琐&#xff0c;比较麻烦&#xff0c;因为要画一张完整的图表&#xff0c;需要…

Python数据可视化---线状图、柱状图、箱型图

词云&#xff1a; import jieba from imageio import imread from numpy import unicode from wordcloud import WordCloud,ImageColorGenerator import matplotlib.pyplot as plt jieba.load_userdict("stoplist.txt") """seg_list jieba.cut(&q…

线状数组

线状数组是一个查询和复杂度都是log&#xff08;n&#xff09;的数据结构&#xff0c;主要用来查询任意两位之间的所有元素之和&#xff0c;但每次只能修改一个元素的值&#xff0c; 数组a[]— 用来存放原始数据&#xff0c;c[]–就是树状数组&#xff0c;c[t] – 表示t管辖区间…

在UnityUI中绘制线状统计图

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 先来个效果图 觉得不好看可以自己调整 1.绘制数据点 线状图一般由数据点和连线组…

数据可视化 - 柱状图+线状图

import pyecharts.options as opts from pyecharts.charts import Bar, Line""" Gallery 使用 pyecharts 1.1.0 参考地址: https://www.echartsjs.com/examples/editor.html?cmix-line-bar目前无法实现的功能:1、暂无 """x_data ["1月&qu…

【ArcGIS微课1000例】0034:地图线状符号设计教程

地图符号是表示地图内容的基本手段,它由形状不同、大小不一、色彩有别的图形和文字组成。 地图符号是地图的语言,是一种图形语言。它与文字语言相比较,最大的特点是形象直观,一目了然。 本文讲解ArcGIS中线状符号设计方法。 文章目录 一、新建符号样式二、线状符号设计1. 点…

去除图像周期性线状噪声

本文主要讲述的是如何去除图像中周期性的线性噪声&#xff0c;尝试过的方法从空域的开关中值滤波到频域的陷波滤波等&#xff0c;在此做个总结&#xff0c;其中陷波滤波的尝试失败&#xff0c;效果并不理想&#xff0c;而开关中止滤波的效果很好。 图1&#xff1a;带周期性线条…

echarts_线状图.html

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>线状图</title><script src"echarts.js"></script> </head><body><div id"main" style"width: 600px;height:…

echarts线状图

<div id"mycharts" ref"chartBox"> <span v-html"loading"></span></div> //引入线状图import echarts/lib/chart/line //echarts配置&#xff08;挂载时导入图&#xff09;creatChartFun(){ this.myChart echar…

python线状图

import numpy as np import matplotlib.pyplot as plt xnp.linspace(0,2*np.pi,10) y1,y2np.sin(x),np.cos(x) plt.plot(x,y1,markero,mecr,mfcw)//mec设置折点处图形轮廓的颜色&#xff0c;mfc设置实心的颜色 plt.plot(x,y2,marker*,ms10) plt.show()

功能很全的图书馆管理系统

个人资源与分享网站&#xff1a;http://xiaocaoshare.com/ 1.需求 1.1 bootstrapspringspringmvcmybatis&#xff0c;用maven构建 1.2分管理员和用户两个角色。用户可以查询&#xff0c;借阅归还&#xff0c;修改个人信息&#xff0c;查看借阅信息。 管理员有图书管理&…

基于QT实现的图书室管理系统

基于QT实现的图书室管理系统 图书室管理系统 该系统需创建和管理以下信息: 1、书籍信息:书名、书目编号、作者名、出版日期、出版社、库存册数、登记号数据集; 2、每册书的登记信息:登记号、是否借出、借阅日期、借书证号。 系统功能要求如下: 1.创建和管理描述每本书籍的对…

基于微信公众号的图书借阅管理系统设计与实现

目录 1 引言 2 1.1项目研究背景 4 1.2 项目研究内容 6 1.3 项目研究意义 7 2 技术选型与开发环境 9 2.1 技术选型 9 2.1.1Node.js介绍 9 2.1.2 异步编程介绍 10 2.1.3 阻塞和非阻塞介绍 11 2.1.4 MySQL数据库介绍 12 2.1.5 Nginx服务器介绍 14 2.1.6StrongLoop进程管理器介绍 1…

微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&#xf…

图书馆管理系统——借书操作

在写借书操作之前我们先来理清一下借书操作的一个思路 假如你借了“红楼梦”这本书&#xff0c;你就不能再借“红楼梦”这本书了。你就得把“红楼梦”这本书归还了之后才可以借“红楼梦”。但是其他的书籍你可以借阅。意思就是一个账号一本书只能借一次&#xff0c;只有你归还…

网上图书馆系统

网上图书馆系统 题目 设计一个网上图书馆系统&#xff0c;实现图书网上检索、预约和续借功能。具体要求如下&#xff1a; 1)系统管理&#xff1a;定义读者类别并设置参数&#xff0c;添加、修改和删除读者信息。 2)图书续借和预约&#xff1a;实现图书的续借、预约等功能。 3)…

图书馆管理系统(数据库版)

图书馆管理系统&#xff08;数据库版&#xff09; 目录&#xff1a; 图书馆管理系统&#xff08;数据库版&#xff09;项目框架项目分包数据库列表代码分析工具包所用到的接口&#xff1a; 分享一波&#xff1a;总结&#xff1a; 项目框架 项目分包 上面为本次项目的分包建包示…

图书馆管理系统的开发

课程设计的目的与要求 课程设计目的软件工程课程设计是学习软件工程课程后所进行的实践环节,目的是培养学生用工程化的思想和标准文档化的思想进行软件开发。本次课程设计通过开发一个小型实用的软件系统,亲身体验软件生命周期中的各个环节,以加深对软件工程课程的深入理解、…

基于微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&#xf…

智慧图书馆中一般有哪些设备

图书馆在很多人心目中都是一个神圣的场所&#xff0c;但现实中去过图书馆的人们都知道&#xff0c;由于管理上的原因很多图书馆都会非常的嘈杂和混乱。而智慧图书馆的建设就是让图书馆重新变回宁静祥和的知识海洋&#xff0c;通过RFID技术打造智慧化设备为读者提供更好的学习阅…