기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[Mysql] 위도 경도 반경 구하기
Database/RDBMS

[Mysql] 위도 경도 반경 구하기

2022. 7. 15. 11:07
반응형

1. 개요

지도에 관한 로직을 짤때 latitude, longitude 위도 경도 값을 구해서 radius, 위도 경도 값 기준으로 주변 5km, 10km의 위도 경도 리스트 또는 거리를 알고 싶을 때가 있습니다.

이러한 로직을 mysql에서 구현할 수 있을까 해서 찾아봤는데 stack over flow에서 친절하게도 작성된 sql이 있더군요.

https://stackoverflow.com/questions/8850336/radius-of-40-kilometers-using-latitude-and-longitude

 

Radius of 40 kilometers using latitude and longitude

Possible Duplicate: Radius of multiple latitude/longitude points distance calculations in mysql queries select within 20 kilometers based on latitude/longitude I have a MyISAM table, which...

stackoverflow.com

 

 

2. SQL

SELECT
    *,
    ( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( `lat` ) ) ) ) AS distance
FROM `positions`
HAVING distance <= {$radius}
ORDER BY distance ASC

 

정확한 공식에 대한 이해는 부족하지만, 위도와 경도를 기준으로 해당 테이블 안에 위도와 경도 중에서 거리가 {$radius}보다 작은 위도 경도 리스트를 출력하는 쿼리라고 생각합니다.

 

저는 radius를 2로 주었고, 결과는 위와 같이 나옵니다.

 

 

반응형
저작자표시 변경금지

'Database > RDBMS' 카테고리의 다른 글

Maria DB cent os home 경로에 설치하기  (0) 2021.08.09
[MySQL] 파티셔닝 자동화 프로시저 코드  (0) 2021.04.28
[MySQL] 파티셔닝 개념 및 사용법  (2) 2021.04.28
[오류해결] MySQL Read Only Table  (0) 2020.08.06
[오류해결] MariaDB errno: 150 "Foreign key constraint is incorrectly formed"  (0) 2020.08.06
    'Database/RDBMS' 카테고리의 다른 글
    • Maria DB cent os home 경로에 설치하기
    • [MySQL] 파티셔닝 자동화 프로시저 코드
    • [MySQL] 파티셔닝 개념 및 사용법
    • [오류해결] MySQL Read Only Table
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바