Search in sources :

Example 6 with Info

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());
}
Also used : InputStreamReader(java.io.InputStreamReader) Info(au.gov.amsa.navigation.ShipStaticData.Info) Test(org.junit.Test)

Example 7 with Info

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);
    }
}
Also used : Renderer.saveAsPng(au.gov.amsa.geo.distance.Renderer.saveAsPng) BinaryCellValuesObservable(au.gov.amsa.geo.BinaryCellValuesObservable) OperatorCellValuesToBytes(au.gov.amsa.geo.OperatorCellValuesToBytes) GZIPInputStream(java.util.zip.GZIPInputStream) SegmentOptions(au.gov.amsa.geo.model.SegmentOptions) AisClass(au.gov.amsa.risky.format.AisClass) ArrayList(java.util.ArrayList) Observable(rx.Observable) Logger(org.apache.log4j.Logger) Func1(rx.functions.Func1) Util(au.gov.amsa.geo.Util) Bounds(au.gov.amsa.geo.model.Bounds) Map(java.util.Map) ShipStaticData(au.gov.amsa.navigation.ShipStaticData) CalculationResult(au.gov.amsa.geo.distance.DistanceTravelledCalculator.CalculationResult) Info(au.gov.amsa.navigation.ShipStaticData.Info) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) OperatorWriteBytes(au.gov.amsa.util.rx.OperatorWriteBytes) InputStreamReader(java.io.InputStreamReader) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) CellValue(au.gov.amsa.geo.model.CellValue) TimeUnit(java.util.concurrent.TimeUnit) List(java.util.List) MmsiValidator2(au.gov.amsa.util.identity.MmsiValidator2) InputStream(java.io.InputStream) Options(au.gov.amsa.geo.model.Options) InputStreamReader(java.io.InputStreamReader) GZIPInputStream(java.util.zip.GZIPInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) IOException(java.io.IOException) Info(au.gov.amsa.navigation.ShipStaticData.Info) FileInputStream(java.io.FileInputStream) GZIPInputStream(java.util.zip.GZIPInputStream)

Aggregations

Info (au.gov.amsa.navigation.ShipStaticData.Info)7 File (java.io.File)6 Map (java.util.Map)5 ShipStaticData (au.gov.amsa.navigation.ShipStaticData)4 BinaryFixes (au.gov.amsa.risky.format.BinaryFixes)3 IOException (java.io.IOException)3 Instant (java.time.Instant)3 DateTimeFormatter (java.time.format.DateTimeFormatter)3 List (java.util.List)3 Observable (rx.Observable)3 ShipTypeDecoder (au.gov.amsa.ais.ShipTypeDecoder)2 OperatorCellValuesToBytes (au.gov.amsa.geo.OperatorCellValuesToBytes)2 CalculationResult (au.gov.amsa.geo.distance.DistanceTravelledCalculator.CalculationResult)2 CellValue (au.gov.amsa.geo.model.CellValue)2 Shapefile (au.gov.amsa.gt.Shapefile)2 Fix (au.gov.amsa.risky.format.Fix)2 Files (au.gov.amsa.util.Files)2 OperatorWriteBytes (au.gov.amsa.util.rx.OperatorWriteBytes)2 Logging (com.github.davidmoten.rx.slf4j.Logging)2 FileInputStream (java.io.FileInputStream)2