package uni.projecte.maps.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.util.Log;
public class UTM {
private static String catalunyaUTM="utm_catalunya.tab";
private static String ppccUTM="utm_ppcc.tab";
private String utmCatalunya;
private String utmPPCC;
private Context baseContext;
public UTM(Context baseContext){
this.baseContext=baseContext;
}
public int checkUTM(Context baseContext,String utm,String country){
try {
InputStream is= baseContext.getResources().getAssets().open(catalunyaUTM);
utmCatalunya=convertStreamToString(is);
if(utmCatalunya.contains(utm)) return 1;
is= baseContext.getResources().getAssets().open(ppccUTM);
utmPPCC=convertStreamToString(is);
}
catch (IOException e) {
e.printStackTrace();
}
if(utmPPCC.contains(utm)) return 2;
else{
if(country.equals("ES")|| country.equals("PT") || country.equals("FR") || country.equals("MA")) return 3;
else return 4;
}
}
private static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader;
StringBuilder sb = new StringBuilder();
try {
reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public void drawUTMSquare(Canvas canvas,Point aP,Point bP, Point cP, Point dP){
Paint paint=new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setStrokeWidth(4);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStyle(Paint.Style.STROKE);
canvas.drawLine(aP.x, aP.y, bP.x, bP.y, paint);
paint.setColor(Color.YELLOW);
canvas.drawLine(bP.x, bP.y, cP.x, cP.y, paint);
paint.setColor(Color.RED);
canvas.drawLine(cP.x, cP.y, dP.x, dP.y, paint);
paint.setColor(Color.GREEN);
canvas.drawLine(dP.x, dP.y, aP.x, aP.y, paint);
}
public void drawUTMGrid(Canvas canvas, MapView mapView) {
InputStream is;
try {
is = baseContext.getResources().getAssets().open("utmIberic.json");
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String line = null;
String utm;
while ((line = reader.readLine()) != null) {
utm=line;
line = reader.readLine();
if(line.equals("")){
line = reader.readLine();
}
String [] elements=line.split(" ");
if(elements.length>1){
String [] subElement=elements[0].split(",");
Log.i("Error","L/L: "+subElement[0]+" : "+utm);
double lat=Double.valueOf(subElement[0]);
double longi=Double.valueOf(subElement[1]);
GeoPoint a=new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
Point aP = new Point();
mapView.getProjection().toPixels(a, aP);
subElement=elements[1].split(",");
lat=Double.valueOf(subElement[0]);
longi=Double.valueOf(subElement[1]);
GeoPoint b=new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
Point bP = new Point();
mapView.getProjection().toPixels(b, bP);
subElement=elements[2].split(",");
lat=Double.valueOf(subElement[0]);
longi=Double.valueOf(subElement[1]);
GeoPoint c=new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
Point cP = new Point();
mapView.getProjection().toPixels(c, cP);
subElement=elements[3].split(",");
lat=Double.valueOf(subElement[0]);
longi=Double.valueOf(subElement[1]);
GeoPoint d=new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
Point dP = new Point();
mapView.getProjection().toPixels(d, dP);
drawUTMSquare(canvas, aP, bP, cP, dP);
}
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}