首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用where geom选择起始线将返回不同的geom

使用where geom选择起始线将返回不同的geom
EN

Stack Overflow用户
提问于 2019-06-27 15:17:42
回答 1查看 36关注 0票数 2

我有一个包含多行字符串的表,我想找一条从某一点开始的行。我正在使用:

代码语言:javascript
复制
gis=>  select * from (select gid, ST_StartPoint(ST_LineMerge((geom))) as start from aw_pipes) s where s.start = '0101000020E6100000D050E433E678D73F71F37608AF284A40' order by gid;
 gid  |                       start
------+----------------------------------------------------
 1458 | 0101000020E6100000809BB933E678D73FE3D07608AF284A40
(1 row)

这里的问题是结果有不同的geom。这不是我想要的。它不包含我正在搜索的geom。

代码语言:javascript
复制
gis=> select geom from aw_pipes where gid = 1458;
                                                     geom
--------------------------------------------------------------------------------------------------------------
 0105000020E610000001000000010200000002000000809BB933E678D73FE3D07608AF284A40CDD4B35E4E7BD73F62DB7D83AD284A40
(1 row)

gis=> select ST_DumpPoints('0105000020E610000001000000010200000002000000809BB933E678D73FE3D07608AF284A40CDD4B35E4E7BD73F62DB7D83AD284A40');
                        st_dumppoints
--------------------------------------------------------------
 ("{1,1}",0101000020E6100000809BB933E678D73FE3D07608AF284A40)
 ("{1,2}",0101000020E6100000CDD4B35E4E7BD73F62DB7D83AD284A40)
(2 rows)

我的postgis版本是:

代码语言:javascript
复制
gis=> select PostGIS_Version ();
            postgis_version
---------------------------------------
 2.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1

你知道我做错了什么吗,或者有什么建议我可以在我的查询中修改吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 20:17:39

使用=比较几何图形可能不会得到预期的结果。在PostGIS 2.4之前,相等性基于几何体边界框,而不是顶点本身,并且可能会截断不重要的数字。看看这个很棒的article

您可以将=替换为ST_Equals,它会检查每个顶点的精确空间相等。

话虽如此,你的期望可能有点太高了。您的几何图形与直线起点之间的距离为1.266e-005 m,因此约为10 micrometers。大多数GIS用户/软件会认为这两点是相等的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56785909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档