ruby rails 中使用 postgis 进行反向地理编码

Reverse geocoding with postgis in ruby on rails

在我的模型中,我创建了列地址和 start_point。 start_point 存储在 PostGIS 的 st_point 数据类型中。

我找到了一种从经纬度获取地址的方法,但是我还没有找到任何从 st_point 数据类型获取地址的方法。

# app/models/place.rb
reverse_geocoded_by :latitude, :longitude,
  :address => :location
after_validation :reverse_geocode

如何在我的应用程序中使用来自 PostGIS 的 st_point 数据类型进行反向地理编码?

您可以像这样手动定义 :latitude & :longitude

# app/models/place.rb
reverse_geocoded_by :latitude, :longitude
after_validation :reverse_geocode

attr_reader :latitude, :longitude

def latitude
  start_point.lat if start_point
end

def longitude
  start_point.lon if start_point
end

并记住 st_point 根据笛卡尔平面表达式 (x,y) 定义为 POINT(lon lat)。与我们通常在 Google 地图上看到的 lat/lon 格式相反。