---
title: 图纸挑数据
source: https://vjmap.com/guide/map-video/cad-data.html
---

---
group: 数据与素材
video: mv-cad-data
description: 以 CAD 图纸为底图时，用图层、SQL 查询和拾取实体挑出需要的实体，收成要素并加上效果。
---

# 图纸挑数据

CAD 图纸铺成底图后，图上的线条、文字和标注很多，真正要做效果的往往只有其中几样。本篇介绍如何用图纸工具挑出需要的数据：先关掉不要的图层，再按条件查询或直接在图上拾取实体，把它们收成要素，最后改样式、加到时间轴。示例是让总平面图里的用地红线亮起来。

::: tip 小技巧
本篇从图纸已经铺好讲起。在「地图」的「图纸」里选图、应用为图纸底图的做法，可以参考 [三维地球与三维场景](./globe-3d.html) 中铺图纸的部分。
:::

## 图层

铺好图纸后，「编辑地图」工具栏的右端会多出几个图纸工具。本篇用到其中三个：

![编辑地图右上角的图纸工具](./images/cad-data-tools.webp)

1. **图层**：开关图纸里的各个图层，播放器里的画面也跟着变；再点一次收起面板。
2. **SQL 查询**：按条件和范围查找实体，查到的结果可以定位，也可以加为要素。
3. **拾取实体**：在图上点选或框选实体，按回车把它们收成一个要素；再点一次收起面板。

打开的工具会显示在地图右侧的面板里，面板顶部用标签页（如「SQL」「图层」）区分已经打开的工具。

先整理图面：

1. 点「图层」，面板里列出这张图纸的所有图层，每个图层前面有一个勾选框。
2. 去掉文字和标注图层前面的勾。示例里去掉的是 `PUB_DIM`、`PUB_TEXT`、`TEXT` 和 `AXIS_TEXT`。
3. 这些图层上的文字、标注就不再显示，图纸看起来更干净，后面挑实体时也不容易点错。

![在图层面板里去掉文字和标注图层](./images/cad-data-layers.webp)

1. **图层**：打开图层面板。
2. **标注、文字图层**：去掉 `PUB_DIM`、`PUB_TEXT`、`TEXT` 的勾。
3. **AXIS_TEXT**：轴网文字也一并去掉。

## 按条件查询

知道要的实体在哪个图层上时，用 SQL 查询可以一次把它们全部找出来。

1. 点「SQL 查询」，面板切到 SQL 页：上方是条件输入框（空着时显示示例 `name==AcDbText and text like '%平面%'`），中间是一排按钮，下方是「范围 x1,y1,x2,y2」输入框。
2. 不熟悉条件写法时，点这排按钮最左边的「添加条件」，打开「添加 SQL 条件」对话框。
3. 在「图层」这一行，左边选「=」（等于），右边的列表里选「红线」。
4. 点「生成」，条件就自动写进上方的输入框。

![添加 SQL 条件：图层等于红线](./images/cad-data-sql-condition.webp)

1. **添加条件**：打开「添加 SQL 条件」对话框。
2. **图层**：运算符选「=」，图层选「红线」。
3. **生成**：把填好的行转换成查询条件。

对话框里可以按「数据库 id」「实体 ID」「图层」「实体类型」「颜色」「扩展数据」「坐标」「文字内容」「多行文字」「颜色索引」设置条件。正如对话框顶部的提示：没填的行会跳过，每一行右侧的「与 / 或」用来连接下一条。

条件生成后开始查询：

1. 点按钮行最右边的「查询」，红线图层上的实体都会列在下方，并显示一共查到几条。
2. 每条结果显示实体类型（如多段线、圆弧、直线），右侧有两个按钮。
3. 点结果里的定位按钮，地图会跳到这个实体，便于在图上确认。示例里第二条多段线就是用地红线。
4. 确认无误后点它的加号，把它加为要素。右下角会提示「已加入「多段线」」。

![查询结果：定位并加为要素](./images/cad-data-sql-result.webp)

1. **生成的条件**：示例生成的是 `layerindex = 1`，也可以直接在这里手写条件。
2. **查询**：按条件执行查询。
3. **结果条数**：示例查到 12 条。
4. **用地红线**：通过定位确认，这一条多段线就是用地红线。
5. **定位**：地图跳到该实体所在的位置。
6. **加为要素**：把这条实体加到「我的要素」里。

