Как определить, расположена ли широта / долгота внутри полигона шейп-файла

Я использую 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? должно работать нормально, хотя.

Другие вопросы по тегам