在 Kerry Studio 中,结果里的地图会把表格中的几何画在表旁边。没有它,单元格里的 POLYGON 或 POINT WKT 只是一段文字。地图按钮打开分栏。底图使用 OpenStreetMap。
如何使用
需要已打开的 workspace、已连接的 SQL 标签页,以及带几何的结果。如果结果没有空间列、单元格里也没有几何,地图按钮不会出现。文本列里的 WKT、EWKT 或 GeoJSON 就够打开地图。原生列(geometry、SDO_GEOMETRY、POINT 以及其他)需要该引擎的空间支持,见 各引擎所需的扩展。
- 执行返回空间列、WKT、EWKT 或 GeoJSON 的
SELECT。 - 在结果面板点击 地图。
- 表格和地图并排。拖动分隔条可以给地图更多空间。展开图标会把地图放到悬浮窗口里。关闭地图 把全部空间还给表格。
- 几何单元格上的 在地图中查看 会打开只含该值的地图,和 JSON 单元格的按钮一样。这张地图有放大、缩小和适应视图。点击图钉不会关闭地图。
- 在 放大 和 缩小 旁边,适应视图 会把结果里的全部几何框进视野。第一次在分栏、悬浮窗口或单元格地图里打开时,已经按这个方式框好视野。悬浮窗口里的图例会更大。
命令面板(⌘K / CtrlK)→ 切换结果地图 做同样的事。分栏不会自动打开。如果你让它开着,该标签页会记住。切换标签页不会带走缩放。
文本
文本页显示地图上当前所选内容的 WKT:结果里的几何,或一个绘图。尚未选择时,页面会提示先点击。只有一项时,就是这段 WKT,可直接粘贴。已合并的组只出并集的一段 WKT。多项会按块列出,带列名或 套索 1、矩形 1、椭圆 1。在指针工具下按 Shift、Ctrl 或 ⌘ 可加入或去掉一项,不会打开卡片,也不会移动地图。对 MULTIPOLYGON,点击只取被点中的那一块,并显示为 POLYGON。点击地图背景会清空选择。可以用鼠标或 Shift 加方向键选中这段文字。可以复制,也可以用复制按钮。⌘A 或 CtrlA 只选中这段 WKT。地图其余部分会变淡,好让当前所选更清楚。全部选中时,不会变淡。选中的图钉带白色描边。选中多项时,地图底部中央会显示数量。
对调经纬度只改绘制。表格里的值仍是数据库返回的内容。地图栏上的 标注 开关会在每项几何上显示列名。合并组里,同一列的面只在并集上显示一次列名。图钉仍各显示各的。它默认是关闭的。图钉上的名称贴在旁边,放大时不会换位置。区域上的名称贴在轮廓外侧,不在填充里。颜色跟随当前主题。如果两个名称会叠在同一位置,地图只显示放得下的那些。放大后就能看到其余的。
绘图和 SQL
选择是默认工具:单击绘图或几何以选中,拖动该绘图以移动。拖动不会平移地图。在地图背景上单击并拖动,会选中矩形真正碰到的绘图,而不是周围的空白。Shift、Ctrl 或 ⌘ 会加入当前选择。⌘A 或 CtrlA 会选中全部几何和绘图。单击已经闭合的绘图即可选中,套索、矩形或椭圆处于打开时也一样。手形用来平移地图。单击地图之后,V、H、L、R 和 E 分别对应选择、手形、套索、矩形和椭圆。这些快捷键在 SQL 编辑器里无效。在笔迹未完成时切换工具会取消当前笔迹,并按新形状继续画。套索可以画出多个自由轮廓。矩形和椭圆靠拖动画出。在矩形或椭圆上按住 Shift 可保持边长相等。每次松开鼠标会闭合一个多边形,然后可以再画下一个。删除绘图会去掉当前选中的绘图。Esc 先取消正在画的笔迹,再取消选择,再回到指针,最后才关闭悬浮窗口。关闭该窗口或地图会退出绘图并回到指针。已经闭合的绘图会保留到新的查询。切换标签页不会清掉这些绘图,也不会关掉栏上的模式,例如测量。
把多边形粘贴到 SQL 会在编辑器光标处插入选中的多边形;如果没有选中,就插入全部绘图。一个多边形变成 POLYGON。多个会变成该标签页方言里的空间合并。已合并的组会粘贴地图上画出的那块合并结果,查询里的几何和绘图一起。如果这块合并结果仍是分开的几块,粘贴的 SQL 会带上这些块。测量会分别标出每一块的数字。图钉不进入这段 SQL。在 PostgreSQL 和 MySQL 上,Kerry 会粘贴 ST_GeomFromText。在 Oracle 上粘贴 SDO_GEOMETRY。在 SQLite 上粘贴 GeomFromText。这段 SQL 需要该引擎的空间函数,与 各引擎所需的扩展 相同。ST_Intersects 仍是该标签页引擎的 SQL。这个按钮只粘贴多边形,不含面积。复制多边形 会把同一段 SQL 放到剪贴板。没有多边形时,这两个按钮都保持不可用。
合并 会把选中项合成一组,用绿色画出并集,并清空原来的填充。不必打开测量。每个新绘图都会加入当前选择。可以把查询里的几何和绘图合并在一起。因此可以画出两个再合并,不必换工具。每次合并会一直连在一起,直到你选择 取消合并。你可以先合并两项,再合并另外两项,已经合好的组不会被拆开。点击组里的一项会选中整个组。拖动其中一项会移动整个组。如果当前选中的正好是一个组,按钮会变成 取消合并。如果选中两个组再合并,它们会变成一个。G 合并。ShiftG 取消合并。选中不足两项时,按钮不会合并任何内容。如果这些面并不相交,并集仍是分开的几块。⌘Z 或 CtrlZ 可撤销创建、移动、删除以及合并或取消合并。⌘ShiftZ 或 CtrlShiftZ 可重做。工具栏上也有 撤销 和 重做。没有可撤销或可重做的步骤时,这两个按钮保持不可用。
测量
测量 在地图栏上显示每个多边形的面积,单位可选 m²、ha 或 km²。图例、选中数量条和多边形标注上的数字都会带上该单位。对于 MULTIPOLYGON,每一块岛屿都会在地图上显示自己的数字。数字来自单元格里的坐标,或手绘绘图的经纬度。它同时打开该列的合计。同一多边形被 JOIN 叠出来的相同副本,在合计里只算一次。选中已合并的组时,绿色并集标注和图例中的合并组一行显示同一合计。选中数量条也只显示并集。未合并时,选中两项会显示合计和重叠。如果坐标系无法支持这个数字,多边形仍留在地图上,数字不会出现。点和线不参与。新查询会清掉绘图,它们的测量一并消失。只要地图还开着,所选单位会保持。切换标签页不会关掉测量。
地图上的列
结果里的每一列几何都有一种颜色。点和面使用不同的调色。点使用界面里的地图图钉。图例使用列名,若 SELECT 有别名则用别名。若 SELECT 写了 i.localizacao AS moradia 和 z.geom AS inundacao,图例就显示 moradia 和 inundacao。JOIN 仍写在 SQL 里。地图只绘制结果里已经有的内容。单击图钉会打开一张卡片,标题是该几何列名,内容是同一行的其他值(文本、数字、日期)。几何本身不出现在卡片里。如果结果里只有区域,单击区域会打开卡片。图钉和区域同时存在时,区域不会打开卡片,以免把同一 JOIN 的行混在一起。
图层、图片和打印
默认底图是 OpenStreetMap。只有在 设置 的 地图图层 里添加了另一层、带 {z}/{x}/{y} 的 HTTPS 瓦片地址时,才会出现底图选择器。如果底图失败,多边形仍画在中性背景上。
导出地图 菜单打开 PNG、SVG、WebP 和 GeoJSON。PNG、SVG 和 WebP 会按内容尺寸保存结果里的几何,并带街道底图。屏幕上的裁切不会决定文件。标注 开关默认打开,会按地图上的同一位置写出列名(或 SELECT 别名):每个区域轮廓外侧,以及每个图钉旁边。同一菜单里有 图片主题,可选 深色 和 浅色。名称和图例的颜色跟随该主题。同一菜单里还有 测量、单位选择(m²、ha 或 km²)和 合并组。它们只作用于文件。不必在地图栏打开测量,也能导出数字。在该菜单打开测量时,文件会带上面积数字、重叠的填充,以及图例中的合计。打开合并组时,你已经在地图上做好的并集会按分组写入文件。如果并集是同一列的面,文件只在并集上显示一次该列名。图钉仍各显示各的。文件里的合并组不要求在该菜单打开测量。如果地图上有绘图,绘图 开关也默认打开,并把这些多边形画进文件。可以关掉,只导出查询里的几何。GeoJSON 写出地图上的几何,不含街道底图。查询总会进入文件。绘图和合并组在对应开关打开时进入。打开测量时,每个几何会带上面积。打开标注时,会带上列名。如果合并结果仍是分开的几块,文件会带上这些块。打印 使用同样的开关和图片主题。街道底图的版权保持与地图上相同。PNG 和 WebP 是高分辨率栅格。SVG 用高分辨率放街道底图,几何则是矢量。打印 打开带底图的该地图打印对话框。
各引擎所需的扩展
创建表和修改表里的原生类型,以及粘贴的 ST_GeomFromText、SDO_GEOMETRY 或 GeomFromText,都需要该引擎的空间支持。Kerry 不会替你安装该扩展。单元格里已经有的 WKT、EWKT 和 GeoJSON,地图仍会绘制。
PostgreSQL。 需要 PostGIS 扩展。没有它时,创建表和修改表里仍会出现 GEOMETRY 和 GEOGRAPHY,Kerry 会提示该类型需要 PostGIS。在 PostgreSQL 里,CREATE EXTENSION postgis 会在数据库中安装 PostGIS。
MySQL 和 MariaDB。 空间类型是原生的(GEOMETRY、POINT、POLYGON 以及其他)。不需要额外扩展。
Oracle。 需要 Locator 或 Spatial。数据库里没有 SDO_GEOMETRY 类型时,Kerry 会在创建表和修改表里提示。有该支持时,列类型是 SDO_GEOMETRY。
SQLite。 需要 SpatiaLite。在 SQLite 连接的 扩展 中,添加扩展文件并打开 连接时加载。SpatiaLite 尚未加载时,空间类型不会出现在列表里。加载之后,会出现 GEOMETRY、POINT、POLYGON 以及 SpatiaLite 的其他类型。
细节
- 地图不是查看结果的第三种模式。它和表格共用结果面板。
- 绘制跟随单元格里的 WKT。四个角的
POLYGON会画成矩形,因为值描述的就是矩形。顶点很多的MULTIPOLYGON会画出这些顶点的不规则轮廓。 - 列提示里的类型是目录里的类型。PostGIS 的点显示为
geometry(Point,4326),而不是只有geometry。空间图标对这类类型都有效。 - 适用于标签页的四种引擎:PostgreSQL、MySQL/MariaDB、Oracle 和 SQLite。
- 带另一个项目的
@项目.表的查询会把行落到标签页连接上的临时表。若目标有 GIS,临时表使用原生空间类型。若没有,几何以 EWKT 文本保存。