У меня есть многоугольник, представляющий школьный округ, который я импортировал из Открытые данные Нью-Йорка. Я считаю, что координаты находятся в проекции epsg 2263 - nad83 / new Йорк Лонг-Айленд
У меня возникли проблемы с преобразованием координат в формат, используемый Google Maps.
Вот мой код, который импортирует полигоны из исходных шейп-файлов:
proj4 = "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"
factory = RGeo::Geographic.projected_factory(:projection_proj4 => proj4, :projection_srid => 2263)
RGeo::Shapefile::Reader.open("/Users/dmanaster1/flatiron_school/nycdata/db/source/ES_Zones_2013-2014.shp", :factory => factory.projection_factory) do |file|
file.each do |record|
school_zone = ES_Zone.new
...
school_zone.geometry = record.geometry
school_zone.save
end
file.rewind
end
В моей модели:
class ES_Zone < ActiveRecord::Base
proj4 = "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3048006096012192 +no_defs"
FACTORY = RGeo::Geographic.projected_factory(:projection_proj4 => proj4, :projection_srid => 2263)
set_rgeo_factory_for_column(:geometry, FACTORY.projection_factory)
end
В моем контроллере:
def index
polygons = format_polygon(ES_Zone.first)
gon.polygons = JSON.parse(polygons.to_json)
end
private
def format_polygon(zone)
array = Array.new
zone.geometry.each do |polygon|
polygon.exterior_ring.points.each do |point|
x = point.x
y = point.y
array << { "lng" => x, "lat" => y }
end
end
[array]
end
Я знаю, что мне чего-то не хватает в том, как преобразовать координаты, но я не уверен, что делать дальше, даже после прочтения отличное руководство. Кто-нибудь знает, как это сделать?