use*_*726 4 ruby csv kml nokogiri
我正在尝试从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
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
@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
Run Code Online (Sandbox Code Playgroud)
我在这里假设<coordinates>每个标签中都有一对坐标<Placemark>。如果还有更多内容,它们都将添加到同一行中。
如果这不起作用,则需要发布一些KML文件本身,以便我对其进行测试。我只是基于此示例KML文件进行猜测。