ecological-engine-geospatia.../src/main/java/org/gcube/dataanalysis/geo/utils/GridCWPConverter.java

123 lines
2.9 KiB
Java

package org.gcube.dataanalysis.geo.utils;
public class GridCWPConverter {
public static void main(String[] args) {
GridCWPConverter gridder = new GridCWPConverter();
gridder.gridCodeToPair("5206064");
System.out.println(gridder.outlon+","+gridder.outlat+","+gridder.gridresolution);
}
public float outlon;
public float outlat;
public float gridresolution;
public void gridCodeToPair (String grid){
char resolution = grid.charAt(0);
int quadrant = Integer.parseInt(""+grid.charAt(1));
float lat = Float.parseFloat(grid.substring(2,4));
float lon = Float.parseFloat(grid.substring(4));
float Xr = getResolutionX(resolution);
// int Yr = getResolutionY(resolution);
gridresolution = Xr;
float latAdj = adjustLat(lat, quadrant);
float lonAdj = adjustLon(lon, quadrant);
float resolutionY = getResolutionY(resolution);
float resolutionX = getResolutionX(resolution);
float centerLat = getCenterLat(latAdj, resolutionY, quadrant);
float centerLon = getCenterLon(lonAdj, resolutionX, quadrant);
// System.out.println("Xr:"+Xr+" Yr:"+Yr+" Lat:"+lat+" Lon:"+lon+" LatAdj:"+latAdj+" LonAdj:"+lonAdj+" Q:"+quadrant+" centLon:"+centerLon+" centLat:"+centerLat);
outlat = centerLat;
outlon = centerLon;
}
public float getCenterLat(float lat, float resolutionY, int quadrant){
float halfres = (float) resolutionY/2f;
if (quadrant == 1 || quadrant == 4)
return lat+halfres;
else
return lat-halfres;
}
public float getCenterLon(float lon, float resolutionX, int quadrant){
float halfres = (float) resolutionX/2f;
if (quadrant == 1 || quadrant == 2)
return lon+halfres;
else
return lon-halfres;
}
public float adjustLat(float lat,int quadrant){
if (quadrant==1 || quadrant==4)
return lat;
else
return -1*lat;
}
public float adjustLon(float lon,int quadrant){
if (quadrant==1 || quadrant==2)
return lon;
else
return -1*lon;
}
public float getResolutionY(char token){
if (token == '5')
return 1;
else if (token == '6')
return 5;
else if (token == '7')
return 10;
else if (token == '8')
return 20;
else if (token == '9')
return 30;
else if (token == '0')
return 0;
else if (token == '4')
return 0.5f;
else if (token == '3')
return 0.5f;
else if (token == '2')
return 0.22f;
else if (token == '1')
return 0.17f;
else
return -1;
}
public float getResolutionX(char token){
if (token == '5')
return 1;
else if (token == '6')
return 5;
else if (token == '7')
return 10;
else if (token == '8')
return 20;
else if (token == '9')
return 30;
else if (token == '0')
return 0;
else if (token == '4')
return 1;
else if (token == '3')
return 0.5f;
else if (token == '2')
return 0.22f;
else if (token == '1')
return 0.17f;
else
return -1;
}
}