- skip_before_filter :verify_authenticity_token
- before_filter :check_api_readable
-
-# to log:
-# RAILS_DEFAULT_LOGGER.error("Args: #{args[0]}, #{args[1]}, #{args[2]}, #{args[3]}")
-# $log.puts Time.new.to_s+','+Time.new.usec.to_s+": started GPS script"
-# http://localhost:3000/api/0.4/swf/trackpoints?xmin=-2.32402605810577&xmax=-2.18386309423859&ymin=52.1546608755772&ymax=52.2272777906895&baselong=-2.25325793066437&basey=61.3948537948532&masterscale=5825.4222222222
-
-
- # ====================================================================
- # Public methods
-
- # ---- trackpoints compile SWF of trackpoints
-
- def trackpoints
-
- # - Initialise
-
- baselong =params['baselong'].to_f
- basey =params['basey'].to_f
- masterscale =params['masterscale'].to_f
-
- xmin=params['xmin'].to_f;
- xmax=params['xmax'].to_f;
- ymin=params['ymin'].to_f;
- ymax=params['ymax'].to_f;
- start=params['start'].to_i;
-
- # - Begin movie
-
- bounds_left =0
- bounds_right =320*20
- bounds_bottom=0
- bounds_top =240*20
-
- m =''
- m+=swfRecord(9,255.chr + 155.chr + 155.chr) # Background
- absx=0
- absy=0
- xl=yb= 9999999
- xr=yt=-9999999
-
- # - Send SQL for GPS tracks
-
- b=''
- lasttime=0
- lasttrack=lastfile='-1'
-
- if params['token']
- user=User.authenticate(:token => params[:token])
- sql="SELECT gps_points.latitude*0.0000001 AS lat,gps_points.longitude*0.0000001 AS lon,gpx_files.id AS fileid,"+
- " EXTRACT(EPOCH FROM gps_points.timestamp) AS ts, gps_points.trackid AS trackid "+
- " FROM gpx_files,gps_points "+
- "WHERE gpx_files.id=gpx_id "+
- " AND gpx_files.user_id=#{user.id} "+
- " AND "+OSM.sql_for_area(ymin,xmin,ymax,xmax,"gps_points.")+
- " AND (gps_points.timestamp IS NOT NULL) "+
- "ORDER BY fileid DESC,ts "+
- "LIMIT 10000 OFFSET #{start}"
- else
- sql="SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid,"+
- " EXTRACT(EPOCH FROM timestamp) AS ts, gps_points.trackid AS trackid "+
- " FROM gps_points "+
- "WHERE "+OSM.sql_for_area(ymin,xmin,ymax,xmax,"gps_points.")+
- " AND (gps_points.timestamp IS NOT NULL) "+
- "ORDER BY fileid DESC,ts "+
- "LIMIT 10000 OFFSET #{start}"
- end
- gpslist=ActiveRecord::Base.connection.select_all sql
-
- # - Draw GPS trace lines
-
- r=startShape()
- gpslist.each do |row|
- xs=(long2coord(row['lon'].to_f,baselong,masterscale)*20).floor
- ys=(lat2coord(row['lat'].to_f ,basey ,masterscale)*20).floor
- xl=[xs,xl].min; xr=[xs,xr].max
- yb=[ys,yb].min; yt=[ys,yt].max
- if row['ts'].to_i-lasttime>180 or row['fileid']!=lastfile or row['trackid']!=lasttrack #or row['ts'].to_i==lasttime
- b+=startAndMove(xs,ys,'01')
- absx=xs.floor; absy=ys.floor
+ skip_before_action :verify_authenticity_token
+ before_action :check_api_readable
+
+ # to log:
+ # RAILS_DEFAULT_LOGGER.error("Args: #{args[0]}, #{args[1]}, #{args[2]}, #{args[3]}")
+ # $log.puts Time.new.to_s+','+Time.new.usec.to_s+": started GPS script"
+ # http://localhost:3000/api/0.4/swf/trackpoints?xmin=-2.32402605810577&xmax=-2.18386309423859&ymin=52.1546608755772&ymax=52.2272777906895&baselong=-2.25325793066437&basey=61.3948537948532&masterscale=5825.4222222222
+
+ # ====================================================================
+ # Public methods
+
+ # ---- trackpoints compile SWF of trackpoints
+
+ def trackpoints
+ # - Initialise
+
+ baselong = params["baselong"].to_f
+ basey = params["basey"].to_f
+ masterscale = params["masterscale"].to_f
+
+ bbox = BoundingBox.new(params["xmin"], params["ymin"],
+ params["xmax"], params["ymax"])
+ start = params["start"].to_i
+
+ # - Begin movie
+
+ bounds_left = 0
+ bounds_right = 320 * 20
+ bounds_bottom = 0
+ bounds_top = 240 * 20
+
+ m = ""
+ m += swf_record(9, 255.chr + 155.chr + 155.chr) # Background
+ absx = 0
+ absy = 0
+ xl = yb = 9999999
+ xr = yt = -9999999
+
+ # - Send SQL for GPS tracks
+
+ b = ""
+ lasttime = 0
+ lasttrack = lastfile = "-1"
+
+ if params["token"]
+ user = User.authenticate(:token => params[:token])
+ sql = "SELECT gps_points.latitude*0.0000001 AS lat,gps_points.longitude*0.0000001 AS lon,gpx_files.id AS fileid," + " EXTRACT(EPOCH FROM gps_points.timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gpx_files,gps_points " + "WHERE gpx_files.id=gpx_id " + " AND gpx_files.user_id=#{user.id} " + " AND " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
+ else
+ sql = "SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid," + " EXTRACT(EPOCH FROM timestamp) AS ts, gps_points.trackid AS trackid " + " FROM gps_points " + "WHERE " + OSM.sql_for_area(bbox, "gps_points.") + " AND (gps_points.timestamp IS NOT NULL) " + "ORDER BY fileid DESC,ts " + "LIMIT 10000 OFFSET #{start}"
+ end
+ gpslist = ActiveRecord::Base.connection.select_all sql
+
+ # - Draw GPS trace lines
+
+ r = start_shape
+ gpslist.each do |row|
+ xs = (long2coord(row["lon"].to_f, baselong, masterscale) * 20).floor
+ ys = (lat2coord(row["lat"].to_f, basey, masterscale) * 20).floor
+ xl = [xs, xl].min
+ xr = [xs, xr].max
+ yb = [ys, yb].min
+ yt = [ys, yt].max
+ if row["ts"].to_i - lasttime > 180 || row["fileid"] != lastfile || row["trackid"] != lasttrack # or row['ts'].to_i==lasttime
+ b += start_and_move(xs, ys, "01")
+ absx = xs.floor
+ absy = ys.floor