程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标?

开发过程中遇到比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标的问题如何解决?下面主要结合日常开发的经验,给出你关于比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标的解决方法建议,希望对你解决比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标有所启发或帮助;

我有两个纬度/经度坐标表(表 A 约 10,000 行,表 B 约约 100,000 行),我正在努力计算表 A 和 B 之间的成对距离。

我想要做的是从表 A 中取出每一组坐标,并将其与表 B 中的每一组坐标进行比较,并计算表 B 中两者之间距离的坐标数小于 X 英里或公里。我想对表 A 中的 10,000 个坐标中的每一个都执行此操作。我什至都在为开始做这件事而苦苦挣扎。

我尝试了以下几种不同的变体:

SELECT ST_disTANCE(
  ST_GEOGPOINT(table_A_Long,table_A_Lat),ST_GEOGPOINT(table_B_Long,table_B_Lat)
) AS distance 

但这是我所能得到的。任何将我推向正确方向的信息都值得赞赏。

解决方法

请参阅下面的绝对虚拟但希望足够简单的示例让您获得高级想法

它的作用是模仿您的两个表,并进行您想要为每个州留下的比较 10 个与州内部点的距离小于 100 公里的城市

注意:因为在下面的公共表中 lat 和 long 显示为字符串 - 我不得不将它们转换为 float64

with table1 as (
  SELEct state_name,ST_GEOGPOINT(
      cast(internal_point_lon as float64),cast(internal_point_lat as float64)
    ) table1_point
  from `bigquery-public-data.utility_uS.Us_states_area`
),table2 as (
  SELEct name,ST_GEOGPOINT(
      cast(int_point_lon as float64),cast(int_point_lat as float64)
    ) table2_point
  from `bigquery-public-data.utility_uS.Us_cities_area`
)
SELEct state_name,array_agg(name order by ST_DISTANCE(table1_point,table2_point) limit 10) cities 
from table1
cross join table2
where ST_DISTANCE(table1_point,table2_point) < 100000
group by state_name     

带输出

比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标

使用相同的 CTE 但保留地理数据以便可视化

SELEct 
  state_name,any_value(table1_point) as state,ST_UNION_AGG(table2_point) cities
from table1
cross join table2
where ST_DISTANCE(table1_point,table2_point) < 100000
group by state_name 

以下是一些结果可视化的例子

明尼苏达

比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标

格鲁吉亚

比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标

华盛顿

比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标

大佬总结

以上是大佬教程为你收集整理的比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标全部内容,希望文章能够帮你解决比较表 A 中每组坐标与表 B 中所有坐标之间的距离,仅保留 X 距离内的坐标所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: