在本课中,将创建一个 SVG 文档以查看以 WKT 表示的多面。可以导出 SVG 格式的几何,以在 Interactive SQL 或与 SVG 兼容的应用程序中查看该几何。
在 Interactive SQL 中,执行以下语句,为示例几何创建一个变量:
CREATE OR REPLACE VARIABLE @svg_geom ST_Polygon = (NEW ST_Polygon('Polygon ((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 2 3, 3 3, 3 2, 2 2))')); |
在 Interactive SQL 中,执行以下 SELECT 语句以调用 ST_AsSVG 方法:
SELECT @svg_geom.ST_AsSVG() AS svg; |
结果集中只有一行,该行即为 SVG 图像。可以在 Interactive SQL 中使用 [SVG 预览] 功能查看该图像。要执行此操作,请双击结果行,然后选择 [SVG 预览] 选项卡。
如果收到错误消息,指出无法从数据库读取完整值,则需要更改 Interactive SQL 的 [截断长度] 设置。要执行此操作,请在 Interactive SQL 中单击 [工具] » [选项] » [SQL Anywhere],然后将 [截断长度] 设置成较大的数字,如 100000。然后再次执行查询并查看几何。
上一步骤介绍了如何在 Interactive SQL 中预览 SVG 图像。但是,将得到的 SVG 写入到一个文件中可能更有用,因为这样外部应用程序便可读取该文件。可以使用 xp_write_file 系统过程或 WRITE_CLIENT_FILE 函数 [String] 将 SVG 写入到相对于数据库服务器或客户端计算机的文件中。在下一示例中,将使用 OUTPUT 语句 [Interactive SQL]。
在 Interactive SQL 中,执行以下 SELECT 语句以调用 ST_AsSVG 方法并将几何输出到名为 myPolygon.svg 的文件中:
SELECT @svg_geom.ST_AsSVG(); OUTPUT TO 'c:\\myPolygon.svg' QUOTE '' ESCAPES OFF FORMAT TEXT |
必须包括 QUOTE ''
和 ESCAPES OFF
子句,否则 XML 中将被插入回车符和单引号以保留空格,而这会导致输出的 SVG 文件无效。
在 Web 浏览器或支持查看 SVG 图像的应用程序中打开该 SVG 文件。也可以在文本编辑器中打开该 SVG,查看几何的 XML。
ST_AsSVG 方法可从单个几何生成 SVG 图像。某些情况下,您希望生成包括组中所有 shape 的 SVG 图像。ST_AsSVGAggr 方法正是这样一个可以将多个几何合并到单个 SVG 图像中的集合函数。首先使用 Interactive SQL 创建一个变量用以保存 SVG 图像,然后使用 ST_AsSVGAggr 方法生成 SVG 图像。
CREATE OR REPLACE VARIABLE @svg XML; SELECT ST_Geometry::ST_AsSVGAggr( geometry, 'attribute=fill="black"' ) INTO @svg FROM Massdata; |
此时,@svg
变量即保存了表示 Massdata 表中所有邮政编码地区的 SVG 图像。'attribute=fill="black"'
用于指定所生成图像的填充颜色。如果不指定,则数据库服务器将随机选择一种填充颜色。现在,您已经具有包含所需 SVG 图像的变量,接下来您便可将其写入到文件中,以便用其它应用程序进行查看。在 Interactive SQL 中执行以下语句,将 SVG
图像写入到相对于数据库服务器的文件中。
CALL xp_write_file( 'c:\\temp\\Massdata.svg', @svg ); |
也可以用 WRITE_CLIENT_FILE 函数写入相对于客户端应用程序的文件。但可能需要执行附加步骤以确保启用了相应权限。如果在支持 SVG 数据的应用程序中打开该 SVG 图像,则会显示如下所示的图像:
您会注意到,该图像并未均匀地呈现黑色;相邻邮政编码地区间存在细小的间隙。这些间隙实际上是各几何间的白线,这也是渲染 SVG 的特点。而数据间其实并不存在任何间隙。较大的白线是河流和湖泊。
请参见:
前进至第 6 课:投影空间数据。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |