【问题标题】:BigQuery GIS returns incorrect valueBigQuery GIS 返回不正确的值
【发布时间】:2021-11-09 19:52:01
【问题描述】:

根据 BigQuery GIS 工具,该纬度经度存在于以下多边形集中,但 bigquery 返回错误值。为什么即使多边形形状中存在坐标,bigquery 也会返回 false 值。

select ST_Intersects(ST_GeogPoint(-5.4554914, 50.1822663), ST_GEOGFROMGEOJSON('{"type": "Polygon", "coordinates": [[[-5.45547968622094, 50.1821045770462], [-5.455482850644401, 50.18214838546901], [-5.45548927029794, 50.182237259112135], [-5.455494166115916, 50.18230503648512], [-5.455496215232034, 50.182333404232935], [-5.455499652048061, 50.18238098305004], [-5.455500300504948, 50.182389960185276], [-5.455478842541956, 50.18238772040404], [-5.455464007321631, 50.1823860030913], [-5.455427772503666, 50.1823828539281], [-5.455387373092614, 50.18237829938783], [-5.455372531393598, 50.182376492291915], [-5.455311734130676, 50.18236885666828], [-5.455274020622166, 50.18236269270239], [-5.455273302141769, 50.18236244420612], [-5.455263815607555, 50.18235912814621], [-5.455235928203027, 50.18234934285033], [-5.455228163993944, 50.18212934102841], [-5.45547968622094, 50.1821045770462]]]}'))

【问题讨论】:

  • 如果它实际上不是,你怎么知道它在里面?请澄清!

标签: google-bigquery gis


【解决方案1】:

你能解释一下你的意思吗

根据 BigQuery GIS 工具,该纬度经度存在于下面的多边形中

您可以使用ST_Distance 函数检查该点与多边形的距离:

select ST_Distance(
    ST_GeogPoint(-5.4554914, 50.1822663), 
    ST_GEOGFROMGEOJSON('{"type": "Polygon", "coordinates": [[[-5.45547968622094, 50.1821045770462], [-5.455482850644401, 50.18214838546901], [-5.45548927029794, 50.182237259112135], [-5.455494166115916, 50.18230503648512], [-5.455496215232034, 50.182333404232935], [-5.455499652048061, 50.18238098305004], [-5.455500300504948, 50.182389960185276], [-5.455478842541956, 50.18238772040404], [-5.455464007321631, 50.1823860030913], [-5.455427772503666, 50.1823828539281], [-5.455387373092614, 50.18237829938783], [-5.455372531393598, 50.182376492291915], [-5.455311734130676, 50.18236885666828], [-5.455274020622166, 50.18236269270239], [-5.455273302141769, 50.18236244420612], [-5.455263815607555, 50.18235912814621], [-5.455235928203027, 50.18234934285033], [-5.455228163993944, 50.18212934102841], [-5.45547968622094, 50.1821045770462]]]}'))

这将返回 0.00227 - 或大约 2 毫米。它可能出现在多边形内,但实际上只是在它之外一点点。

如果您想将如此接近的对象视为相交,请使用ST_DWithin(g1, g2, max_distance) 条件,其中max_distance 是对象之间的最大距离(以米为单位)。

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 2021-10-26
    • 2015-10-13
    • 2014-12-06
    • 2021-02-01
    • 2017-08-21
    • 2021-10-27
    • 2021-02-10
    • 2012-05-11
    相关资源
    最近更新 更多