Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 空间数据支持 » 空间数据 » 教程:试用空间要素

 

第 5 课:将空间数据输出为 SVG

在本课中,将创建一个 SVG 文档以查看以 WKT 表示的多面。可以导出 SVG 格式的几何,以在 Interactive SQL 或与 SVG 兼容的应用程序中查看该几何。

前提条件

本课假定您已完成前面的所有课程。请参见第 1 课:安装附加测量单位和空间参照系

本课假定您拥有在本教程(教程:试用空间要素)开头的“特权”部分中列出的角色和特权。

 任务
  1. 在 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))'));
  2. 在 Interactive SQL 中,执行以下 SELECT 语句以调用 ST_AsSVG 方法:

    SELECT @svg_geom.ST_AsSVG() AS svg;

    结果集中只有一行,该行即为 SVG 图像。可以在 Interactive SQL 中使用 [SVG 预览] 功能查看该图像。要执行此操作,请双击结果行,然后选择 [SVG 预览] 选项卡。您应当会看到一个方形几何位于另一个方形几何内。

    注意

    缺省情况下,Interactive SQL 将把 [结果] 窗口中的值截断为 256 个字符。如果 Interactive SQL 返回错误,则表示无法读取完整的列值,请增大截断值。要执行此操作,请单击 [工具] » [选项],然后在左侧窗格中单击 [SQL Anywhere]。在 [结果] 选项卡中,将 [截断长度] 更改为一个更高的值,比如 5000。单击 [确定] 保存更改,再次执行查询,然后再次双击该行。

  3. 上一步骤介绍了如何在 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:\\temp\\massdata\\myPolygon.svg' 
    QUOTE '' 
    ESCAPES OFF 
    FORMAT TEXT

    必须包括 QUOTE ''ESCAPES OFF 子句,否则 XML 中将被插入回车符和单引号以保留空格,而这会导致输出的 SVG 文件无效。

  4. 在 Web 浏览器或支持查看 SVG 图像的应用程序中打开该 SVG 文件。也可以在文本编辑器中打开该 SVG,查看几何的 XML。

  5. 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 图像。

    该图像并未均匀地呈现黑色;相邻邮政编码地区的边界间存在细小的间隙。这些间隙实际上是各几何间的白线,这也是渲染 SVG 的特点。而数据间其实并不存在任何间隙。较大的白线是河流和湖泊。

结果

该几何已被视为 SVG。

下一个

前进至第 6 课:投影空间数据

 另请参见