首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ST_DIFFERENCE返回GeometryCollection而不是MultiPoint

ST_DIFFERENCE返回GeometryCollection而不是MultiPoint
EN

Stack Overflow用户
提问于 2016-04-13 20:23:25
回答 1查看 343关注 0票数 0

我想找出两个多点的区别。我正在使用查询location = ST_Difference(location, other_geo)进行此操作。但是,当结果不是空的时,如果两个多点完全相同,则生成的对象是GeometryCollection,而不是从ST_geomFromText('MULTIPOINT EMPTY')返回的空MultiPoint。如何获得结果成为一个空的多点对象?

以下查询会导致多点查询:

SELECT ST_asGeoJSON(ST_Difference(ST_geomFromText('MultiPoint(1 2, 3 4)', 4326), ST_geomFromText('MultiPoint(1 2)', 4326)));

结果:{"type":"Point","coordinates":[3,4]}

这个结果是空的GeometryCollection

SELECT ST_asGeoJSON(ST_Difference(ST_geomFromText('MultiPoint(1 2)', 4326), ST_geomFromText('MultiPoint(1 2)', 4326)));

结果:{"type":"GeometryCollection","geometries":[]}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 23:05:20

尝试使用ST_Multi和ST_CollectionExtract来始终返回零或多点的MultiPoint几何:

代码语言:javascript
运行
复制
SELECT ST_AsGeoJSON(ST_Multi(ST_CollectionExtract(ST_Difference(a, b), 1)))
FROM (
  SELECT 'MultiPoint(1 2, 3 4)'::geometry a, 'MultiPoint(1 2)'::geometry b
  UNION SELECT 'MultiPoint(1 2)', 'MultiPoint(1 2)'
) data;
                st_asgeojson
---------------------------------------------
 {"type":"MultiPoint","coordinates":[]}
 {"type":"MultiPoint","coordinates":[[3,4]]}
(2 rows)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36608865

复制
相关文章

相似问题

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