include GeoRecord
include ConsistencyValidations
+ include NotRedactable
self.table_name = "current_nodes"
raise OSM::APIBadXMLError.new("node", pt, "lat missing") if pt['lat'].nil?
raise OSM::APIBadXMLError.new("node", pt, "lon missing") if pt['lon'].nil?
- node.lat = pt['lat'].to_f
- node.lon = pt['lon'].to_f
+ node.lat = OSM.parse_float(pt['lat'], OSM::APIBadXMLError, "node", pt, "lat not a number")
+ node.lon = OSM.parse_float(pt['lon'], OSM::APIBadXMLError, "node", pt, "lon not a number")
raise OSM::APIBadXMLError.new("node", pt, "Changeset id is missing") if pt['changeset'].nil?
node.changeset_id = pt['changeset'].to_i
# and set manually before the actual delete
node.visible = true
+ # Start with no tags
+ node.tags = Hash.new
+
+ # Add in any tags from the XML
pt.find('tag').each do |tag|
raise OSM::APIBadXMLError.new("node", pt, "tag is missing key") if tag['k'].nil?
raise OSM::APIBadXMLError.new("node", pt, "tag is missing value") if tag['v'].nil?
def to_xml_node(changeset_cache = {}, user_display_name_cache = {})
el1 = XML::Node.new 'node'
el1['id'] = self.id.to_s
- el1['lat'] = self.lat.to_s
- el1['lon'] = self.lon.to_s
el1['version'] = self.version.to_s
el1['changeset'] = self.changeset_id.to_s
+ if self.visible?
+ el1['lat'] = self.lat.to_s
+ el1['lon'] = self.lon.to_s
+ end
+
if changeset_cache.key?(self.changeset_id)
# use the cache if available
else