Я спрашиваю, если кто-то уже сделал следующее описание. Я даже не знаю, возможно ли это.
Я хотел бы использовать файл KML для создания многоугольника, записанного в моей базе данных PostgreSQL (с PostGIS).
Я спрашиваю, если кто-то уже сделал следующее описание. Я даже не знаю, возможно ли это.
Я хотел бы использовать файл KML для создания многоугольника, записанного в моей базе данных PostgreSQL (с PostGIS).
я наконец сделал это
geometry = GeoRuby::SimpleFeatures::MultiPolygon.new
doc = kml =~ /\<kml / ? Nokogiri::XML(kml) : Nokogiri::XML.fragment(kml)
doc.search('Polygon').each_with_index do |hpoly,i|
poly = GeoRuby::SimpleFeatures::Geometry.from_kml(hpoly.to_s)
end
geometry.empty? ? nil : geometry
Файл kml
— это непосредственно загруженный файл, в котором я применил метод open
.
Я нашел много вдохновения в этом документе inaturalist< /а>
Кстати. Я нашел еще одну проблему: сохранить его. Я не нашел способа преобразовать (и проецировать) точки, поступающие из GeoRuby, в RGeo. Вот почему я, наконец, разбираю его сам:
@doc = Nokogiri::XML(kml)
@doc.css('Placemark').each do |placemark|
coordinates = placemark.at_css('coordinates')
if coordinates
coordinates.text.split(' ').each do |coordinate|
(lon,lat,elevation) = coordinate.split(',')
points << Geo::StorageFactory.point(lon.to_f, lat.to_f)
print "#{lat},#{lon}"
puts "\n"
end
end
end
@area = Geo::StorageFactory.polygon(Geo::StorageFactory.line_string(points)).projection