我是否有人已经做过以下描述。我甚至都不知道它是否可能。
我想使用KML文件生成记录在PostgreSQL数据库(使用PostGIS)上的多边形。
答案 0 :(得分:3)
我终于做到了
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
方法的上传文件。
@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