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 格式相反。
在我的模型中,我创建了列地址和 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 格式相反。