public void processRoute(ArrayList<String> rout, String fileName, boolean draw, 
			boolean writeToFile, 
			Filter filter) throws IOException {
		
		
		ArrayList<Point> prout = new ArrayList<Point>();
		double sumKm = 0;
		for (int i = 1;i < rout.size();i++) {
			double y = Math.abs(points.get(rout.get(i)).lon - 
					points.get(rout.get(i - 1)).lon);
			double x = Math.abs(points.get(rout.get(i)).lat - 
					points.get(rout.get(i - 1)).lat);
			sumKm += Math.sqrt((y * y * 111.2 * 111.2) + (x * x * 96.3 * 96.3)); 
		}
		for (int i = 0;i < rout.size();i++)
		{
			prout.add(points.get(rout.get(i)));
			if (cameras.contains(rout.get(i)))
			{
				//System.out.println(fileName + " " + "cam!");
				camHaving++;
			}
		}
		if (filter.pass(rout, this)) {
			System.out.println(fileName + " sumKm : " + sumKm);
			passedRoute++;
			//if (draw)
			//	Demo.drawLines(prout, fileName);
			if (writeToFile) {
				output.write(new Integer(rout.size()).toString());
				output.newLine();
				output.write(new Double(sumKm).toString());
				output.newLine();
				sumsumKm += sumKm;
				for (int i = 0;i < rout.size();i++) {
					double km = 0;
					if (i != rout.size() - 1) {
						/*
						double y = Math.abs(points.get(rout.get(i)).lon - 
								points.get(rout.get(i + 1)).lon);
						double x = Math.abs(points.get(rout.get(i)).lat - 
								points.get(rout.get(i + 1)).lat);
						km = Math.sqrt((y * y * 111.2 * 111.2) + (x * x * 96.3 * 96.3));
						*/
						km = this.calc(points.get(rout.get(i)).lat, points.get(rout.get(i)).lon, 
								points.get(rout.get(i + 1)).lat, points.get(rout.get(i + 1)).lon);
					}
					String str = rout.get(i);
					int isCam = 0;
					if (cameras.contains(str)) 
						isCam = 1;
					output.write(str + " " + points.get(str).lon + " " + points.get(str).lat +
							" " + isCam + " " + km);
					output.newLine();
				}
			}
		}
		
	}