두 개의 (PostgreSQL 9.2) 테이블이 있습니다. cities
첫째는 : weather_stations
에 의해 외래 키로 가장 가까운 (기하학적 인) 점
loc_id | integer | not null
name | character varying(40) |
gps_coord | point |
다음
:s_id | integer | not null
location | character varying(255) | not null
height | integer |
city_loc_id | integer |
gps_coord | point |
자신의 점 좌표를 사용하여, 어떻게 우리가 기상 관측소의 가장 가까운 도시를 찾을 수 있습니까?weather_stations
의 외래 키 (현재 NULL이 모두 NULL 임)를 채우기 위해이 도시를 사용하고 싶습니다. 즉 city_loc_id
입니다. (그러한 외래 키를 갖는 것이 좋은 생각입니까?)
어쨌든 가장 가까운 점 연산자 (##)를 사용해야한다는 것을 알고 있지만 쿼리를 작성할 때 약간 손실됩니다.
나는 오른쪽 피연산자에 점들의 배열이 있거나 라인과 같이 둘 이상의 점에 걸쳐있는 오른쪽 피연산자의 기하학적 구조가 있다고 생각합니다. 당신이 정말로하고 싶은 것은 고려중인 지점으로부터 최소 유클리드 거리를 가진 행을 반환하는 하위 쿼리를 만드는 것입니다 (예 : 점 1과 점 2 사이의 유클리드 거리를 계산하는 데 걸리는 분). – Patashu
그것은 좋은 생각입니다 - 도시 이름 변경, 버려진/파괴 등/정부 기관의 선언에 의해 만들어지며 두 개 이상의 독립된 단체로 나뉘어져 있습니다. 그래서 나는 도시를 사용하지 않을 것입니다. 이 모든 것은 기상 관측소의 평생과 별개로 발생하기 때문에 개인적으로 외래 키로 사용됩니다. –