AE开发之鹰眼窗口、书签0

  • 鹰眼窗口
  • 标签 感兴趣区再回来
  • ListBooks窗口
  • 笔记
    • AOIBOOKMARK类查询,父类是谁,相互之间关系是什么
    • 书签的添加
    • 书签的管理
    • rectangleELEment
    • rgbcolor类
  • 几何对象的认识,点,线,面,等等
  • geometry
  • 颜色模型

鹰眼窗口

1.首先在设计窗口加入一个MapControl,这是我们的鹰眼窗口。

2.判断鼠标左键or右键是否按下,在OnMouseDown相应函数中去操作,可以用e.button去判断。
①若按下左键,则创建一个点对象,将鼠标所在的x,y赋给点对象,将地图主窗口的中心点定位到新的位置,再将地图主窗口刷新。

②若按下右键,则调用axmapcontrol2的矩形框跟着功能拉框操作。并把拉框完成后的范围给一个“信封”。将新的拉框范围赋值给地图主窗口的范围。再将主窗口地图刷新

3.(绑定MapControl的OnMapReplaced事件)

在OnMapReplaced函数中去建立两个Map窗口的联系。

①利用循环,判断主地图窗口的地图层数,循环次数=层数。
②在利用索引窗口的addLayer方法依次将主窗口中的图层添加到索引窗口中。
③将索引窗口的地图设为整图显示。
④刷新索引窗口。

4.axMapControl1_OnExtentUpdated函数中进行如下操作:

①将参数e转换为IEnvelope接口,相当于把新的空间范围进行存放在了pEnvelop。
②获得索引窗口的图像要素容器,在索引地图上的一个透明层,可以绘制点、线、面、文本等多图像要素
③删除图形要素容器中原来的所有要素。
④创建一个矩形要素,使该矩形要素的几何实体等于pEnvelope接口对象。相当于该矩形要素的空间范围等于新传进来的空间范围。
⑤创建一个RGB颜色对象。
其中Transparency是对象的透明度,0为纯透明,255为不透明。
创建一个简单的线符号,给该符号附上颜色,如红色。设置线的宽度,如:3个像素。使颜色对象全透明。
⑦创建一个简单的填充符号,填充为纯透明,给填充符边界附上一个红色的边框。
⑧通过接口查询,获取填充要素的接口。
⑨给填充要素的符号赋值为刚才创建的具有红色边框的填充符号。
⑩将新获得的具有红色边框的填充要素添加进索引窗口的图形要素容器中,让索引窗口的图形绘制内容刷新。

4.axMapControl2_OnMouseMove事件:
判断鼠标左键是否按下,若按下,创建一个点对象,给点对象的x赋值为鼠标所在位置规定X坐标,Y同理。

