本文整理汇总了Java中dk.dma.ais.reader.AisReaders类的典型用法代码示例。如果您正苦于以下问题:Java AisReaders类的具体用法?Java AisReaders怎么用?Java AisReaders使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
AisReaders类属于dk.dma.ais.reader包,在下文中一共展示了AisReaders类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: doesNotDetectStocMarciasDriftOnOct02_2014
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Test
public void doesNotDetectStocMarciasDriftOnOct02_2014() {
Tracker tracker = injector.getInstance(EventEmittingTracker.class);
EventRepository eventRepository = injector.getInstance(EventRepository.class);
InputStream testDataStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("ais/212123000_drift_1.ais");
AisReader aisReader = AisReaders.createReaderFromInputStream(testDataStream);
context.checking(new Expectations() {{
never(eventRepository).findOngoingEventByVessel(212123000, DriftEvent.class);
never(eventRepository).save(with(any(DriftEvent.class)));
}});
driftAnalysis.start();
aisReader.registerPacketHandler(aisPacket -> {
tracker.update(aisPacket);
});
aisReader.run();
context.assertIsSatisfied();
}
示例2: detectsFriosDriftOnSep28_2014
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Test
public void detectsFriosDriftOnSep28_2014() {
Tracker tracker = injector.getInstance(EventEmittingTracker.class);
EventRepository eventRepository = injector.getInstance(EventRepository.class);
InputStream testDataStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("ais/538004030_drift_1.ais");
AisReader aisReader = AisReaders.createReaderFromInputStream(testDataStream);
final ArgumentCaptor<DriftEvent> eventCaptor = ArgumentCaptor.forClass(DriftEvent.class);
context.checking(new Expectations() {{
atLeast(1).of(eventRepository).findOngoingEventByVessel(538004030, DriftEvent.class);
atLeast(1).of(eventRepository).save(with(eventCaptor.getMatcher()));
}});
driftAnalysis.start();
aisReader.registerPacketHandler(aisPacket -> {
tracker.update(aisPacket);
});
aisReader.run();
context.assertIsSatisfied();
assertTrue(eventCaptor.getCapturedObject().getDescription().startsWith("FRIO is drifting"));
assertEquals(MILLIS_TO_LOCALDATETIME_UTC.apply(1411923004556L), eventCaptor.getCapturedObject().getStartTime());
}
示例3: canDetectLotusSuddenSpeedChangeOnOct05_2014
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Test
public void canDetectLotusSuddenSpeedChangeOnOct05_2014() {
Tracker tracker = injector.getInstance(EventEmittingTracker.class);
EventRepository eventRepository = injector.getInstance(EventRepository.class);
InputStream testDataStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("ais/219165000_ssc_1.ais");
AisReader aisReader = AisReaders.createReaderFromInputStream(testDataStream);
final ArgumentCaptor<SuddenSpeedChangeEvent> eventCaptor = ArgumentCaptor.forClass(SuddenSpeedChangeEvent.class);
context.checking(new Expectations() {{
atLeast(1).of(eventRepository).findOngoingEventByVessel(219165000, SuddenSpeedChangeEvent.class);
atLeast(1).of(eventRepository).save(with(eventCaptor.getMatcher()));
}});
analysis.start();
aisReader.registerPacketHandler(aisPacket -> {
tracker.update(aisPacket);
});
aisReader.run();
context.assertIsSatisfied();
assertTrue(eventCaptor.getCapturedObject().getDescription().startsWith("Sudden speed change of LOTUS"));
assertEquals(LocalDateTime.ofInstant(Instant.ofEpochMilli(1412525411424L), ZoneOffset.UTC), eventCaptor.getCapturedObject().getStartTime());
}
示例4: createKml
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
/**
* Produce KML output for POSTed AIS data in NMEA format.
*
* Use 'curl -X POST -T <ais-data-file> http://127.0.0.1:8090/store/history/kml' to test
* Or with expression filter:
* 'curl -X POST -T <ais-data-file> http://127.0.0.1:8090/store/history/kml?filter="m.mmsi=247469000" > test.kmz'
*/
@POST
@Path("/history/kml")
@Produces(MEDIA_TYPE_KMZ)
public Response createKml(@QueryParam("filter") String filterExpression, InputStream inputStream) {
LOG.debug("Filter expression: " + filterExpression);
Predicate<AisPacket> filter = isBlank(filterExpression) ? p->true : AisPacketFilters.parseExpressionFilter(filterExpression);
ArrayList<AisPacket> packets = new ArrayList<>();
AisReader reader = AisReaders.createReaderFromInputStream(inputStream);
reader.registerPacketHandler(
aisPacket -> { if (filter.test(aisPacket)) packets.add(aisPacket); }
);
reader.start();
try {
reader.join();
} catch (InterruptedException e) {
LOG.error(e.getMessage(), e);
return Response.serverError().build();
}
StreamingOutput output = StreamingUtil.createZippedStreamingOutput(packets, AisPacketOutputSinks.newKmlSink(), "history.kml");
return Response
.ok()
.entity(output)
.type(MEDIA_TYPE_KMZ).build();
}
示例5: provideAisReader
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Provides
@Singleton
AisReader provideAisReader() {
AisReader aisReader = null;
try {
aisReader = AisReaders.createDirectoryReader(inputDirectory, inputFilenamePattern, inputRecursive);
LOG.info("Created AisReader.");
} catch (Exception e) {
LOG.error("Failed to create AisReader object", e);
}
return aisReader;
}
示例6: provideAisReader
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Provides
AisReader provideAisReader() {
AisReader aisReader = null;
try {
aisReader = AisReaders.createDirectoryReader(inputDirectory, inputFilenamePattern, inputRecursive);
} catch (Exception e) {
e.printStackTrace();
}
return aisReader;
}
示例7: runDaemon
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Override
protected void runDaemon(Injector injector) throws Exception {
// Tracking of live data
final TargetTracker targetTracker = new TargetTracker();
// A cache manager where caches can be held and retrieved
final CacheManager cacheManager = new CacheManager();
// Setup the readers
AisReaderGroup g = AisReaders.createGroup("AisView",
sources == null ? Collections.<String> emptyList() : sources);
AisReaders.manageGroup(g);
// A job manager that takes care of tracking ongoing jobs
final JobManager jobManager = new JobManager();
// Setup the backup process
// Files.createDirectories(backup);
backup.mkdirs();
if(!backup.isDirectory()) {
throw new IOException("Unable to create directories for " + backup);
}
start(new TargetTrackerFileBackupService(targetTracker, backup.toPath()));
// start tracking
targetTracker.subscribeToPacketStream(g.stream());
//target tracking cleanup service
start(new AbstractScheduledService() {
@Override
protected Scheduler scheduler() {
return Scheduler.newFixedDelaySchedule(1, 10, TimeUnit.MINUTES);
}
@Override
protected void runOneIteration() throws Exception {
final Date satellite = new Date(new Date().getTime()-(1000*60*60*48));
final Date live = new Date(new Date().getTime()-(1000*60*60*12));
targetTracker.removeAll((t, u) -> {
switch(t.getSourceType()) {
case SATELLITE:
return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(satellite);
default:
return !u.hasPositionInfo() || new Date(u.getPositionTimestamp()).before(live);
}
});
}
});
//target cleanup missing static data
start(new AbstractScheduledService() {
@Override
protected Scheduler scheduler() {
return Scheduler.newFixedDelaySchedule(1, 24, TimeUnit.HOURS);
}
@Override
protected void runOneIteration() throws Exception {
targetTracker.removeAll(u -> !u.hasStaticInfo());
}
});
start(g.asService());
// Start Ais Store Connection
final CassandraConnection con = connect();
WebServer ws = new WebServer(port);
ws.getContext().setAttribute(
AbstractResource.CONFIG,
AbstractResource.create(g, con, targetTracker, cacheManager, jobManager));
ws.start();
LOG.info("AisView started");
ws.join();
}
示例8: countCellsFromFeed
import dk.dma.ais.reader.AisReaders; //导入依赖的package包/类
@Test
public void countCellsFromFeed() throws IOException, InterruptedException {
final Set<Integer> mmsis = new HashSet<>();
final Set<Cell> cells = new HashSet<>();
final Grid grid = Grid.createSize(200);
final AtomicReference<Long> mCount = new AtomicReference<>(0L);
long start = System.currentTimeMillis();
final DownSampleFilter df = new DownSampleFilter(0);
//AisReader reader = AisReaders.createReaderFromFile("/tmp/ais_dk_76h.txt.gz");
AisReader reader = AisReaders.createReaderFromFile("src/test/resources/ais-sample.txt.gz");
reader.registerPacketHandler(new Consumer<AisPacket>() {
@Override
public void accept(AisPacket p) {
if (df.rejectedByFilter(p)) {
return;
}
AisMessage m = p.tryGetAisMessage();
if (m == null) {
return;
}
mCount.set(mCount.get() + 1);
// Only look at class a position reports
if (!(m instanceof AisPositionMessage)) {
return;
}
mmsis.add(m.getUserId());
AisPositionMessage posM = (AisPositionMessage)m;
Position pos = posM.getValidPosition();
if (pos == null) {
return;
}
cells.add(grid.getCell(pos));
}
});
reader.start();
reader.join();
long elapsed = (System.currentTimeMillis() - start) / 1000;
double rate = (double)mCount.get() / (double)elapsed;
System.out.println(String.format("%-30s %9d", "Elapsed s", elapsed));
System.out.println(String.format("%-30s %9.0f msg/sec", "Message rate", rate));
System.out.println(String.format("%-30s %9d", "Unique mmsi", mmsis.size()));
System.out.println(String.format("%-30s %9d", "Unique cells", cells.size()));
}