如何解决计算BigQuery SQL中两个邮政编码之间的距离以英里为单位?
说我在一张桌子的一行中有两个邮政编码。有没有办法计算两个邮政编码之间的距离?
解决方法
以下示例适用于BigQuery标准SQL
#standardSQL
WITH `project.dataset.tabel` AS (
SELECT '91356' home,'90045' work
)
SELECT home,work,ST_DISTANCE(home_geo,work_geo) / 1609.34 AS distance,home_geo,work_geo,ST_MAKELINE(ST_CLOSESTPOINT(home_geo,work_geo),ST_CLOSESTPOINT(work_geo,home_geo)) line
FROM (
SELECT home,(
SELECT ST_GEOGFROMTEXT(zipcode_geom)
FROM `bigquery-public-data.utility_us.zipcode_area`
WHERE zipcode = home
) home_geo,(
SELECT ST_GEOGFROMTEXT(zipcode_geom)
FROM `bigquery-public-data.utility_us.zipcode_area`
WHERE zipcode = work
) work_geo
FROM `project.dataset.tabel`
)
有输出
home work distance ...
91356 90045 12.794149725735204 ...
上面的结果将显示如下,显示拉链和代表它们之间最短线的线
注意:显然,这不是行驶距离,而是地图上的最短距离-有关ST_DISTANCE的更多详细信息
,您可以尝试以下方法:
SELECT
zip1.zipcode zipcode1,zip2.zipcode zipcode2,ST_DISTANCE(zip1.geog,zip2.geog) distance
FROM
`fh-bigquery.gis.zipcodes` zip1,`fh-bigquery.gis.zipcodes` zip2
WHERE
zip1.zipcode != zip2.zipcode;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。