Zasadniczy wsad inicjalizacyjny.
This commit is contained in:
242
src/main/java/pl/wat/ms4ds/terenfunkcje/MapConsts.java
Normal file
242
src/main/java/pl/wat/ms4ds/terenfunkcje/MapConsts.java
Normal file
@@ -0,0 +1,242 @@
|
||||
package pl.wat.ms4ds.terenfunkcje;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
public final class MapConsts {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(MapConsts.class);
|
||||
|
||||
/**
|
||||
* Umowny uklad odniesienia dla lokalizacji geograficznej: <p>
|
||||
* Długość geograficzna (wsp. X) przyjmuje wartości: [0, 360) odpowiadające [-180, 180]<p>
|
||||
* Szerokość geograficzna (wsp. Y) przyjmuje wartości: [0, 180] odpowadające [-90, 90]
|
||||
*/
|
||||
public static final int X_REF;
|
||||
/**
|
||||
* Umowny uklad odniesienia dla lokalizacji geograficznej: <p>
|
||||
* Długość geograficzna (wsp. X) przyjmuje wartości: [0, 360) odpowiadające [-180, 180]<p>
|
||||
* Szerokość geograficzna (wsp. Y) przyjmuje wartości: [0, 180] odpowadające [-90, 90]
|
||||
*/
|
||||
public static final int Y_REF;
|
||||
public static final int DX_REF;
|
||||
public static final int DY_REF;
|
||||
|
||||
public static final String KWADRATY_DIR;
|
||||
public static final String DROGI_DIR;
|
||||
|
||||
/**
|
||||
* Nazwa pliku z konfiguracja mechanizmu odpowiedzialnego za transfer. Plik
|
||||
* musi znajdowac sie w katalogu glownym aplikacji, ewentualnie musi tu byc
|
||||
* podana sciezka bezwzgledna do niego.
|
||||
*/
|
||||
private static final String PLIK_Z_USTAWIENIAMI = "teren.properties";
|
||||
|
||||
/**
|
||||
* Dlugosc boku duzego kwadratu na osi OX w liczbie malych kwadratow.
|
||||
*/
|
||||
public static final int SS_PER_BS_X;
|
||||
/**
|
||||
* Dlugosc boku duzego kwadratu na osi OY w liczbie malych kwadratow.
|
||||
*/
|
||||
public static final int SS_PER_BS_Y;
|
||||
/**
|
||||
* Dlugosc boku malego kwadratu w metrach.
|
||||
*/
|
||||
public static final int DL_MK;
|
||||
/**
|
||||
* Powierzchnia malego kwadratu w metrach.
|
||||
*/
|
||||
public static final int POW_MK;
|
||||
/**
|
||||
* Szerokość małego kwadratu w stopniach.
|
||||
*/
|
||||
public static final double DELTA_X;
|
||||
/**
|
||||
* Wysokość małego kwadratu w stopniach.
|
||||
*/
|
||||
public static final double DELTA_Y;
|
||||
/**
|
||||
* Liczba duzych kwadratow na stopien geograficzny po osi OX (dlugosc geograficzna).
|
||||
*/
|
||||
public static final int BS_PER_DEG_X = 4;
|
||||
/**
|
||||
* Liczba duzych kwadratow na stopien geograficzny po osi OY (szerokosc geograficzna).
|
||||
*/
|
||||
public static final int BS_PER_DEG_Y = 6;
|
||||
/**
|
||||
* Szerokość duzych kwadratow w stopniach geograficznych po osi OX (dlugosc geograficzna).
|
||||
*/
|
||||
public static final double BS_DX;
|
||||
/**
|
||||
* Wysokość duzych kwadratow w stopniach geograficznych po osi OY (szerokosc geograficzna).
|
||||
*/
|
||||
public static final double BS_DY;
|
||||
|
||||
static Properties ustawienia;
|
||||
|
||||
/**
|
||||
* Odczytanie ustawien z pliku konfiguracyjnego.
|
||||
*/
|
||||
static {
|
||||
String propertiesFileName = System.getProperty("user.dir") + "\\" + PLIK_Z_USTAWIENIAMI;
|
||||
|
||||
ustawienia = new Properties();
|
||||
try {
|
||||
LOGGER.debug("Odczyt ustawien z pliku " + propertiesFileName + ".");
|
||||
ustawienia.load(new FileInputStream(propertiesFileName));
|
||||
LOGGER.debug("Ustawienia wczytane.");
|
||||
} catch (FileNotFoundException e) {
|
||||
LOGGER.error(e.getLocalizedMessage());
|
||||
} catch (IOException e) {
|
||||
LOGGER.error(e.getLocalizedMessage());
|
||||
}
|
||||
// logger.debug("Ustawienia wczytane.");
|
||||
// przesuniecie o 180 stop.
|
||||
// poludnik zerowy ma wartosc 180, zatem wspolrzedne zachodnie (ujemne) zawierają sie w <0, 180)
|
||||
// wspolrzedne wschodnie (nieujemne) zawieraja sie w przedziale <180, 360)
|
||||
X_REF = Integer.parseInt(ustawienia.getProperty("x_ref")) + 180;
|
||||
// przesuniecie o 90 stop.
|
||||
// rownik ma wartosc 90, zatem wspolrzedne poludniowe (ujemne) zawierają sie w <0, 90)
|
||||
// wspolrzedne polnocne (nieujemne) zawieraja sie w przedziale <90, 180>
|
||||
Y_REF = Integer.parseInt(ustawienia.getProperty("y_ref")) + 90;
|
||||
DX_REF = Integer.parseInt(ustawienia.getProperty("dx_ref"));
|
||||
DY_REF = Integer.parseInt(ustawienia.getProperty("dy_ref"));
|
||||
String val = ustawienia.getProperty("dl_mk");
|
||||
switch (val) {
|
||||
case "20":
|
||||
DL_MK = 20;
|
||||
break;
|
||||
case "25":
|
||||
DL_MK = 25;
|
||||
break;
|
||||
case "50":
|
||||
DL_MK = 50;
|
||||
break;
|
||||
case "100":
|
||||
DL_MK = 100;
|
||||
break;
|
||||
default:
|
||||
DL_MK = 200;
|
||||
break;
|
||||
}
|
||||
POW_MK = DL_MK * DL_MK;
|
||||
DROGI_DIR = ustawienia.getProperty("drogi_dir");
|
||||
if (DL_MK == 20) {
|
||||
SS_PER_BS_X = 83 * 10;
|
||||
SS_PER_BS_Y = 93 * 10;
|
||||
DELTA_X = 1.0 / (double) (BS_PER_DEG_X * SS_PER_BS_X);
|
||||
DELTA_Y = 1.0 / (double) (BS_PER_DEG_Y * SS_PER_BS_Y);
|
||||
KWADRATY_DIR = ustawienia.getProperty("kwadraty_dir") + "20m/";
|
||||
} else if (DL_MK == 25) {
|
||||
SS_PER_BS_X = 83 * 8;
|
||||
SS_PER_BS_Y = 93 * 8;
|
||||
DELTA_X = 1.0 / (double) (BS_PER_DEG_X * SS_PER_BS_X);
|
||||
DELTA_Y = 1.0 / (double) (BS_PER_DEG_Y * SS_PER_BS_Y);
|
||||
KWADRATY_DIR = ustawienia.getProperty("kwadraty_dir") + "25m/";
|
||||
} else if (DL_MK == 50) {
|
||||
SS_PER_BS_X = 83 * 4;
|
||||
SS_PER_BS_Y = 93 * 4;
|
||||
DELTA_X = 1.0 / (double) (BS_PER_DEG_X * SS_PER_BS_X);
|
||||
DELTA_Y = 1.0 / (double) (BS_PER_DEG_Y * SS_PER_BS_Y);
|
||||
KWADRATY_DIR = ustawienia.getProperty("kwadraty_dir") + "50m/";
|
||||
} else if (DL_MK == 100) {
|
||||
SS_PER_BS_X = 83 * 2;
|
||||
SS_PER_BS_Y = 93 * 2;
|
||||
DELTA_X = 1.0 / (double) (BS_PER_DEG_X * SS_PER_BS_X);
|
||||
DELTA_Y = 1.0 / (double) (BS_PER_DEG_Y * SS_PER_BS_Y);
|
||||
KWADRATY_DIR = ustawienia.getProperty("kwadraty_dir") + "100m/";
|
||||
} else {
|
||||
// domyslnie dlugosc kwadratu 200m
|
||||
SS_PER_BS_X = 83;
|
||||
SS_PER_BS_Y = 93;
|
||||
DELTA_X = 1.0 / (double) (BS_PER_DEG_X * SS_PER_BS_X);
|
||||
DELTA_Y = 1.0 / (double) (BS_PER_DEG_Y * SS_PER_BS_Y);
|
||||
KWADRATY_DIR = ustawienia.getProperty("kwadraty_dir") + "200m/";
|
||||
}
|
||||
BS_DX = 1.0 / (double) BS_PER_DEG_X;
|
||||
BS_DY = 1.0 / (double) BS_PER_DEG_Y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liczba milisekund na stopien.
|
||||
*/
|
||||
public static final int DEG_MS = 3600000;
|
||||
/**
|
||||
* Liczba milisekund na 360 stopni.
|
||||
*/
|
||||
public static final long ANGLE_360_MS = 3600000 * 360;
|
||||
/**
|
||||
* Wielkosc cache'u pola walki (liczba duzych kwadratow trzymanych w RAM).
|
||||
*/
|
||||
public static final int MAX_BIG_SQUARES_IN_MEMORY = 500;
|
||||
/**
|
||||
* Wspolrzedna referencyjna X (dlugosc geograficzna) lewego dolnego rogu mapy w stopniach geograficznych.
|
||||
* @return
|
||||
*/
|
||||
public static int getX_REF() {
|
||||
return X_REF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wspolrzedna referencyjna Y (szerokosc geograficzna) lewego dolnego rogu mapy w stopniach geograficznych.
|
||||
* @return
|
||||
*/
|
||||
public static int getY_REF() {
|
||||
return Y_REF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Szerokosc referencyjna prostokata pola walki w stopniach na osi OX (dlugosc geograficzna).
|
||||
* @return
|
||||
*/
|
||||
public static int getDX_REF() {
|
||||
return DX_REF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wysokosc referencyjna prostokata pola walki w stopniach na osi OY (szerokosc geograficzna).
|
||||
* @return
|
||||
*/
|
||||
public static int getDY_REF() {
|
||||
return DY_REF;
|
||||
}
|
||||
|
||||
public static String getKwadratyDir() {
|
||||
return KWADRATY_DIR;
|
||||
}
|
||||
|
||||
public static String getDrogiDir() {
|
||||
return DROGI_DIR;
|
||||
}
|
||||
/**
|
||||
* Dlugosci bokow malego kwadratu w milisekundach geograficznych po osi OX (dlugosc geograficzna).
|
||||
*/
|
||||
public static final double SS_DX_MS = DELTA_X * DEG_MS;
|
||||
/**
|
||||
* Dlugosci bokow malego kwadratu w milisekundach geograficznych po osi OY (szerokosc geograficzna).
|
||||
*/
|
||||
public static final double SS_DY_MS = DELTA_Y * DEG_MS;
|
||||
// wspolrzedne dolnego lewego rogu mapy w ms
|
||||
// wspolrzedne geograficzne w milisekundach zawieraja sie w zakresie:
|
||||
// 0 <= x < 360 dlugosc geograficzna
|
||||
// 0 <= y <= 180 szerokosc geograficzna
|
||||
public static final int X_REF_MS = X_REF * DEG_MS;
|
||||
public static final int Y_REF_MS = Y_REF * DEG_MS;
|
||||
public static final int DX_REF_MS = DEG_MS * DX_REF; // szerokosc pola walki w stopniach
|
||||
public static final int DY_REF_MS = DEG_MS * DY_REF; // wysokosc polwa walki w stopniach
|
||||
|
||||
public static final int BS_DX_MS = (int) (BS_DX * DEG_MS);
|
||||
public static final int BS_DY_MS = (int) (BS_DY * DEG_MS);
|
||||
|
||||
/**
|
||||
* Liczba malych kwadratow przypadajaca na bok arkusza mapy drogowej.
|
||||
*/
|
||||
public static final int SS_PER_SHEET = 20;
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user