我无法理解 SQL Server 中的数据类型地理... 例如我有以下数据:
0xE6100000010CCEAACFD556484340B2F336363BCA21C0
我知道的:
0x是十六进制的前缀
后 16 位数字是经度:B2F336363BCA21C0(双十进制格式)
最后 16 位前的 16 位数字是纬度:CEAACFD556484340( double 格式)
4 个第一个数字是 SRID:E610(WGS84 的十六进制)
我不明白的地方:
5 到 12 的数字:0000010C
这是什么?
从我读到的内容来看,这似乎与 WKB(众所周知的二进制文件)或 EWKB(扩展的众所周知的二进制文件)有关,无论如何我无法找到 EWKB 的定义...... 对于 WKB,这应该是几何类型(4 字节整数),但该值与几何类型代码不匹配(此示例针对一个点坐标)
你能帮助理解这种格式吗?
最佳答案
SQL Server 中的空间类型(几何和地理)是作为 CLR 数据类型实现的。与任何此类数据类型一样,当您直接查询值时,您将获得二进制表示。不幸的是,它不是(据我所知)WKB,而是微软认为最适合其实现的任何格式。对于我们(用户)来说,我们应该使用 MS 发布的方法的已发布接口(interface)(例如 the geography method reference )。也就是说,如果您好奇(而不是实际使用它),您应该只尝试破译 MS 二进制表示。
就是说,如果您需要/想要使用 WKB,您可以!例如,您可以使用 STGeomFromWKB()
静态方法从您提供的 WKB 创建地理实例,并且可以在地理实例上调用 STAsBinary()
以返回 WKB给你。
关于sql-server - 如何在sql server中构建地理数据类型的格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603605/