<commit_before>class SwfController < ApplicationController
	session :off
	before_filter :check_availability

# 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;
	
		# -	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
		lastfile='-1'
	
		if params['token']
                        user=User.authenticate(:token => params[:token])
			sql="SELECT gps_points.latitude*0.000001 AS lat,gps_points.longitude*0.000001 AS lon,gpx_files.id AS fileid,UNIX_TIMESTAMP(gps_points.timestamp) AS ts "+
				 " 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"
		else
			sql="SELECT latitude*0.000001 AS lat,longitude*0.000001 AS lon,gpx_id AS fileid,UNIX_TIMESTAMP(timestamp) AS ts "+
				 " 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"
		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 and row['fileid']==lastfile)
				b+=drawTo(absx,absy,xs,ys)
			else
				b+=startAndMove(xs,ys,'01')
			end
			absx=xs.floor; absy=ys.floor
			lasttime=row['ts'].to_i
			lastfile=row['fileid']
			while b.length>80 do
				r+=[b.slice!(0...80)].pack("B*")
			end
		end<commit_msg>Cope with change in number of decimals for GPS point positions.<commit_after>class SwfController < ApplicationController
	session :off
	before_filter :check_availability

# 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;
	
		# -	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
		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,UNIX_TIMESTAMP(gps_points.timestamp) AS ts "+
				 " 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"
		else
			sql="SELECT latitude*0.0000001 AS lat,longitude*0.0000001 AS lon,gpx_id AS fileid,UNIX_TIMESTAMP(timestamp) AS ts "+
				 " 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"
		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 and row['fileid']==lastfile)
				b+=drawTo(absx,absy,xs,ys)
			else
				b+=startAndMove(xs,ys,'01')
			end
			absx=xs.floor; absy=ys.floor
			lasttime=row['ts'].to_i
			lastfile=row['fileid']
			while b.length>80 do
				r+=[b.slice!(0...80)].pack("B*")
			end
		end
{'fraction_non_alphanumeric': 0.1826038984920927, 'fraction_numerical': 0.07723427730783376, 'mean_word_length': 4.083177570093458, 'pattern_counts': {'":': 2, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 6, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2469878', 'n_tokens_mistral': 2682, 'n_tokens_neox': 2146, 'n_words': 335}