중고 신입이 개발해보기..

GPT가 알려주는 좌표로 거리 계산 본문

Back-End /Ruby On Rails

GPT가 알려주는 좌표로 거리 계산

rootkaien 2024. 6. 11. 18:34

Ruby on Rails에서 두 GPS 좌표 간의 거리를 계산하려면 여러 방법이 있지만, 일반적으로 Haversine 공식을 사용합니다. 이 공식은 두 점 사이의 대원 거리를 계산하는 데 사용됩니다. Rails에서는 `Geokit` 또는 `geocoder` gem을 사용하여 이 작업을 쉽게 수행할 수 있습니다. 아래에 두 가지 방법을 설명합니다.

### 방법 1: Geokit Gem 사용

1. **Geokit Gem 설치**
   `Gemfile`에 `geokit`을 추가합니다:
   ```ruby
   gem 'geokit'
   ```

   그리고 `bundle install`을 실행하여 gem을 설치합니다.

2. **Geokit 설정 및 사용**
   `config/initializers/geokit_config.rb` 파일을 생성하여 설정을 추가할 수 있습니다:
   ```ruby
   if defined? Geokit
     Geokit::default_units = :kms
     Geokit::default_formula = :sphere
   end
   ```

   예제 코드는 다음과 같습니다:
   ```ruby
   require 'geokit'

   def calculate_distance(lat1, lng1, lat2, lng2)
     point1 = Geokit::LatLng.new(lat1, lng1)
     point2 = Geokit::LatLng.new(lat2, lng2)
     distance = point1.distance_to(point2) # 기본 단위는 킬로미터
     distance
   end

   lat1, lng1 = 37.7749, -122.4194 # 샌프란시스코
   lat2, lng2 = 34.0522, -118.2437 # 로스앤젤레스

   puts "Distance: #{calculate_distance(lat1, lng1, lat2, lng2)} kms"
   ```

### 방법 2: Geocoder Gem 사용

1. **Geocoder Gem 설치**
   `Gemfile`에 `geocoder`를 추가합니다:
   ```ruby
   gem 'geocoder'
   ```

   그리고 `bundle install`을 실행하여 gem을 설치합니다.

2. **Geocoder 설정 및 사용**
   `config/initializers/geocoder.rb` 파일을 생성하여 설정을 추가할 수 있습니다:
   ```ruby
   Geocoder.configure(
     units: :km # 기본 단위 설정 (킬로미터)
   )
   ```

   예제 코드는 다음과 같습니다:
   ```ruby
   require 'geocoder'

   def calculate_distance(lat1, lng1, lat2, lng2)
     point1 = [lat1, lng1]
     point2 = [lat2, lng2]
     distance = Geocoder::Calculations.distance_between(point1, point2)
     distance
   end

   lat1, lng1 = 37.7749, -122.4194 # 샌프란시스코
   lat2, lng2 = 34.0522, -118.2437 # 로스앤젤레스

   puts "Distance: #{calculate_distance(lat1, lng1, lat2, lng2)} kms"
   ```

이 두 방법 중 하나를 사용하여 Ruby on Rails에서 두 GPS 좌표 간의 거리를 쉽게 계산할 수 있습니다. `Geokit`과 `Geocoder`는 모두 강력한 도구이므로 필요에 따라 적합한 것을 선택하여 사용하면 됩니다.

'Back-End > Ruby On Rails' 카테고리의 다른 글

Rails data 검증 무시하고 update from chatgpt  (0) 2025.01.22
ruby on rails  (0) 2024.12.18
after_update와 after_save의 차이는?  (0) 2024.01.23
Rails로 서버 만들기  (0) 2023.04.25
ruby block  (0) 2022.11.30
Comments