【问题标题】:Ruby Nokogiri converting KML to CSVRuby Nokogiri 将 KML 转换为 CSV
【发布时间】:2012-12-21 22:54:36
【问题描述】:

我正在尝试从 KML 文件中提取两个不同的元素并将它们转换为 CSV。我从这里的伟大站点开始:http://ckdake.com/content/2012/highgroove-hack-night-kml-heatmaps.html,它生成一个坐标的 csv。我现在要做的就是将名称标签添加到每行的开头。我是 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

【问题讨论】:

    标签: ruby csv nokogiri kml


    【解决方案1】:

    这个怎么样:

    @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 文件本身,以便我对其进行测试。我只是根据this sample KML file猜测。

    【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 2016-08-26
    • 2010-11-16
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多