use of au.gov.amsa.navigation.ShipStaticData.Info in project risky by amsa-code.
the class ShipStaticDataTest method testParse.
@Test
public void testParse() {
InputStreamReader isr = new InputStreamReader(ShipStaticDataTest.class.getResourceAsStream("/ship-data.txt"), StandardCharsets.UTF_8);
List<Info> list = ShipStaticData.fromAndClose(isr).toList().toBlocking().single();
assertEquals(2, list.size());
Info a = list.get(0);
Info b = list.get(1);
// a
assertEquals(636014423, a.mmsi);
assertFalse(a.imo.isPresent());
assertEquals(AisClass.B, a.cls);
assertEquals(81, (int) a.shipType.get());
assertEquals(8.5, a.maxDraftMetres.get(), 0.00001);
assertEquals(202, (int) a.dimensionAMetres.get());
assertEquals(46, (int) a.dimensionBMetres.get());
assertEquals(18, (int) a.dimensionCMetres.get());
assertEquals(22, (int) a.dimensionDMetres.get());
assertEquals(248, (int) a.lengthMetres().get());
assertEquals(40, (int) a.widthMetres().get());
assertFalse(a.name.isPresent());
// b
assertEquals(548777000, b.mmsi);
assertEquals("9363821", b.imo.get());
assertEquals(AisClass.A, b.cls);
assertEquals(89, (int) b.shipType.get());
assertEquals(6.4, b.maxDraftMetres.get(), 0.00001);
assertEquals(120, (int) b.dimensionAMetres.get());
assertEquals(25, (int) b.dimensionBMetres.get());
assertEquals(18, (int) b.dimensionCMetres.get());
assertEquals(6, (int) b.dimensionDMetres.get());
assertEquals(145, (int) b.lengthMetres().get());
assertEquals(24, (int) b.widthMetres().get());
assertEquals("AS ORELIA", b.name.get());
}
use of au.gov.amsa.navigation.ShipStaticData.Info in project risky by amsa-code.
the class DistanceTravelledMain method run.
private static void run(String directory, Options options, boolean gui, String dataSetName) {
InputStream is;
try {
is = new GZIPInputStream(new FileInputStream("/media/an/ship-data/ais/ship-data-2014-v2.txt.gz"));
} catch (IOException e) {
throw new RuntimeException(e);
}
Map<Integer, Info> shipInfo = ShipStaticData.getMapFromReader(new InputStreamReader(is, StandardCharsets.UTF_8));
List<Setting> settings = new ArrayList<>();
settings.add(Setting.create(30, 30, "fishing"));
settings.add(Setting.create(52, 52, "tug"));
settings.add(Setting.create(60, 69, "passenger"));
settings.add(Setting.create(70, 79, "cargo"));
settings.add(Setting.create(80, 89, "tanker"));
settings.add(Setting.create(90, 99, "other"));
settings.add(Setting.create(-1, -1, "class_b"));
settings.add(Setting.create(0, 100, "all"));
for (Setting setting : settings) {
// filter out undesired mmsi numbers and ship types
Func1<Info, Boolean> shipSelector = info -> info != null && ((info.cls == AisClass.B && setting.lowerBound == -1) || (info.cls == AisClass.A && (info.shipType.isPresent() && info.shipType.get() >= setting.lowerBound && info.shipType.get() <= setting.upperBound))) && MmsiValidator2.INSTANCE.isValid(info.mmsi);
calculateTrafficDensity(directory, options, gui, shipInfo, shipSelector, setting.name + "-" + dataSetName);
}
}
Aggregations