-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoogle_map_to_landmarks.rb
31 lines (23 loc) · 1.03 KB
/
google_map_to_landmarks.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'yaml'
default_map_url='http://maps.google.com/maps/ms?authuser=0&vps=3&hl=en&ie=UTF8&msa=0&output=kml&msid=202933467189883314896.00049a04d9feb0cc487f6'
map_url = ARGV[0] || default_map_url
doc = Nokogiri::XML( open(map_url) )
#p doc.xpath('/kml')
paths = []
doc.xpath('/kml/Document/Placemark').each do |path|
landmark_name = path.xpath("name").first.text
path = path.xpath(".//coordinates").first.text
long_lat_path = path.strip.split("\n").map {|l| a = l.strip.split(',').map {|v| v.to_f}; [a[1],a[0]]}
paths << {:name => landmark_name, :path =>long_lat_path, :type => 'path'}
end
#p paths
# doc.xpath('//item[gml:Polygon]').each do |path|
# landmark_name = path.xpath("title").first.text
# path = path.xpath("gml:Polygon/gml:exterior/gml:LinearRing/gml:posList").first.text
# long_lat_path = path.strip.split("\n").map {|l| l.strip.split(' ').map {|v| v.to_f}}
# paths << {:name => landmark_name, :path =>long_lat_path, :type => 'path'}
# end
puts YAML.dump(paths)