본문으로 건너뛰기
cheonbi
PostsSeriesTagsAbout🎥 Kinetograph
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithub
cheonbi
•
© 2026
•
https://cheonbi.kr
BACK TO INDEX
◆ SERIES · 거리값을 위치로 해석하는 법

보간식보다 기준점을 먼저 고른다

avatar
cheonbi
2026-09-18 · 5분
5min
2026year
KOoriginal
javagismathbackend
시리즈

거리값을 위치로 해석하는 법

3 / 6
목록 보기
  1. 01원본과 계산 결과를 나눠 두는 이유
  2. 02하드웨어는 한 가지의 데이터를 단 한번만 말한다.
  3. 03보간식보다 기준점을 먼저 고른다
  4. 04이름으로 조인하던 쿼리를 외래키로 바꾸다
  5. 05위치 결과 하나로 그림과 문장을 만든다
  6. 06외부 요청과 기록 사이의 틈
하드웨어는 한 가지의 데이터를 단 한번만 말한다.이름으로 조인하던 쿼리를 외래키로 바꾸다

Table Of Contents

  • 값마다 필요한 기준이 다르다
  • 보간보다 경계 조건을 먼저 정한다
  • 계산된 좌표가 측량값은 아니다
  • 한 번 계산한 결과를 다음 단계에 넘긴다

값마다 필요한 기준이 다르다

좌표를 계산할 때는 이벤트 앞뒤에서 좌표가 확인되는 점을 고른다. 주변 위치를 설명할 때는 이름이 있는 점 중 이벤트와 가까운 것을 찾는다. 추가 위치 정보를 표시한다면 그 값이 기록된 점을 따로 골라야 한다.

필요한 값기준점 선택
좌표 계산이벤트 앞뒤에서 가장 가까운 좌표 보유 점
주변 위치명이름이 있는 점 중 거리 차가 가장 작은 점
추가 위치 설명해당 정보가 있는 점 중 거리 차가 가장 작은 점

한 행에서 좌표와 설명을 모두 가져오면 한 종류의 정보가 다른 계산을 막을 수 있다. 나는 목적에 따라 기준점을 나눴다. 같은 거리에 후보가 여럿일 때는 거리와 고유 식별값으로 순서를 고정했다. 데이터베이스 검색과 메모리 검색이 서로 다른 점을 고르지 않게 하려는 선택이다.

보간보다 경계 조건을 먼저 정한다

앞뒤 기준점의 거리를 d₀, d₁, 이벤트 거리를 D라고 하면 두 점 사이의 비율은 다음과 같다.

t = (D - d₀) / (d₁ - d₀)

위도와 경도 각각에 이 비율을 적용한다.

latitude  = lat₀ + (lat₁ - lat₀) × t
longitude = lon₀ + (lon₁ - lon₀) × t

1,000m와 1,600m 사이에 있는 1,300m 이벤트라면 t는 0.5다. 이벤트가 두 기준점의 중간에 있으므로 좌표도 두 좌표의 중간값으로 계산된다.

기준점이 한쪽에만 있을 때는 외삽하지 않기로 했다. 첫 기준점이 1,000m부터 있고 이벤트가 900m라면 앞쪽 점이 없다. 좌표를 내놓기보다 위치를 알 수 없다고 반환해야 결과에 근거가 부족하다는 사실이 남는다.

계산된 좌표가 측량값은 아니다

이 방법은 위도와 경도를 각각 직선으로 보간한다. 실제 경로의 굴곡이나 우회는 반영하지 않는다. 경로를 따라 잰 거리와 지도 위의 두 점 사이 거리가 다를 수도 있다.

그래서 결과 좌표의 소수점 자릿수는 정확도의 증거가 아니다. 기준점 간격과 거리 측정의 오차가 결과에 영향을 준다. 사용자에게 위치를 보여 줄 때는 계산값임을 함께 전달해야 한다.

한 번 계산한 결과를 다음 단계에 넘긴다

각 화면이나 메시지가 위치를 따로 계산하면 서로 다른 기준점을 고를 수 있다. 지도 마커와 본문의 기준점 이름이 어긋나는 일을 막으려고 좌표와 설명을 한 결과 객체에 모아 다음 단계에 넘겼다.

위치 결과
  좌표
  주변 위치와 거리
  추가 위치 설명과 거리
  도로명·지번 주소
  경로상의 위치 비율

객체를 합치면 편의를 위해 값을 묶는 데 그치지 않고 계산 결과도 보존한다. 어떤 값은 보간으로, 어떤 값은 가장 가까운 후보 검색으로 정했다는 계산 결과를 다음 단계에서도 그대로 쓰게 한다.

← 이전 편하드웨어는 한 가지의 데이터를 단 한번만 말한다.다음 편 →이름으로 조인하던 쿼리를 외래키로 바꾸다

관련 글

  • #java#backend#gis

    이 블로그에서 다루는 것

    JavaScript/TypeScript, 프론트엔드, Java, 백엔드, 수학, 컴퓨터과학 등 여러가지 컴퓨터공학에 어울리는 해결방식들을 사용해 복잡한 문제를 작게 나누고 해결한 과정을 기록한다.

    2026-09-03·6분
  • #java

    람다는 어떻게 인터페이스가 되는가

    구현 클래스 없이 호출되는 함수형 인터페이스를 타깃 타입 추론부터 invokedynamic, 캡처, hidden class까지 따라간다.

    2026-09-09·22분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

cheonbi — 소프트웨어 엔지니어입니다.

← Back to the blog