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后相等来证明,因为最简单的线有两点,两点的没有先后。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值