【问题标题】:BigQuery GIS, Equivalent to ST_TranslateBigQuery GIS,相当于 ST_Translate
【发布时间】:2021-04-07 01:11:56
【问题描述】:

有没有办法使用 BigQuery 重现 ST_Translate,我正在尝试将多边形移动 10 度经度和纬度

【问题讨论】:

  • 请澄清-您知道如何计算移动10 degrees longitude and latitude 的刚刚点的新经度/纬度吗?您的问题更多关于如何将其扩展到多边形?
  • 我连点都不知道
  • 所以,我建议从单点开始。做一点谷歌搜索,很可能你会得到可以用 sql 轻松表达的解决方案。然后使用多点,然后使用多边形等等。将“复杂”问题分解为多个简单问题并逐步解决它们通常会有所帮助!在尝试上述方法时,您可能会遇到特定问题 - 那么提出问题会更合适。具体而不是笼统的问题!
  • 谢谢,很好,你能把它写成答案吗
  • 我更喜欢留下评论 o:)

标签: google-bigquery


【解决方案1】:

你能详细解释一下你想通过将多边形经纬度移动 10 度来实现什么吗?这会影响可能的解决方案。

ST_Translate 的问题 - 仅在平面地图上才有意义。在平面地图上,您移动一个形状 - 它保持完全相同,只是在不同的位置。所以 PostGIS 对平面 Geometry 类型实现了它,但对球形 Geography 类型没有实现。

但 BigQuery 仅具有球形地理类型,因此您要求提供新功能。在球体上,它很复杂。

如果您在球体上进行逐点“移动”,它会扭曲形状。将形状向两极移动并缩小它,向赤道移动使其更大。例如。我们从POLYGON((0 40, 20 40, 10 50, 0 40)) 开始,然后向北“移动”到POLYGON((0 50, 20 50, 10 60, 0 50)),多边形区域为 9.08e11 与 7.61e11 - 多边形缩小了 16%。

或者,您可以通过保留其形状来移动整个形状,通过围绕地球中心“旋转”它,这是一种非常不同的变换。

您将如何使用 ST_Translate,您需要什么语义?

【讨论】:

  • 我的用例有点奇怪,我试图将澳大利亚移动到地球上的任意位置以比较区域大小,它只是一个可视化仪表板:)
  • 为此,您肯定需要第二个选项,以保持区域大小。这通常是通过球体上的四元数旋转来完成的,参见例如stackoverflow.com/questions/4023161/whats-a-quaternion-rotation。但 BigQuery 中没有任何原生功能。也许试试 javascript UDF。
  • 看这里作为例子,当我改变x时效果很好,但是y会产生失真datastudio.google.com/u/0/reporting/…
猜你喜欢
  • 2015-06-09
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多