在 BigQuery 中获取给定国家/地区的质心坐标
Get centroid coordinates of a given country in BigQuery
在 BigQuery 中,给定一个 ISO-2 代码中的国家/地区,我需要获取其质心坐标(纬度和经度)。
有办法做到这一点吗?
查了BQ的geography functions没找到方法
您可以使用 BigQuery public 数据集中的 bigquery-public-data.geo_openstreetmap.planet_features
table 来计算国家/地区的质心。内部查询基于 Stack Overflow 中的 。考虑以下查询和输出。
SELECT -- Extract country code, lat and long
CountryISO2Code,
ST_X(centroid) AS longitude,
ST_Y(centroid) AS latitude
FROM (SELECT (SELECT value FROM UNNEST(all_tags)
WHERE key = 'ISO3166-1:alpha2') AS CountryISO2Code,
ST_CENTROID(geometry) centroid -- calculate the centroid with the geometry values
FROM `bigquery-public-data.geo_openstreetmap.planet_features`
WHERE EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='boundary' AND value= 'administrative')
AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='admin_level' AND value = '2')
AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='ISO3166-1:alpha2'))
WHERE CountryISO2Code="IN" -- country code to filter the output
上述查询的输出
请注意 table 中有一些国家代码不可用。此外,OSM dataset in BigQuery 本身是由志愿者制作的 public 商品,数据质量无法保证。
我还从 Github 中找到了一些 community-maintained 数据,例如 this one 可以导入 BigQuery 并且是 ready-to-use.
在 BigQuery 中,给定一个 ISO-2 代码中的国家/地区,我需要获取其质心坐标(纬度和经度)。 有办法做到这一点吗? 查了BQ的geography functions没找到方法
您可以使用 BigQuery public 数据集中的 bigquery-public-data.geo_openstreetmap.planet_features
table 来计算国家/地区的质心。内部查询基于 Stack Overflow 中的
SELECT -- Extract country code, lat and long
CountryISO2Code,
ST_X(centroid) AS longitude,
ST_Y(centroid) AS latitude
FROM (SELECT (SELECT value FROM UNNEST(all_tags)
WHERE key = 'ISO3166-1:alpha2') AS CountryISO2Code,
ST_CENTROID(geometry) centroid -- calculate the centroid with the geometry values
FROM `bigquery-public-data.geo_openstreetmap.planet_features`
WHERE EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='boundary' AND value= 'administrative')
AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='admin_level' AND value = '2')
AND EXISTS (SELECT 1 FROM UNNEST(all_tags) WHERE key='ISO3166-1:alpha2'))
WHERE CountryISO2Code="IN" -- country code to filter the output
上述查询的输出
请注意 table 中有一些国家代码不可用。此外,OSM dataset in BigQuery 本身是由志愿者制作的 public 商品,数据质量无法保证。
我还从 Github 中找到了一些 community-maintained 数据,例如 this one 可以导入 BigQuery 并且是 ready-to-use.