Postgresql 使用KML生成几何图形

Postgresql 使用KML生成几何图形,postgresql,kml,postgis,rails-geocoder,rgeo,Postgresql,Kml,Postgis,Rails Geocoder,Rgeo,我在问是否有人已经做了以下描述。我甚至不知道这是否可能 我想使用一个KML文件生成一个多边形,该多边形记录在我的PostgreSQL数据库(使用PostGIS)中。我终于做到了 geometry = GeoRuby::SimpleFeatures::MultiPolygon.new doc = kml =~ /\<kml / ? Nokogiri::XML(kml) : Nokogiri::XML.fragment(kml) doc.search('Polygon').each_with_

我在问是否有人已经做了以下描述。我甚至不知道这是否可能

我想使用一个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文件导入Postgres还是如何从Postgres/GIS生成KML?问题是如何将KML导入Postgres。我发现这颗宝石似乎与我的研究相符:我目前正在研究它。如果我有一些结论性的结果,我会让你知道。如果那不起作用,试试OGR2OGR谢谢你。我做到了。我添加了一个链接,从Great中获得了很多帮助。一旦是postgis,就可以选择一大堆格式,比如geojson和kml。
@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