【问题标题】:How to display geometry datafield as Text如何将几何数据字段显示为文本
【发布时间】:2018-03-22 15:20:39
【问题描述】:

我将 DELPHI 与 ADO 和 SQL Server 2014 一起使用。

在我们的数据库表中,有一个用于几何数据的空间列。我们可以在该字段中读取和写入数据(更多信息在这里:https://docs.microsoft.com/de-de/sql/relational-databases/spatial/spatial-data-sql-server)。

如果我使用 TDBGRID 组件显示此表,则我的表中此列的内容仅显示 (BLOB)。

现在我想看看这个专栏的内容。是否有任何好的编码来显示该列的内容,例如在 dbmemo 中作为文本。

我知道的唯一解决方案是将字段作为文本读取到字符串中并将其放入普通备忘录中,我期待获得更有效的方法来访问这些数据

【问题讨论】:

  • 你可以使用一些provided geospatial functions
  • 如何应用这个提示 - 如果我的表单中只有一个来自查询的 Tdataset
  • 通过编写类似SELECT MyColumn.STAsText() FROM MyTable的SQL命令。
  • 但这意味着从表中获取记录,通过某些参数运行 SQL 查询,获取结果并将格式文本放入备注字段,-我需要对我的数据库导航器上的任何更改做出反应.. .. 想法 -> 我可以使用 dbmemo 字段,链接到表格以更灵活
  • 我不明白。所以你使用TADOTable?而且我在这里不确定,但是 SQL Server 恕我直言,它们会返回存储在表中的二进制数据。

标签: delphi


【解决方案1】:

您可以查询例如对于Well-known text 格式,使用像STAsText 这样的SQL 函数:

SELECT MyColumn.STAsText() FROM MyTable

另一种方法是在 Well-known binary 数据流中获取您的数据,并在客户端对其进行解析以由您自己表示为文本(格式已描述)。要获取此类流,您可以使用 STAsBinary 函数:

SELECT MyColumn.STAsBinary() FROM MyTable

另一种选择是获取原始geometry 数据,因为它们存储在数据库中(就像您现在所做的那样)并自行解析。格式在[MS-SSCLRT] 文档中描述。但如果我是你,我会更好地为 WKB 格式编写解析器并以 WKB 格式获取数据,因为它是相当成熟的通用格式,而 SQL Server 内部格式可能会经常更改。

【讨论】:

    【解决方案2】:

    如果您的几何图形包含 Z 和/或 M 值,最好调用 .ToString () 方法。

    SELECT MyColumn.ToString ()  FROM MyTable
    

    除了 X,Y 坐标外,输出还包括 Z 和 M 值。 .STAsText() 方法仅返回形状的 X、Y 坐标。

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2016-09-01
      • 2016-09-04
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2012-08-29
      相关资源
      最近更新 更多