Как определить, расположена ли широта / долгота внутри полигона шейп-файла
Я использую rgeo
а также rgeo-shapefile
драгоценные камни в моем приложении Rails 5. Моя цель - загрузить шейп-файл окрестностей и определить, в какой окрестности находится точка широты / долготы.
В своей документации у них есть этот пример.
require 'rgeo/shapefile'
name = "neighborhoods.shp"
RGeo::Shapefile::Reader.open(name) do |file|
puts "File contains #{file.num_records} records."
file.each do |record|
puts "Record number #{record.index}:"
puts " Geometry: #{record.geometry.as_text}"
puts " Attributes: #{record.attributes.inspect}"
end
file.rewind
record = file.next
puts "First record geometry was: #{record.geometry.as_text}"
end
Я не совсем уверен, как перейти от этого примера к тому, что я хотел бы сделать.
1 ответ
Использовать #within?
метод.
point.within?(neighborhood)
Системы координат для точки и окрестности должны быть одинаковыми. Я считаю, что более эффективно использовать прямолинейные проекции для этих типов операций, но я успешно использовал их и в прошлом с WGS, хотя я помню, что получал сообщения об ошибках для некоторых типов запросов типа перекрытия в WGS/4326, #within?
должно работать нормально, хотя.