解析 MSDN 几何数据类型

Nic*_*ght 5 python gis msdn geometry parsing

我有一个数据库,其中一个字段给出了空间坐标。我了解到该字段是序列化的 MSDN 几何数据类型 ( http://msdn.microsoft.com/en-us/library/bb933973.aspx )。

我想从 Python 访问这个数据库,如果有人知道几何数据类型的格式,或者任何能够在 Python 中将其解析为一组地理坐标的库,我就在徘徊。

该链接指出,Microsoft 在设计此数据类型时使用了“开放地理空间联盟 (OGC) 标准”,这是否意味着该标准定义了空间坐标?

有没有其他人有这方面的经验?

任何帮助将非常感激!

Rup*_*Rup 3

正如下面的评论所示(感谢 MarkJ!):

  • Geometry 是一种 .NET 数据类型,但使用其自己的自定义序列化格式;您可以选择整个列,然后通过在 Reflector 中打开 Microsoft.SqlServer.Types.dll 并从
  • 或者您可以使用 SQL Server 对类型的支持从数据库中读取几何数据的属性,例如select geocolumn.STX, geocolumn.STY from myTable;
  • 或者您可以将整个值导出为GML ,例如select geocolumn.AsGml() from myTable;,它可以由 Python 几何库处理,例如http://gispython.org/ http://mapnik.org/ http://www.qgis.org/wiki/Python_Bindings

我最初认为 SQL Server 将 CLR 数据类型作为序列化的 .NET 对象直接存储在表中,但事实证明这是错误的。

  • 好吧,我错了 - 它是二进制序列化的,但不是作为一个完整的对象。在 Reflector 中打开 Microsoft.SqlServer.Types.dll 并查看 SqlGeometry 的 Read() 方法。您可能会更好地使用 GML 格式,该格式可能已经在您的类“select geocolumn.AsGml() from myTable”中得到支持,否则可以从 Reflector 复制 SqlGeometry 解析逻辑。 (2认同)
  • 好吧,我也错了,它是一个.Net对象!我想我的观点是底层的表示并不真正相关。“Microsoft 的人”为处理 SQL Server 中的几何提供了更高级别的抽象,这是一个极好的想法。[GML](http://en.wikipedia.org/wiki/Geography_Markup_Language) 是一种广泛使用的用于交换空间几何数据的 XML 标准。所以GML应该是一个不错的选择。我希望有适用于 Python 的 GML 库。谷歌建议这些http://gispython.org/ http://mapnik.org/ http://www.qgis.org/wiki/Python_Bindings (2认同)