- # gpx = OSM::GPXImporter.new('/tmp/2.gpx')
- # gpx.points do |point|
- # puts point['latitude']
- # end
-
- Notifier::deliver_gpx_success(trace)
- rescue
- Notifier::deliver_gpx_failure(trace)
+ if gpx.actual_points > 0
+ max_lat = Tracepoint.maximum('latitude', :conditions => ['gpx_id = ?', trace.id])
+ min_lat = Tracepoint.minimum('latitude', :conditions => ['gpx_id = ?', trace.id])
+ max_lon = Tracepoint.maximum('longitude', :conditions => ['gpx_id = ?', trace.id])
+ min_lon = Tracepoint.minimum('longitude', :conditions => ['gpx_id = ?', trace.id])
+
+ max_lat = max_lat.to_f / 1000000
+ min_lat = min_lat.to_f / 1000000
+ max_lon = max_lon.to_f / 1000000
+ min_lon = min_lon.to_f / 1000000
+
+ trace.latitude = f_lat
+ trace.longitude = f_lon
+ trace.large_picture = gpx.get_picture(min_lat, min_lon, max_lat, max_lon, gpx.actual_points)
+ trace.icon_picture = gpx.get_icon(min_lat, min_lon, max_lat, max_lon)
+ trace.size = gpx.actual_points
+ trace.inserted = true
+ trace.save
+
+ if gzipped || zipped
+ FileUtils.rm_f(filename)
+ end
+
+ logger.info "done trace #{trace.id}"
+ Notifier::deliver_gpx_success(trace, gpx.possible_points)
+ else
+ FileUtils.rm_f("/home/osm/gpx/#{trace.id}.gpx", filename)
+ trace.destroy
+ Notifier::deliver_gpx_failure(trace, '0 points parsed ok. Do they all have lat,lng,alt,timestamp?')
+ end
+
+ rescue Exception => ex
+ logger.info ex
+ ex.backtrace.each {|l| logger.info l }
+ FileUtils.rm_f("/home/osm/gpx/#{trace.id}.gpx", filename)
+ trace.destroy
+ Notifier::deliver_gpx_failure(trace, ex.to_s + ex.backtrace.join("\n") )