将地图主窗口的中心点定位到新的位置,主地图刷新。

 private void axMapControl2_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e){if (e.button == 1)//判定鼠标左键是否按下{IPoint pPoint = new ESRI.ArcGIS.Geometry.Point();//创建一个点对象pPoint.PutCoords(e.mapX, e.mapY);//给点对象的xy赋值为鼠标所在位置的xy坐标axMapControl1.CenterAt(pPoint);//将地图主窗口的中心点定位到新的位置axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);//主窗口地图刷新}else if (e.button == 2)//判定鼠标右键是否按下{IEnvelope pEnvelop = axMapControl2.TrackRectangle();//调用axmapcontrol2的矩形框跟踪功能进行拉框操作//将拉框完成后的范围赋值给一个envelopeaxMapControl1.Extent = pEnvelop;//将新的拉框范围赋值给地图主窗口的空间范围axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);//主窗口地图刷新}}private void axMapControl1_OnMapReplaced(object sender,ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent e){for (int i = 0; i < axMapControl1.ActiveView.FocusMap.LayerCount; i++)//依据axmapcontrol1(主地图窗口)中正处于打开//状态的地图的图层数进行循环axMapControl2.AddLayer(axMapControl1.ActiveView.FocusMap.get_Layer(i));//利用索引窗口控件的addlayer方法依次把主窗口                                                                        //中的图层添加所引窗口中axMapControl2.Extent = axMapControl1.FullExtent;//将索引窗口的地图设为整图显示axMapControl2.Refresh();//刷新索引窗口}private void axMapControl1_OnExtentUpdated(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnExtentUpdatedEvent e){IEnvelope pEnvelop = e.newEnvelope as IEnvelope;//将参数e转换成Ienvelop接口对象,相当于把新的空间范围存放//pEnvelop接口对象中了IGraphicsContainer pGraphicsContainer = axMapControl2.Map as IGraphicsContainer;//获得索引窗口的图形要素容器;//该容器可以简单的理解为在索引地图的上面蒙上一层透明的层//该层中可以绘制点、线、面、文本等多种图形要素pGraphicsContainer.DeleteAllElements();//删除图形要素容器中原来的所有要素IElement pElemet = new RectangleElement();//创建一个矩形要素pElemet.Geometry = pEnvelop;//使该矩形要素的几何实体等于pEnvelope接口对象,//相当于该矩形要素的空间范围等于新传进来的空间范围IRgbColor pColor = new RgbColor();//创建一个RGB颜色对象pColor.Red = 255;//红色值pColor.Green = 0;//绿色值pColor.Blue = 0;//蓝色值pColor.Transparency = 255;//该颜色对象的透明度0~255,0为纯透明,255为不透明ILineSymbol pLine = new SimpleLineSymbol();//创建一个简单的线符号pLine.Color = pColor;//给该线符号附上颜色,目前为红色pLine.Width = 3;//线的宽度为3个像素pColor.Transparency = 0;//使颜色对象全透明IFillSymbol pFillSymbol = new SimpleFillSymbol();//创建一个简单的填充符号pFillSymbol.Color = pColor;//让该填充符号纯透明pFillSymbol.Outline = pLine;//给该填充符号的边界附上一个红色的边框IFillShapeElement pFillShapeEle = pElemet as IFillShapeElement;//通过接口查询,获取填充要素的接口pFillShapeEle.Symbol = pFillSymbol;//给填充要素的符号赋值为刚才创建的具有红色边框的填充符号pGraphicsContainer.AddElement((IElement)pFillShapeEle, 0);//将新获得的具有红色边框的填充要素添加进索引窗口的图形要素容器中axMapControl2.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);//让索引窗口的图形绘制内容刷新}private void axMapControl2_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e){if (e.button == 1)//判定鼠标左键是否按下{IPoint pPoint = new ESRI.ArcGIS.Geometry.Point();//创建一个点对象pPoint.X = e.mapX;//给点对象的x赋值为鼠标所在位置规定x坐标pPoint.Y = e.mapY;//给点对象的y赋值为鼠标所在位置规定x坐标axMapControl1.CenterAt(pPoint);//将地图主窗口的中心点定位到新的位置axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);//主窗口地图刷新}}

标签 感兴趣区再回来

1.添加窗体应用,using需要的库文件,把textBox1中的text赋值给BookMarkName。
2.点击OK,进行书签的保持。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace MapControl2
{public partial class frmAddBookMark : Form{string _BookMarkName;public frmAddBookMark(){InitializeComponent();}public string BookMarkName { get => _BookMarkName; set => _BookMarkName = value; }private void button1_Click(object sender, EventArgs e){this.BookMarkName = textBox1.Text;//给标签名称的属性赋值为文本框中的内容this.DialogResult = DialogResult.OK;}private void frmAddBookMark_Load(object sender, EventArgs e){}}
}

添加书签的菜单制作。

 private void addToolStripMenuItem_Click(object sender, EventArgs e){/*以下代码可以“替换”以下函数体ICommand pCreatBookmark = new ControlsMapCreateBookmarkCommand();pCreatBookmark.OnCreate(axMapControl1.Object);pCreatBookmark.OnClick();*/frmAddBookMark frm = new frmAddBookMark();frm.ShowDialog();if(frm.BookMarkName!=""){IMap pMap = axMapControl1.Map;IMapBookmarks pMapMarks = axMapControl1.Map as IMapBookmarks;IEnvelope penv = axMapControl1.Extent;IAOIBookmark pNewMark = new AOIBookmark();pNewMark.Name = frm.BookMarkName;pNewMark.Location = penv;pMapMarks.AddBookmark(pNewMark as ISpatialBookmark);}}

注意:其中frmBookmarkEdit是控件名

ListBooks窗口

1.添加属性

 private IMap _pMap;public IMap PMap { get => _pMap; set => _pMap = value; }public frmBookmarkEdit(IMap pMap){this._pMap = pMap;InitializeComponent();}

2.设置load函数

 private void frmBookmarkEdit_Load(object sender, EventArgs e){IMapBookmarks pMapbookmarks = PMap as IMapBookmarks;//接口转换为地图书签集合接口IEnumSpatialBookmark pEnumBookMarks = pMapbookmarks.Bookmarks;//获取地图中书签集合pEnumBookMarks.Reset();//指向头部ISpatialBookmark pBookmark = pEnumBookMarks.Next();//获取地图书签集合中的第一个书签this.listBox1.Items.Clear();//清除listBox控件中原有的所有ITemwhile(pBookmark!=null)//地图书签非空{listBox1.Items.Add(pBookmark.Name);//将地图书签名称添加到listBox控件的列表集合pBookmark = pEnumBookMarks.Next();//获取下一个书签对象}}

3.设置定位函数

 private void button1_Click(object sender, EventArgs e){if(this.listBox1.SelectedItem!=null)//若list列表中的已选择项非空{string strBookmarkName = listBox1.SelectedItem.ToString();//获得选择项的名称IMapBookmarks pBookmarks = PMap as IMapBookmarks;//接口转换为地图书签集合接口IEnumSpatialBookmark pEnumBookmark = pBookmarks.Bookmarks;//获得地图书签集合pEnumBookmark.Reset();//指针指向头部ISpatialBookmark pBookmark = pEnumBookmark.Next();while(pBookmark!=null){if (pBookmark.Name == strBookmarkName){pBookmark.ZoomTo(PMap);//将地图缩放到该书签指定空间范围你IActiveView pactiveView = PMap as IActiveView;//获得地图的活动视图窗口接口pactiveView.Refresh();//地图刷新return;}pBookmark = pEnumBookmark.Next();//获得下一条地图书签}}}

4.设置删除函数

private void button2_Click(object sender, EventArgs e){if(this.listBox1.SelectedItem!=null){string strBookmarkName = listBox1.SelectedItem.ToString();IMapBookmarks pBookmarks = PMap as IMapBookmarks;IEnumSpatialBookmark pEnumBookmark = pBookmarks.Bookmarks;pEnumBookmark.Reset();//指针指向头部ISpatialBookmark pBookmark = pEnumBookmark.Next();while(pBookmark != null){if (pBookmark.Name == strBookmarkName){pBookmarks.RemoveBookmark(pBookmark);listBox1.Items.Remove(listBox1.SelectedItem);return;}pBookmark = pEnumBookmark.Next();}}}

笔记

 IMap pMap = AxMapControl1.Map;IMapBookmarks pMapMarks = pMap as IMapBookmarks;

相当于

IMapBookmarks pMapMarks = AxMapControl1.pMap as IMapBookmarks;

AOIBOOKMARK类查询,父类是谁,相互之间关系是什么

https://blog.csdn.net/GISer_rookie/article/details/88422814
https://blog.csdn.net/weixin_30687051/article/details/95387409
https://blog.csdn.net/weixin_42032107/article/details/80835697

通过IMapBookmarks接口的Bookmarks属性可以得到地图文档中已经存在的所有书签对象,通过该接口的AddBookmark和RemoveBookmark方法可以对书签进行添加和删除。

ISpatialBookmark接口定义所有空间书签的共同功能,特别是书签的Name属性和ZoomTo方法。Name属性定义了书签的名字,通过ZoomTo方法可跳转到书签位置点。

IAOIBookmark接口继承自ISpatialBookmark接口,新增了Location属性,用于存储地图中感兴趣的范围。

书签的添加

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace MapControl2
{public partial class frmAddBookMark : Form{string _BookMarkName;public frmAddBookMark(){InitializeComponent();}public string BookMarkName { get => _BookMarkName; set => _BookMarkName = value; }private void button1_Click(object sender, EventArgs e){this.BookMarkName = textBox1.Text;//给标签名称的属性赋值为文本框中的内容this.DialogResult = DialogResult.OK;}private void frmAddBookMark_Load(object sender, EventArgs e){}}
}

书签的管理

把所有书签名字取下来,放在这个地方,什么时间去进行bookmarks的访问呢?

不是在窗体new的时候,第一个激发的事件是load事件,我们要在这里写代码,添加。双击则激发doubleclick事件,根据所选择的名称,在bookmarks里面去找,在这里去找,把范围给它,放在感兴趣区域。弹出来的窗口和主窗口有无关系呢

我想反映的是主窗口地图上显示的地图,如果没有建立关系,则无法去访问,我们可以定义一个IMAP属性,我们可以创造一个构造参数穿进去

构造函数里面赋值,传进一个MAP来
map字段相当于给他赋值

习惯命名:
字段前面加 下划线 _ 。


mapcontrol加载时候,会激发mapreplace事件,地图窗口发生了变更和替换,就会激发replace事件处理函数,要做什么事情呢,要把地图控件里面的地图访问到,以此加到MapControl2当中,一旦replace就更新

rectangleELEment

https://blog.csdn.net/sonikk/article/details/12202931

rgbcolor类

transparency透明度
矩形框设置符号
填充符号
线符号
面符号
矩形框要用线符号进行表达
简单线符号的定义
简单线符号赋色
简单线符号宽度

定义一个填充符号
中间要透明的填充,即矩形框透明限制
中间填充是简单填充符号是透明色
边界是线符号
简单填重符号里面的symbol进行赋值

定义的一个矩形要素
给元素设置填充符号,找到填充符号,

矩形框
点,面
四种颜色模型 印刷色
简单线符号,复杂线符号

extend事件还没有执行,地图窗口范围更新
鹰眼窗口中比例尺不变,按住右键拉框,根据我拉的框,地图范围就被显示了

拉着窗口一定,可以显示。鼠标点或者单击都是mousedown,

几何对象的认识,点,线,面,等等

geometry

在方法前加前缀,可以定义到底调用哪一个库里的对象或者函数或者方法

一、Geometry类的层次
几何类定义了下述层次:

· Geometry(非实例化)

· Point(可实例化的)

· Curve(非实例化)

· LineString(可实例化的)

· Line

· LinearRing

· Surface(非实例化)

· Polygon(可实例化的)

· GeometryCollection(可实例化的)

· MultiPoint(可实例化的)

· MultiCurve(非实例化)

· MultiLineString(可实例化的)

· MultiSurface(非实例化)

· MultiPolygon(可实例化的)

不能在非实例化类中创建对象。能够在可实例化类中创建对象。所有类均有属性,可实例化类还可以包含声明(定义有效类实例的规则)。

Geometry是一种基本类。它是一种抽象类。 Geometry的可实例化子类限制为可在2维坐标空间中存在的0、1、2维几何对象。所有的可实例化几何类是这样定义的,从而使得几何类的实例从拓扑意义上讲是闭合的(也就是说,所有定义的几何类包含其边界)。

基本Geometry类具有关于Point、Curve、Surface和GeometryCollection的子类:

· Point表示0维对象。

· Curve表示1维对象,具有子类LineString,以及次级子类Line和LinearRing。

· Surface是为2维对象设计的,具有子类Polygon。

· GeometryCollection具有特殊的0维、1维和2维类集合,名为MultiPoint、MultiLineString和MultiPolygon,分别用于为对应的Points、LineStrings和Polygons集合进行几何建模。MultiCurve和MultiSurface是作为抽象超类引入的,它们归纳了用于处理Curves和Surfaces的集合接口。

Geometry、Curve、Surface、MultiCurve和MultiSurface定义为非实例化类。它们为其子类定义了公用方法集合,而且是为扩展而包含在内的。

Point、LineString、Polygon、GeometryCollection、MultiPoint、MultiLineString和MultiPolygon定义为可实例化类。

二、类Geometry
Geometry是层次结构的根类。它是一种非实例化类,但具有很多属性,这些属性对由任何Geometry子类创建的所有几何值来说是共同的。下面介绍了这些属性(尤其是具有自己特殊属性的子类)。

Geometry属性

Geometry值具有下述属性:

· 其type(类型)。每个geometry属于层次结构中可实例化类之一。

· 其SRID,或空间参考ID。该值确定了用于描述定义几何对象的坐标空间的空间坐标系统。

在MySQL中,SRID值仅是与geometry值相关的整数值。所有计算均是在欧几里得几何系(平面)中进行的。

· 它在其空间坐标系统中的coordinates(坐标),表示为双精度数值(8字节)。所有的非空几何对象至少包含一对坐标(X、Y)。空几何对象不含坐标。

坐标与SRID相关。例如,在不同的坐标系内,两个对象之间的距离会有所不同,即使这两个对象具有相同的坐标也同样。这是因为,平面坐标系中的距离和地心坐标系(地球表面上的坐标)中的距离是不同的事项。

· 其interior(内部)、boundary(边界)和exterior(外部)。

每个几何对象均占据空间中的某一位置。几何对象的exterior(外部)指的是未被该对象占据的所有空间。其interior(内部)指的是被该对象占据的空间。其boundary(边界)指的是几何对象内部和外部之间的界面。

· 其MBR(最小边界矩形)或包络面。这是一种边界几何值,由最小和最大坐标(X,Y)构成。

· ((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))

· 无论值是简单的或非简单的。类型(LineString、MultiPoint、MultiLineString)的几何值或是简单的,或是非简单的。每个类型决定了其自己的简单或非简单声明。

· 无论值是封闭的或非封闭的。类型(LineString、MultiPoint)的几何值或是封闭的,或是非封闭的。每个类型决定了其自己的封闭或非封闭声明。

· 无论值是空的或非空的。如果没有任何点,几何对象是空的。空几何对象的内部、外部和边界未定义(也就是说,它们由Null值表示)。空的几何对象定义为总是简单的,面积为0。

· 其dimension(维数)。几何对象的维数为−1、0、1或2

o −1用于空几何对象。

o 0用于无长度、无面积的几何对象。

o 1用于具有非0长度和0面积的几何对象。

o 2用于具有非0面积的几何对象。

Point对象的维数为0。LineString对象的维数为1。 Polygon对象的维数为2。MultiPoint、MultiLineString和MultiPolygon对象的维数与构成它们的元素的维数相同。

三、类Point
Point(点)指的是代表坐标空间中单个位置的几何类。

Point示例

· 想像一张具有众多城市的大世界地图。每个Point对象可代表1个城市。

· 在城市地图上,Point对象可代表1个公共汽车站。

Point属性

· X-坐标值。

· Y-坐标值。

· Point定义为0维几何对象。

· Point的边界为空集合。

颜色模型

https://zhuanlan.zhihu.com/p/28741691
https://blog.csdn.net/zdyueguanyun/article/details/8575865
https://blog.csdn.net/qq_34106574/article/details/80733067
https://blog.csdn.net/bjbz_cxy/article/details/79701006?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

常见颜色模型
颜色模型就是描述用一组数值来描述颜色的数学模型。例如coding时最常见的RGB模型,就是用RGB三个数值来描述颜色。通常颜色模型分为两类:设备相关和设备无关。

设备无关的颜色模型:这类颜色模型是基于人眼对色彩感知的度量建立的数学模型,例如上面提到的CIE-RGB、CIE-XYZ颜色模型,再比如由此衍生的CIE-xyY、CIE-Luv、CIE-Lab等颜色模型。这些颜色模型主要用于计算和测量。

设备相关的颜色模型:以最长见的RGB模型为例,一组确定的RGB数值,在一个液晶屏上显示,最终会作用到三色LED的电压上。这样一组值在不同设备上解释时,得到的颜色可能并不相同。再比如CMYK模型需要依赖打印设备解释。常见的设备相关模型有:RGB、CMYK、YUV、HSL、HSB(HSV)、YCbCr等。这类颜色模型主要用于设备显示、数据传输等。

下面就对这些颜色模型一一作出解释。

CIE-RGB
正如上面写的,这个模型是由真实的人眼颜色匹配实验得出的模型,RGB分别表示那三个固定波长的光的份量。
此处输入图片的描述

CIE-XYZ
上面也有,就是根据CIE-RGB进行变换得到的颜色模型,XYZ分别表示三个假想色的光的份量。通常简写为XYZ颜色模型。
此处输入图片的描述

CIE-Yxy
该模型由CIE-XYZ衍生得来。其中, Yxy中的Y表示光的亮度。这个模型投影到x-y平面上即上面的CIE1931-XYZ色度图。其中x、y分量的取值范围是[0,1]。有时该模型也被称作CIE-xyY。
此处输入图片的描述
还有许多,不再详尽说明。

RGB
最常见的颜色模型,设备相关。三个数值代表R、G、B分量,取值均为[0,255]。

**CMYK、CMY
这个颜色模型常用于印刷出版。CMYK表示青(Cyan)品红(Magenta)黄(Yellow)黑(BlacK)四种颜料。由于颜料的特性,该模型也是与设备相关的。**相对于RGB的加色混色模型,CMY是减色混色模型,颜色混在一起,亮度会降低。之所以加入黑色是因为打印时由品红、黄、青构成的黑色不够纯粹。
此处输入图片的描述
通常其能表现的色域很小,如下图。
此处输入图片的描述

**HSL、HSV
HSL和HSV的颜色模型比较相近,它们用来描述颜色相对于RGB等模型显得更加自然。**电脑绘画时,这两个模型非常受到欢迎。

HSL和HSV中,H都表示色相(Hue)。通常该值取值范围是[0°,360°],对应红橙黄绿青蓝紫-红这样顺序的颜色,构成一个首尾相接的色相环。色相的物理意义就是光的波长,不同波长的光呈现了不同的色相。

HSL和HSV中,S都表示饱和度(Saturation)(有时也称为色度、彩度)即色彩的纯净程度。例如龙袍的金黄色饱和度就比屎黄色高。对应到到物理意义上:即一束光可能由很多种不同波长的单色光构成,波长越多越分散,则色彩的纯净程度越低,而单色的光构成的色彩纯净度就很高。

两个颜色模型不同的就是最后一个份量。
HSL中的L表示亮度(Lightness/Luminance/Intensity)。根据缩写不同HSL有时也称作HLS或HSI(就是说HSL、HLS、HSI是一回事)。
HSV中的V表示明度(Value/Brightness)。根据缩写不同,HSV有时也被称作HSB(就是说HSV和HSB是一回事)。

**YUV、YCbCr(YCC)、YPbPr、YDbDr、YIQ
这些颜色模型大都是用在电视系统、数位摄影等地方。**其中的Y分量都表示的是明亮度(Luminance、Luma)。

**YUV颜色模型中,U、V表示的是色度(Chrominance/Chroma)。**YUV是欧洲电视系统所采用的颜色模型(属于PAL制式),颜色被分为一个亮度信号和两个色差信号进行传输。

YCbCr(简称YCC)中,Cb和Cr蓝色(blue)和红色(red)的色度。 YCbCr是YUV的压缩和偏移的版本。

YPbPr类似YCbCr,与之不同的是,YPbPr选用的CIE色度坐标略有不同。一般SDTV传输的色差信号被称作Cb、Cr,而HDTV传输的色差信号被称作Pb、Pr。

YDbDr也类似YCbCr,同样也是色度坐标不同。YDbDr是SECAM制式电视系统所用的颜色模型。

YIQ也和上面的类似。。是用在了NTSC制式的的电视系统里。
此处输入图片的描述
全球电视系统制式分布,PAL用YUV、SECAM用YDbDr、NTSC用YIQ

下面再说一些人听懂的话:
YCbCr颜色空间,也就是YUV,YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别用Cr和CB来表示。其中,Cr反映了GB输入信号红色部分与RGB信号亮度值之间的差异。而CB反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。
  采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的兼容问题,使黑白电视机也能接收彩色电视信号。
  
  Y代表的灰度级较高,而CrCb则相对灰度值要少些。
这里写图片描述
从上图可以看出区别,Y对应的就是灰度或者说是亮度,而Cb、Cr则相对灰度级较少,人眼分辨差异较大。

AE开发之鹰眼窗口、书签相关推荐

  1. AE开发中鹰眼的隐藏

    AE开发中鹰眼的隐藏 菜单栏中加入文本 双击添加事件处理函数 根据自己的splitContainer加入代码: if (splitContainer1.Panel2Collapsed) { split ...

  2. AE开发之图层渲染20210603

    AE开发之图层渲染 比例符号化 地图的整饰 唯一值符号的符号化过程 点符号设置,线符号设置 标注图层, (写得不好,不推荐看) 唯一值符号化,字段进行设置,这里用到了UniqueValueRender ...

  3. 将AE开发的专题图制作功能发布为WPS

    AE开发可以定制化实现ArcGIS的地理处理功能,并实际运用于其他方面的工作,有时候我们还希望将AE开发的功能发布为网络地理信息处理服务(WPS),从而能在Web端更自由便利地调用所需要的地学处理算法 ...

  4. C#+AE开发TOCControl右键菜单打开属性表/图层目录右键功能

    文章转载自网易云博客,最初原创博客链接已失效,不再给出.仅给出转载链接: C# AE开发 TOCControl 右键打开图层属性表 致谢! 华丽丽的分割线/ 在ArcMap中,单击图层右键菜单中的&q ...

  5. GIS二次开发实习——鹰眼功能模块的实现(鹰眼锁定不能动,红框与主地图联动)

    GIS二次开发实习(一)--鹰眼功能实现 学期末为期2周的实习结束了,对实习要求所做 太湖水资源管理系统 的功能的实现一一做一个记录,今天先来鹰眼部分(细节部分这里就不说了看前面的文章(一)). 实现 ...

  6. AE开发使用内存图层

    AE开发中,有时需要从磁盘中读取一些文件信息如坐标点转为图层并进行分析,此过程并不需要坐标点入库之类的操作,就可以创建一个内存图层解决问题.创建内存图层需要用到InMemoryWorkspaceFac ...

  7. AE开发 遇到未能加载文件或程序集的问题 FileNotFoundException

    AE 开发软件 遇到: 未处理FileNotFoundException 未能加载文件或程序集 "xxx, version = 1.0.0.0, cultrue = neutral, Pub ...

  8. AE开发中“无法嵌入互操作类型*****,请改用适用的接口”解决办法

    问题:在AE开发中遇到:"无法嵌入互操作类型*****,请改用适用的接口" 解决办法:在"项目解决方案"中找到"引用",找到报错出现的类对应 ...

  9. AE开发笔记(二)制图输出

    一.制作mxd模板文件 尽可能在模板图层中标注要素,这样在模板图层中插入要素后,标注可以随之自动显示. 二.打开真实数据要素类 打开真实要素类,获取该要素类和空间参考,以及标注需要的字段索引. 三.打 ...

  10. 宝塔面板搭建onenav – 使用PHP开发的简约导航/书签管理系统

    OneNav,使用PHP + SQLite 3开发的简约导航/书签管理器.不熟悉docker安装的可以用宝塔搭建体验了一番,效果不错.觉得麻烦也可以去宝塔软件商店中一键部署. 1.准备 PHP7.3 ...

最新文章

  1. WKWebView自适应大小
  2. 64匹马8个跑道需要多少轮才能挑选出最快的4匹马?
  3. pytorch教程龙曲良06-10
  4. OC Swift混编-Swift.h File not found
  5. 编程中的蛇形填空问题_PCB—蛇形线的作用,这次真的是把你搞懂了
  6. Gartner发布2022年政府行业主要技术趋势:XaaS、数字化、超自动化等
  7. java多线程为啥一直用的一个线程_一个Java多线程的问题,颠覆了我多年的认知!...
  8. jq php 获取机器码,jquery实现聊天机器人
  9. HTML实时预览-LiveReload完整使用方法
  10. 数据库连接池种类及性能
  11. 如何在双显示器设置中将 Mac Dock 保持在一个屏幕上?
  12. raid及mdadm命令之一(含shell显示字体颜色等)
  13. 关于MBR、GPT以及BIOS引导模式区分
  14. Tapestry5之Application Module
  15. Niushop 快递打印单模板设置
  16. 手把手教你用Execel计算两个矩阵的乘法
  17. python 爬取图片网站图片链接并下载收集
  18. pymysql操作MySQL数据库表-----爬虫豆瓣top250电影并存入数据库
  19. 【网络基础】通俗易懂的搞明白什么是IP地址(小白向)
  20. 勒索病毒爆发波及中石油:2万座加油站断网

热门文章

  1. 软考中级软件设计师--5面向对象基础
  2. HTTP报文(这篇讲得比较详细)
  3. HTTP网络协议四:HTTP报文及报文字段说明
  4. xftp中文文件名乱码
  5. 半导体物理 第七章 金属半导体接触整流理论
  6. 数据中心智能综合监控系统
  7. 微信小程序开发制作 | 第1期:下载微信小程序开发工具
  8. 程序员PDF书籍下载
  9. Django项目目录及项目文件介绍
  10. 前端特效-霓虹灯按钮