4

KML ファイルから 2 つの異なる要素を抽出し、それらを 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
4

1 に答える 1

7

これはどう:

@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

<coordinates>ここでは、各 のタグに1 つの座標ペアがあると想定しています<Placemark>。それ以上ある場合、それらはすべて同じ行に追加されます。

それでも問題が解決しない場合は、KML ファイル自体の一部を投稿して、テストできるようにする必要があります。このサンプル KML ファイルに基づいて推測しています。

于 2013-01-08T06:30:45.013 に答える