Sha256: 2507fa93ea1d2bd370d3203dfbda8bc40b5d32fcb6ab2f1cdd331d9abb373190
Contents?: true
Size: 994 Bytes
Versions: 6
Compression:
Stored size: 994 Bytes
Contents
require 'ostruct' module SpatialFeatures module Importers class KML < Base private def each_record(&block) Nokogiri::XML(@data).css('Placemark').each do |placemark| name = placemark.css('name').text metadata = { :description => placemark.css('description').text } placemark.css('ExtendedData SimpleData').each do |node| metadata[node['name']] = node.text end metadata.delete_if {|key, value| value.blank? } {'Polygon' => 'POLYGON', 'LineString' => 'LINE', 'Point' => 'POINT'}.each do |kml_type, sql_type| placemark.css(kml_type).each do |placemark| yield OpenStruct.new(:feature_type => sql_type, :geog => geom_from_kml(placemark), :name => name, :metadata => metadata) end end end end def geom_from_kml(kml) ActiveRecord::Base.connection.select_value("SELECT ST_GeomFromKML('#{kml}')") end end end end
Version data entries
6 entries across 6 versions & 1 rubygems