Ruby Nokogiri将KML转换为CSV



我试图从KML文件中提取两个不同的元素,并将它们转换为CSV。我从这里的伟大网站开始:http://ckdake.com/content/2012/highgroove-hack-night-kml-heatmaps.html,它生成坐标的csv。现在我要做的就是将name标签添加到每行的开头。我是ruby/nokogiri n00b,所以我可以把这段代码粘进去,它得到我a)所有名字的列表,后面跟着b)所有坐标的列表。但是,我还是希望它们在同一行。

require 'rubygems'
require 'nokogiri' # gem install nokogiri
@doc = Nokogiri::XML(File.open("WashingtonDC2013-01-04 12h09m01s.kml"))
@doc.css('name').each do |name|  
  puts name.content
end
@doc.css('coordinates').each do |coordinates|
  coordinates.text.split(' ').each do |coordinate|
    (lat,lon,elevation) = coordinate.split(',')
    puts "#{lat},#{lon}n"
  end
end

这个怎么样:

@doc.css('Placemark').each do |placemark|
  name = placemark.css('name')
  coordinates = placemark.at_css('coordinates')
  if name && coordinates
    print name.text + ","
    coordinates.text.split(' ').each do |coordinate|
      (lon,lat,elevation) = coordinate.split(',')
      print "#{lat},#{lon}"
    end
    puts "n"
  end
end

我在这里假设每个<Placemark><coordinates>标签中有一个坐标对。如果有更多,它们都将被附加到同一行。

如果这不起作用,您需要发布一些KML文件本身,以便我可以对其进行测试。根据这个示例KML文件,我只是猜测。

最新更新