## 在图上拾取

不方便写条件时，可以直接在图上用鼠标挑选。

1. 点「拾取实体」，面板切到拾取页，再点最左边的「点选」。面板里会提示：点选或框选，右键、回车确定，`Esc` 取消。
2. 在要挑的位置点一下，例如新建建筑的轮廓，附近的实体都会被选进来。面板显示「已选 12 个 · 右键或回车收成一个要素」，下面逐条列出选中的实体。
3. 不需要的实体，点它右侧的叉去掉。
4. 点右上角的对勾，或按 `Enter`，把选中的实体收成一个要素。右下角会提示「已收成要素「拾取 12 个」」。

![拾取实体：点选、去掉多余实体、收成要素](./images/cad-data-pick.webp)

1. **拾取实体**：打开拾取面板。
2. **点选**：在图上单击即可选中实体。
3. **点选位置**：在新建建筑的轮廓上点一下。
4. **选中的实体**：列出本次选中的所有实体，如直线、多段线、圆、圆弧。
5. **叉**：把不需要的实体从选择里去掉。
6. **对勾**：收成一个要素，效果和按 `Enter` 相同。

三种工具各有分工，可以配合使用：

| 工具 | 用途 |
|---|---|
| 图层 | 隐藏不需要的图层，让图面更清楚 |
| SQL 查询 | 按条件成批挑出实体，逐条定位确认，加为要素 |
| 拾取实体 | 在图上直接点选实体，收成一个要素 |

## 加上效果

挑出来的数据都放在「我的要素」里，可以像普通要素一样改样式、加动画。

![我的要素里挑出来的两个要素](./images/cad-data-my-features.webp)

1. **我的要素**：左侧导航里的这一项，集中存放加为要素的数据。
2. **筛选与搜索**：「全部」「面」显示各类要素的数量，右边可以搜索要素。
3. **多段线**：用 SQL 查询加入的用地红线。
4. **拾取 12 个**：拾取实体收成的要素。两张卡片都标着「面」和「未加入动画」。
5. **操作提示**：单击选中，在右栏改样式；双击或点 + 加到播放头处；拖到时间轴可以指定时刻；按 `Ctrl` / `Shift` 多选。

改样式：

1. 在「我的要素」里单击「多段线」卡片，选中用地红线。右栏显示它的样式设置，分为「填充」「描边」「拉伸」几组。
2. 在「描边」组里，把描边色换成黄色、描边宽设为 8，再打开「描边发光」。

![在右栏修改描边样式](./images/cad-data-stroke.webp)

1. **描边色**：换成黄色（示例为 `#ffd03c`）。
2. **描边宽**：拖动滑块或直接输入 8，单位 px。
3. **描边发光**：打开开关，描边带上发光效果。

加到时间轴并播放：

1. 选中的卡片右下角会出现加号，点它把要素加到时间轴，界面右下角会提示「已加入 1 个片段」。
2. 时间轴上多出一条「面」轨，轨上是一段「多段线」片段；卡片上的「未加入动画」变成「用了 1 次」。
3. 此时右栏切换为这个片段的设置，在「样式」页可以选择「描边淡入」「呼吸脉冲」「边沿发光」等预设效果。

![把要素加到时间轴](./images/cad-data-add-timeline.webp)

1. **加号**：把要素加到时间轴。
2. **用了 1 次**：表示这个要素已经用在动画里。
3. **新片段**：时间轴上多了一段「多段线」。

从头播放，用地红线就以黄色发光描边亮了起来：

![播放时用地红线亮起来](./images/cad-data-glow.webp)

::: warning 注意
挑出来的要素只有加到时间轴之后才会出现在成片里。只在「我的要素」里改了样式、没有点加号，播放时是看不到的。
:::

::: tip 小技巧
加到时间轴后，播放器上方会提示「形状请在编辑地图中修改 (E)」：要改要素的形状，需要回到编辑地图里操作。
:::

## 下一步

除了使用 CAD 图纸，也可以自己画一张图做底图，见 [手动绘制](./draw-to-animation.html)。要素样式和动画的更多设置，可以看 [样式、动画与关键帧](./style-animation.html)。
