fix: 增加日记记录

This commit is contained in:
2023-06-13 16:37:18 +08:00
parent a4a8110c2b
commit 4a0eed5453
49 changed files with 7920 additions and 20 deletions

View File

@@ -1,3 +1,22 @@
# Gis技术
# Gis相关内容简介
> Gis技术
该教程内容是根据[Spatialite官方教程](https://www.gaia-gis.it/fossil/libspatialite/wiki?name=misc-docs)所做的翻译Spatialite教程主要分为[cookbook](http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/index.html)和[tutorial](http://www.gaia-gis.it/gaia-sins/spatialite-tutorial-2.3.1.html)
建议先食用tutorial后再酌情考虑是否使用cookbook
官方声称该教程已经较为老旧但是仍可继续使用spatialite更新并非特别频繁因此此教程在较长时间里还是很有借鉴意义的
## Spatialite教程
* [Spatialite教程](Spatialite教程.md)是官方教程
## Spatialite-Cookbook
* [Spatialite-Cookbook](Spatialite-Cookbook.md)类似于最佳实践
## VTM引擎
* [VTM引擎使用指南](VTM引擎使用指南.md)
## xviz
* [xviz学习记录](xviz.md)

View File

@@ -0,0 +1,34 @@
# Spatialite CookBook
## 厨房工具和烹饪技巧
### 技术名词介绍
专业的说法SpatiaLite是支持国际标准例如SQL92和OGC-SFS的Spatial DBMS(空间数据库管理系统)。
我想,即使是专业的计算机相关专业人员,上面的各种缩写和英文描述一定会让你觉得一头雾水——虽然我们已经尽量为这些描述添加了一些说明。
不用担心:晦涩的技术术语通常掩盖了真正易于理解的概念:
* DBMS(Database Management System) 数据库管理系统
* 数据库管理系统是一种旨在以最有效和通用的方式存储和检索任意数据的软件,事实上,数据库内一般会存储很多大量的,高度结构化的复杂数据。
* SQL (Structured Query Language) 结构化查询语言
* Sql是一种支持DBMS处理的标准化语言。使用Sql您可以方便地定义数据的组织和存储方式您可以方便地在数据库中实现复杂的增、删、改、查操作。
* OGC-SFS (Open Geospatial Consortium - Simple Feature Specification) 开放地理空间联盟-简要特征规范
* 允许扩展基本的DBMS / SQL功能以便支持特殊的Geometry数据类型因此也被称为Spatial DBMS(空间地理数据库)。
**SpatiaLite**是一个广泛流行的基于Sqlite的轻量级个人数据库系统。
**SQLite**实现标准的SQL92数据引擎而SpatiaLite实现标准的OGC-SFS核心二者紧密结合。结合二者的能力去使用就是一个完整的Spatial DBMS(空间地理数据库)。
了解Sqlite的应该都清楚SQLite并非传统的client-server架构而是将数据库引擎嵌入在程序中。这样简洁的架构设计大大减少了数据库管理的成本你可以像打开一个普通的文本文件一样打开一个sqlite数据库。一个包含了数百万条数据的sqlite数据库文件你可以自由地将其复制、删除而不会有任何问题。同样因为数据库文件的通用性你可以将这个文件从一台电脑传输到另外一台上而无需做任何预处理。两台电脑也可以是不同的操作系统因为Sqlite数据库是跨平台的。
诚然所有这些简单和轻量级的优点都是有代价的SQLite/SpatiaLite对多线程的支持很差这也是它被称为个人数据库的原因其潜台词就是单用户、单程序、单工作站。
如果支持多线程并发是你的硬需求那么SQLite/SpatiaLite显然不是你的最佳选择。幸运的是Sqlite/Spatialite同PostgreSQL/PostGIS(一款重量级的client-server架构的空间地理数据库系统)十分相似,你可以平滑地切换到该平台。
---
### 准备工作(软件安装)
这不是一本理论手册这是面向绝对初学者的实用入门指南。忽略那些DBMS、SQL以及GIS这些专有名词吧跟着这个教程一步一步动手去做就好了。

171
gis/Spatialite教程.md Normal file
View File

@@ -0,0 +1,171 @@
# Spatialite快速入门
## 1.开始
### 1.1 开始准备
本教程的目标是让你快速熟悉Spatialite和Spatialite的空间函数。
这里我们默认您已经熟悉最基本的Sql增删改查操作如果您不是一名程序员也无需担心基础的sql语句都十分简单相信您在学习本教程时也能快速入门。
本教程使用[test-2.3.sqlite](../assets/test-2.3.sqlite)作为测试用数据您可以点击超链接下载该文件。这里我们使用官方提供的基于Windows环境的[Spatialite-gui程序](../assets/spatialite_gui-NG-5.0.0-win-amd64.7z)作为练习,您也可以在[这里](http://www.gaia-gis.it/gaia-sins/index.html)下载或编译其他系统的Spatialite程序。
万事具备现在可以双击打开spatialite_gui.exe程序。
1. 点击Menu
2. 选择Connect an existing Sqlite DB然后选择刚才下载的test-2.3.sqlite文件。
3. 此后我们右侧上部的输入框内输入sql语句。
4. 然后单击最右侧的按钮执行sql。
![Spatialite-gui使用](../assets/1.1-Spatialite-gui使用.png)
### 1.2 关于test-2.3.sqlite文件
这是一个简单的,小型的但是又极具现实意义的数据库文件,由[这个网站](https://www.rigacci.org/wiki/doku.php/tecnica/gps_cartografia_gis/download)提供。
这个文件主要包含下面几个表:
1. regions表包含109行数据存在的geometry列存储的是一个POLYGON面数据。
2. towns表 包含8101行数据存在的geometry列存储的是一个POINT点数据。
3. highways表 包含775行数据存在的geometry列存储的是一个LINESTRING线数据。
### 1.3 简单的sql查询
Spatialite支持所有的sqlite语句的执行事实上Spatialite是在sqlite数据库的基础上增加了支持空间函数的扩展例如我们可以在Spatialite-gui.exe中执行以下sql语句
#### 1.3.1 简单查询
> ```sql
> SELECT * FROM towns LIMIT 5;
> ```
>
> ![1.3.3-1.png](../assets/1.3.3-1.png)
#### 1.3.2 条件查询
> ```sql
> select name AS Town, peoples as Population from towns ORDER BY name LIMIT 5;
> ```
>
> ![1.3.3-2.png](../assets/1.3.3-2.png)
#### 1.3.3 排序查询
> select name, peoples from towns WHERE peoples > 350000 order by peoples DESC;
>
> ![1.3.3-3.png](../assets/1.3.3-3.png)
#### 1.3.4 求和、最大、最小值查询
> ```sql
> select COUNT(*) as '# Towns',
> MIN(peoples) as Smaller,
> MAX(peoples) as Bigger,
> SUM(peoples) as 'Total peoples',
> SUM(peoples) / COUNT(*) as 'mean peoples for town'
> from towns;
> ```
> ![1.3.3-4.png](../assets/1.3.3-4.png)
#### 1.3.5 简单表达式
**Spatialite也支持简单的表达式请看这个例子**
> ```sql
> select (10 - 11) * 2 as Number, ABS((10 - 11) * 2) as AbsoluteValue;
> ```
>
> ![1.3.3-5.png](../assets/1.3.3-5.png)
#### 1.3.6 使用HEX
**HEX函数可以将指定列的数据转换为16进制的数据显示**
> ```sql
> select name, peoples, HEX(Geometry) from Towns where peoples > 350000 order by peoples DESC;
> ```
>
> ![1.3.3-6.png](../assets/1.3.3-6.png)
## 2. 开始使用空间函数
### 2.1 Geometry和WKT字符串的互转
#### 2.1.1 查看Geometry的bolb对象,使用AsText
* AsText函数也许是Spatialite中使用最频繁的函数之一多数情况下我们会将数据的位置信息以Bolb格式(数据对象)保存并且为了日后可以按照空间关系去查询数据还会以该字段建立空间索引。而查询后的数据又该如何使用呢就是通过AsText函数将Bolb对象转换为WKT文本然后在应用层再将该WKT文本重新转换为空间对象(Java中使用jts.jar中提供的函数实现转换)。
> ```sql
> Select Name, Peoples, AsText(Geometry) from Towns order by Peoples Desc
> ```
>
> ![2.1.png](../assets/2.1.png)
#### 2.1.2 Wkt对象转换为数据库中的空间对象使用GeomFromText
* GeomFromText可以将wkt格式的字符串转换为Spatialite中的geometry对象
> select GeomFromText('Point(5 10)')
### 2.2 获取Geometry的X和Y坐标
* 当Geometry的数据类型是Point点时可以通过X、Y函数获取这个点的经纬度
> ```sql
> SELECT name, X(Geometry), Y(Geometry) FROM Towns
> WHERE peoples > 350000
> ORDER BY peoples DESC
> ```
> ![2.3.png](../assets/2.3.png)
### 2.3
* 该部分我们将带你认识OpenGIS规范中定义的SpatiaLite支持的各种GEOMETRY类简单来讲任何的Geometry类都是一种特定的几何类型(点/线/面)。在此前的章节中我们已经认识了点(Point)类型,下面我们再来了解下其他的几何类型。
---
#### 2.3.1 查询线类型
> ```sql
> SELECT PK_UID, AsText(Geometry) FROM HighWays WHERE PK_UID = 1
> ```
> ![2.3.1.png](../assets/2.3.1.png)
> 截图不完整请自行在Spatialite中测试查看
* LineString是另外一种Geometry对象它由许多个(>=2)点组成,在几何中代表一根线
* 这里查询到的就是由若干个点组成的一根线数据在LineString中一组经纬度由空格分隔而各组经纬度所组成的点则由逗号分隔
* 在实际使用中,成百上千个点组成一条线并不少见
#### 2.3.2 NumPoints、GLength、Dimension、GeometryType
> ```sql
> SELECT PK_UID, NumPoints(Geometry), GLength(Geometry),Dimension(Geometry), GeometryType(Geometry)
> FROM HighWays ORDER BY NumPoints(Geometry) DESC LIMIT 5;
> ```
> ![2.3.2.png](../assets/2.3.2.png)
* NumPoints函数返回LineString对象的点位个数
* GLength函数返回LineString的长度(单位以地图单位为准)
* Dimension函数返回Geometry的维度(点类型的维度就是0线类型为1面类型为2)
* GeometryType返回Geometry的类型(可能会返回POINT、LINESTRING、POLYGON以及多线MULTILINESTRING、多面MULTIPOLYGON)
#### 2.3.3 StartPoint、EndPoint、PointN
> ```sql
> SELECT PK_UID, NumPoints(Geometry),
> AsText(StartPoint(Geometry)), AsText(EndPoint(Geometry)),
> X(PointN(Geometry, 2)), Y(PointN(Geometry, 2))
> FROM HighWays ORDER BY NumPoints(Geometry) DESC LIMIT 5;
> ```
> ![2.3.3.png](../assets/2.3.3.png)
* StartPoint函数返回LineString对象的起点
* EndPoint函数返回LineString对象的终点
* PointN返回LineString对象指定的第N个点
#### 2.3.4 面对象Polygon
> ```sql
> SELECT name, AsText(Geometry) FROM Regions WHERE PK_UID = 52
> ```
> ![2.3.4.png](../assets/2.3.4.png)
* Polygon是另外一种Geometry对象一般由多个点(>=3)组成,代表一个面几何对象
* 这个例子中的Polygon是一个极为简单的类型只包含一个外环。请注意Polygon有时会包含若干个内环
* Polygon的数据与LineString类似事实上一个Polygon面可以认为是一条首尾相连的Line组成的
* 因此Polygon的首点和尾点必须一致
#### 2.3.5 Area、Centroid、Dimension、GeometryType
> ```sql
> SELECT PK_UID,
> Area(Geometry), AsText(Centroid(Geometry)),
> Dimension(Geometry), GeometryType(Geometry)
> FROM Regions ORDER BY Area(Geometry) DESC LIMIT 5;
> ```
> ![2.3.5.png](../assets/2.3.5.png)
* Area函数返回Polygon的面积
* Centroid函数返回Polygon的质心可以认为是polygon的中心点
* Dimension和GeometryType我们在上面的LineString中已经见识过了这里不再赘述

View File

@@ -0,0 +1,183 @@
# VTM 引擎使用指南
[VTM](https://github.com/mapsforge/vtm)(Vector Tile Map)地图引擎是一个由OpenScienceMap组织开发的(目前已移交给mapsforge组织管理维护)Java编写的地图引擎它是一个支持Android、IOS、桌面端以及Web端的跨平台渲染引擎同时显示效率也极为优秀。
## 地图特性
- Java地图库
- OpenGL矢量瓦片渲染
- 可设置主题的矢量瓦片图层(渲染主题)
- 支持多个瓦片数据源:
- OpenScienceMap矢量瓦片
- 地图矢量地图
- MBTiles矢量瓦片&栅格瓦片
- Mapbox矢量瓦片例如Mapilion、Mapzen、Nextzen、OpenMapTiles
- GeoJSON矢量瓦片例如Mapzen、Nextzen
- 栅格瓦片:以四叉树方式存储的栅格图片
## [地图样式详解](https://github.com/mapsforge/vtm/blob/master/docs/Rendertheme.md)
<!-- tabs:start -->
#### **中文**
本文介绍了如何使用基于XML的渲染主题来设置矢量瓦片图层数据样式的映射。
#### **英文**
This article describes how to use XML-based render-themes to style maps.
<!-- tabs:end -->
### 样式介绍
<!-- tabs:start -->
#### **中文**
渲染主题是一个包含了规则和渲染指令的XML文件。这样的文件可以用于自定义渲染地图的可视化样式。vtm地图库带有类似于Osmarender风格的内置渲染主题。也支持加载外部渲染主题文件可以在运行时通过map.setThemeThemeLoader.loadFile方法激活对应的渲染文件。
渲染主题文件的语法和语义与Osmarender规则相似但不完全相同。格式化的渲染主题的描述规则以XML模式文档的形式存在可以在[仓库这里](https://github.com/mapsforge/vtm/blob/master/resources/rendertheme.xsd)中找到。
我们始终建议您通过研究默认的[内置渲染主题](https://github.com/mapsforge/vtm/blob/master/vtm-themes/resources/assets/vtm/default.xml)来学习如何定义渲染样式。
#### **英文**
A render-theme is an XML file which contains rules and rendering instructions. Such files can be used to customize the visual style of the rendered map. The vtm map library comes with built-in render-themes similar to the Osmarender style. External render-theme files are also supported and can be activated via the map.setTheme(ThemeLoader.load(File)) method at runtime.
Syntax and semantics of render-theme files are similar but not identical to Osmarender rules. A formal render-theme description exists as an XML schema document, it can be found in the repository.
It is always recommended to study the default built-in render theme.
<!-- tabs:end -->
### 规则描述
---
规则元素m/match是主题文件匹配数据的最基础标签它具有多个属性用于指定规则如何匹配属性元素他们都是可选的没有一个是必需的。
| 属性 | 可选值 | 描述 | 默认值 |
|:---------:|:-----------:|:-----------------------:|:-----------:|
| e | node</br> way </br> any|定义匹配到的地图要素类型| any |
| k | string | tile数据源中tag的key.</br>可以通过在多个string中添加"\|"方式定义多个key |any key|
|v |string |tile数据源中tag的value.</br> 可以通过在多个string中添加"\|"方式定义多个value.</br> 可以在“\|”前添加“-”,表示非指定要素可以匹配,例如“-\|A\|B”意味着匹配非A或B的value注意“\|”不会单独使用.</br> 如果地图tag存在该key但是没有特定的value可以使用“~”匹配任意value.| any value|
|closed |yes</br>no</br>any|当way要素被匹配时如果首尾坐标相同则被认为closed为true| any|
|select | first</br>when-matched</br>any|当前规则的子规则下的仅第一个匹配规则生效(其他规则忽略)</br>当前闭合规则下所有的匹配项均被选择</br>选择所有(无论是否匹配)|any|
|zoom-min | unsigned byte | 规则匹配的最小zoom | 0 |
|zoom-max | unsigned byte | 规则匹配的最大zoom | 127|
规则定义可以是无限深度来定义渲染指令,并且指令取决于多个规则。这样可以用来定义复杂的渲染规则以避免冗余。
请看下面的示例:
```xml
<m e="way" closed="no">
<m k="highway" v="motorway">
<m k="tunnel" v="true|yes">
</m>
<m k="tunnel" v="~|no|false">
</m>
</m>
</m>
```
下面有一个select标签的使用示例在下面这段规则中symbol会显示而加粗的coption不会被显示因为只有第一个匹配的子规则会被选择。斜体的caption也会被显示因为它也是第一个被选中的子规则。
```xml
<m k="railway" v="halt|tram_stop" zoom-min="15" select="first">
<m v="tram_stop">
<symbol src="assets:symbols/transport/tram_stop.svg" />
</m>
<m v="tram_stop">
<caption style="bold" dy="20" fill="#af3a3a" k="name" size="12"/>
</m>
<m select="when-matched">
<caption style="italic" dy="-20" fill="#222222" k="name" size="12"/>
</m>
</m>
```
### 渲染介绍
---
渲染指令指定地图元素的绘制方式。**每个规则元素可以包括任意数量的渲染指令**。除了标签(label)和符号(symbol)之外,所有渲染指令都按照定义的顺序绘制在地图上。
当前版本下支持的渲染样式有如下几类:
- area
- caption
- circle
- line
- outline
- lineSymbol
- text
- extrusion
- symbol
每一个渲染要素支持的渲染属性,可以参考对应的[渲染规则xml文件](https://github.com/mapsforge/vtm/blob/master/resources/rendertheme.xsd)。
### 标题元素
---
在顶级标签rendertheme下可以添加下面几个属性描述用于定义theme中的整体样式。
- map-background: 地图背景颜色(空白区域的颜色描述),这个颜色值应该区别于陆地要素和海洋要素,默认的背景颜色是白色#FFFFFF
- base-stroke-width: 基础线宽默认值为1
- base-text-scale: 基础文本缩放比例默认为1
```xml
<?xml version="1.0" encoding="UTF-8"?>
<rendertheme xmlns="http://opensciencemap.org/rendertheme" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://opensciencemap.org/rendertheme https://raw.githubusercontent.com/mapsforge/vtm/master/resources/rendertheme.xsd" version="1" map-background="#FFFCFA">
</rendertheme>
```
### Text和Caption标签
---
最常用的显示文本的标签:
|属性|可选值|描述|默认值|
|:---------:|:-----------:|:-----------------------:|:-----------:|
|font-family| default, default_bold, monospace, sans_serif, serif, thin, light, medium, black, condensed| 设置字体| default|
|style| bold, bold_italic, italic, normal| 设置文字样式| normal|
|size| non negative float| 设置文字大小| 0|
|fill| color| 设置文字填充颜色| #000000|
|stroke| color| 设置文字外边框颜色| #000000|
|stroke-width| non negative float| 设置文字外边框宽度| 0|
|dy| float| 设置文字在纵轴上的偏移量| 0|
### 样式(Styles)
---
尽可能以简化地图渲染以及切换地图样式。
#### 样式模板Style patterns
假如你要在不同匹配规则下多次使用对应的样式文字text、线line、面area或者符号symbol不用每次都定义一次新的样式你可以通过定义一个渲染样式后为它命名一个id然后在需要使用它是使用use标签来引用它。
```xml
<style-area fade="11" fill="#e8e7e3" id="residential" />
<m closed="yes" e="way" k="highway|building" v="~">
<m v="residential|commercial|retail|farmyard">
<area use="residential" />
</m>
</m>
```
### 样式菜单(略)
### 优先级Priorities
label和symbol是按照优先级绘制在地图上的默认最高的优先级是0因此只有当空间尚未被占用或优先级值低于其冲突元素时才会绘制优先级高于0的内容。
```xml
<m e="node" k="place" v="town" zoom-min="8">
<caption priority="2" k="name" style="bold" size="14" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
</m>
<m e="node" k="place" v="city" zoom-min="6" zoom-max="6">
<caption priority="0" k="name" style="bold" size="11" fill="#333380" stroke="#FFFFFF" stroke-width="2.0"/>
</m>
```
### 图标Symbol
Symbol可以使用png图片或是svg矢量图标VTM在Android和Java环境下支持[Tiny SVG](http://www.w3.org/TR/SVGTiny12/index.html)标准的大部分子集内容。
#### SVG缩放
SVG资源会被自动缩放以适应不同设备的分辨率但是你也可以通过下面的选项来优化SVG图标的显示大小
- 如果没有给出大小svg将呈现为20x20像素乘以设备比例因子和用户设备的缩放调整。
- Symbol-percent: SVG以其默认大小的百分比大小呈现。这是使某些svg比其他svg更小或更大的最佳方法。
- symbol-width/symbol-height其他参数提供符号的绝对像素大小同样由比例因子调整。如果只设置了一个尺寸则根据纵横比计算另一个尺寸。
#### SVG资源
如果你想知道如何设计自己的svg图标你可以看看[Google's Material Design](https://material.io/design/iconography/system-icons.html)惯例。为了降低SVG的大小建议使用SVG文件中的重用工具并删除任何不必要的注释和元数据。

4
gis/_sidebar.md Normal file
View File

@@ -0,0 +1,4 @@
* [Gis相关](/Gis/README.md)
* [Spatialite教程](/Gis/Spatialite教程.md)
* [Spatialite-Cookbook](/Gis/Spatialite-Cookbook.md)
* [VTM引擎使用指南](/Gis/VTM引擎使用指南.md)

99
gis/xviz.md Normal file
View File

@@ -0,0 +1,99 @@
# Xviz协议
> 说明
本文是参考Xviz翻译的学习笔记英文功底好的同学可以直接去[官网](https://avs.auto/#/streetscape.gl/overview/introduction)学习
## 介绍
![20220715165825.png](http://qiniu.xiaoyan159.space/xiaoyan159-vscode/20220715165825.png)
## Xviz概念
---
XVIZ 协议的描述基于此处介绍的许多概念。
### Datum(数据资料)
---
一个我们希望可视化的数据对象(通常来自机器人系统)。
### Stream(数据流)
---
流是相同类型的时间戳数据序列Datum。不同类型的基准被组织在不同的流中。
- 流名称(Stream Name) - 每个流必须有一个唯一的名称。应用程序定义了这些名称XVIZ 要求名称遵循以“/”分隔的类路径结构,例如“/vehicle/velocity”。
- 流类型(Stream Type) - 流的类型由它包含的数据(Datum)类型定义。
下面的流类型是Xviz协议预定义的一些类型Xviz提供了工具包以支持这些类型数据的解析、显示
- 姿态流(Pose Stream) - 描述一个角色在它定义的相对坐标系统下的位置和方向的数据集。
- 坐标类型(Geometry Types) - 原始的经纬度坐标。
- 变量(Variables) - 数据组
- 时间序列(Time series) - 一个大序列的独立样本individual samples of a larger series
- 树形结构表 - 树形数据结构,用来记录密集的数据记录类型(hierarchical data structure, use to convey dense record type data)
- 照片流(Image Stream) - 二进制格式的图片数据(Binary format image data)
### 数据源(Source)
---
一个数据源Source是一个Xviz流数据产生的源。它可以是从Url或者一个文件加载的预生成的Log数据也可以对应一个从数据服务器(例如socket)产生的实时数据。A source of XVIZ streams. A source can be a pre-generated log loaded from a URL or a file, but it can also be a live data served over e.g. a socket.
一个Source包含一个或者多个Stream流以及关于流的元数据metadata描述。Each source contains one or more streams, as well as a metadata about the streams.
### 元数据(Metadata)
---
一个特殊的Xviz消息它包含了关于Source以及Source包含的Stream的描述信息。(A special XVIZ message that contains descriptive information about the data source and its streams.)。
### 原始坐标(Primitive)
---
Xviz的原始坐标是指诸如点、线、面这样的可视化几何对象这些对象可以被标记为特定的样式(例如颜色)。
### 样式(Style)
---
Xviz支持样式表允许对基于流和类的对象属性做特殊的样式声明。XVIZ support a form of stylesheets, allowing object properties to be specified based stream and class.
### 对象(Object)
---
对象(Object)是一个被原始坐标、变量和时间序列标记的主体,这些标记可以跨流或者跨时间片段。
### 变量(Variable)
一个值序列在单一时刻下发生的值,例如一辆行驶在特定路径上汽车的速度值,每次从流中获取的数据就是值序列在此时刻改变的更新值。
(A sequences of values the occur at a one time. Like the speed of travel over a planned path for a vehicle. Each time you get an update to a variable stream, the full list of values changes.)
### 时间序列(Time Series)
时间戳值可以包含在流中。每次流更新时,您都会得到一个新的时间戳的名值对。(Time stamped values can be included in streams. Each time the stream updates you get a new timestamp, value pair.)
### 声明式UI(Declarative UI)
结构化数据格式可以映射为UI组件如线形图、控制面板、表格以及视频面板都与流中指定的数据名绑定。这些数据会和元数据一起发送以使其与数据源紧密耦合。
(A structured data schema that will map UI elements, such as plots, controls, tables, and video panels along with the stream name data bindings. This data is sent with the metadata to keep it closely coupled to the data source.)
### 视频(Video)
XVIZ可以同步外部视频源数据前提是该数据已经被提前按照指定方式编码过。(XVIZ can sync with external video sources provided that they have been encoded in a suitable way.)
### 编码(Encoding)
XVIZ协议规范没有规定任何给定的编码但是XVIZ库支持JSON中的编码和解析。(The XVIZ protocol specification does not prescribe any given encoding, however the XVIZ libraries come with support for encoding and parsing in JSON.)
## 用户引导
Xviz提供了多种工具以帮助你生成、验证、解析和格式化Xviz数据。(XVIZ comes with a number of tools to help you generated, validate, parse and style XVIZ.)
这个引导将向你演示如何使用提供的工具将你的数据转换为Xviz协议的数据。(This guide will show you how to use these tools to convert your data into XVIZ.)
它包含下面几个方面:
- 解释Xviz必须的数据
- 在Xviz中如何管理流(stream)、对象(object)和时间(time)
- 解释帧概念(fram)以及与之相关的时间(time)和流(stream)
- 如何在Xviz中创建UI对象
### 安装
根据你需要对Xviz所做的操作(生成、解析、验证),可以单独安装其中的某些组件。
|NPM moudule名| 描述 |
|:-----------:|:---:|
|@xviz/builder| 帮助构建和生成Xviz数据|
|@xviz/parser | 帮助解析和处理Xviz数据|
|@xviz/schema |用于验证 XVIZ JSON 数据的 JSON 结构|
例如如果需要生成Xviz数据可以引入builder Api
```Javascript
npm install @xviz/builder
# or
yarn add @xviz/builder
```