`
夏莹_合肥
  • 浏览: 178780 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

postgres的空间扩展中geom奇怪的相等问题

 
阅读更多
postgres有非常好的支持空间数据的扩展。其geom空间列支持点,线等。
其中要注意点,线的相等规则。

点相等
我们用ASTEXT(geom)将二进制转换为经纬度,以下是示例
SELECT ASTEXT('0101000020E61000002C1BDB16879F5D404210501395AA3F40');
SELECT ASTEXT('0101000020E6100000DB9EC208879F5D404210501395AA3F40');

"POINT(118.492620195361 31.6663372106998)"
"POINT(118.492616834697 31.6663372106998)"

尽管ASTEXT以后这两个点好像不同,但是他们的经纬度差在小数点后6位上,postgres认为它们相等。这点用以下语句可以证明:
SELECT (GeomFromText((SELECT ASTEXT('0101000020E61000002C1BDB16879F5D404210501395AA3F40')), 4326)) = (GEOMFROMTEXT((SELECT ASTEXT('0101000020E6100000DB9EC208879F5D404210501395AA3F40')), 4326))
返回true。

线相等
线相等更不能用ASTEXT后相等来证明,因为最简单的线有两点,两点的没有先后。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics