git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-analysis/EcologicalEngineGeoSpatialExtension@120127 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
87f0d0e9af
commit
0f462ff9e3
|
@ -0,0 +1,105 @@
|
|||
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 int 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));
|
||||
int Xr = getResolutionX(resolution);
|
||||
// int Yr = getResolutionY(resolution);
|
||||
gridresolution = Xr;
|
||||
float latAdj = adjustLat(lat, quadrant);
|
||||
float lonAdj = adjustLon(lon, quadrant);
|
||||
int resolutionY = getResolutionY(resolution);
|
||||
int 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, int 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, int 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 int getResolutionY(char token){
|
||||
if (token == '5')
|
||||
return 1;
|
||||
else if (token == '6')
|
||||
return 5;
|
||||
else if (token == '1')
|
||||
return 5;
|
||||
else if (token == '2')
|
||||
return 10;
|
||||
else if (token == '3')
|
||||
return 10;
|
||||
else if (token == '4')
|
||||
return 20;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int getResolutionX(char token){
|
||||
if (token == '5')
|
||||
return 1;
|
||||
else if (token == '6')
|
||||
return 5;
|
||||
else if (token == '1')
|
||||
return 10;
|
||||
else if (token == '2')
|
||||
return 20;
|
||||
else if (token == '3')
|
||||
return 10;
|
||||
else if (token == '4')
|
||||
return 20;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue