GIS×BigQuery~2 지점간의 거리를 산출~

BigQuery인 두 지점 사이의 거리를 찾는 방법



①BigQuery의 지리 함수 ST_GEOGPOINT 와 ST_DISTANCE 로 구한다



※완전한 구체로서 표면상의 거리를 계산하고 있다

②JavaScript의 유저 정의 함수(UDF)로 구한다



조속히, 임의의 위치 정보를 2열 준비해 실천해 보았다
CREATE TEMP FUNCTION distance(lon1 FLOAT64, lat1 FLOAT64,  lon2 FLOAT64,  lat2 FLOAT64)
RETURNS FLOAT64
LANGUAGE js AS """
  lon1 *= Math.PI / 180;
  lat1 *= Math.PI / 180;
  lon2 *= Math.PI / 180;
  lat2 *= Math.PI / 180;
  return 6378.137 * Math.acos(Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1) + Math.sin(lat1) * Math.sin(lat2));
"""; 

SELECT
  name1
  ,lat1
  ,lon1
  ,name2
  ,lat2
  ,lon2
  ,(st_distance(st_geogpoint(lon1, lat1), st_geogpoint(lon2, lat2))) / 1000  as distanceA -- ①
  ,distance(lon1,lat1, lon2, lat2) as distanceB -- ②
FROM osako.test

두 가지 방법으로 구한 거리에 약간의 오차는 있지만 계산 자체에 문제가 없을 것 같다.


이상! ! !

좋은 웹페이지 즐겨찾기