Exemple #1
0
def testCooper():
    ies.setDataUri(
        dataUri
    )  #Make sure that any auto-generated IDs follow the URI stub we're using.

    mmsis = ['234234000', '235083854', '356793000']
    startTime = "2021-08-11T10:47:48"
    endTime = "2021-08-11T14:01:22"
    vesselSTs = [
        "2021-08-11T10:47:48", "2021-08-11T10:47:48", "2021-08-11T11:18:15"
    ]  #The third vessel joins late
    vesselETs = [
        "2021-08-11T14:01:22", "2021-08-11T12:50:41", "2021-08-11T14:01:22"
    ]  #The second vessel leaves early

    cooper = cooperingAtSea(iesGraph, startTime, endTime, mmsis, 0.3,
                            "2021-08-12T09:00:00", True, vesselSTs, vesselETs)

    ies.saveRdf(iesGraph, "track-analytics.ttl")
Exemple #2
0
def testDestination():
    predictedDestination(
        iesGraph, '234234000',
        [["Pontefract", "GB POF", "GBR", 0.5], ["Hull", "GB HUL", "GBR", 0.3],
         ["Ackworth", "GB AMT ", "GBR", 0.2]], "2021-08-12T09:00:00")
    ies.saveRdf(iesGraph, "ta-pred-dest.ttl")
Exemple #3
0
def exportTrack(iesGraph, track, output="file", epsgCode="4326"):
    #The track dictionary should already have min and max timestamps for the pings it contains
    ies.initialiseGraph(iesGraph=iesGraph)
    #Add a parent observation
    obs = ies.instantiate(iesGraph=iesGraph, _class=ies.observation)
    ies.startsIn(iesGraph=iesGraph,
                 item=obs,
                 timeString=track["minDateTime"].isoformat())
    ies.endsIn(iesGraph=iesGraph,
               item=obs,
               timeString=track["maxDateTime"].isoformat())
    measures = dict({})
    #Now add the measure classes for Speed Over Ground and Course Over Ground...and knots for the Unit Of Measure
    measures["sogClass"] = ies.instantiate(iesGraph=iesGraph,
                                           _class=ies.classOfMeasure,
                                           instance=URIRef(ies.dataUri +
                                                           "SpeedOverGround"))
    measures["cogClass"] = ies.instantiate(iesGraph=iesGraph,
                                           _class=ies.classOfMeasure,
                                           instance=URIRef(ies.dataUri +
                                                           "CourseOverGround"))
    measures["knots"] = ies.instantiate(iesGraph=iesGraph,
                                        _class=ies.unitOfMeasure,
                                        instance=URIRef(ies.dataUri + "Knots"))
    measures["degTN"] = ies.instantiate(iesGraph=iesGraph,
                                        _class=ies.unitOfMeasure,
                                        instance=URIRef(ies.dataUri +
                                                        "DegreesTrueNorth"))
    ies.addName(iesGraph=iesGraph,
                item=measures["sogClass"],
                nameString="Speed Over Ground")
    ies.addName(iesGraph=iesGraph,
                item=measures["cogClass"],
                nameString="Course Over Ground")
    ies.addName(iesGraph=iesGraph, item=measures["knots"], nameString="knots")
    ies.addName(iesGraph=iesGraph,
                item=measures["degTN"],
                nameString="degrees true North")
    #add the location transponder - We don't know this is necessarily a vessel. All we know is that we have a LocationTransponder.
    lt = ies.createLocationTransponder(iesGraph=iesGraph, mmsi=track["id"])
    obsvd = ies.instantiate(iesGraph=iesGraph, _class=ies.observedTarget)
    ies.addToGraph(iesGraph=iesGraph, subject=obsvd, predicate=ies.ipo, obj=lt)
    ies.addToGraph(iesGraph=iesGraph,
                   subject=obsvd,
                   predicate=ies.ipi,
                   obj=obs)
    #now go through the individual location observations and add those...
    for ping in track["pings"]:
        createLocationObservation(iesGraph=iesGraph,
                                  ping=ping,
                                  transponder=lt,
                                  obs=obs,
                                  measures=measures)
    if output == "kafka":
        ies.sendToKafka(iesGraph=iesGraph,
                        kProducer=kafkaBroker,
                        kTopic=iesKafkaTopic)
    else:
        ies.saveRdf(
            iesGraph, './data/track' + track["id"] + '-' +
            str(track["counter"]) + '.ies.ttl')
Exemple #4
0
import pickle
import ies_stone_soup as iesss
import ies_functions as ies
import stonesoup
import numpy as np

from stonesoup.models.measurement.linear import LinearGaussian
measurement_model = LinearGaussian(ndim_state=4,
                                   mapping=[0, 2],
                                   noise_covar=np.diag([15, 15]))

file = open("./ss.pkl", "rb")
tracks = pickle.load(file)

iesGraph = ies.initialiseGraph()

for track in tracks:
    print(track.metadata)
    iesss.exportStoneSoupTrack(iesGraph,
                               track.id,
                               track.states,
                               measurement_model.mapping,
                               targetId=track.metadata["MMSI"],
                               epsgCode=32630)

ies.saveRdf(iesGraph, "./ss.ttl")
Exemple #5
0
        assr = ies.instantiate(iesGraph=iesGraph, _class=ies.assessor)
        ies.addToGraph(iesGraph=iesGraph,
                       subject=assr,
                       predicate=ies.ipi,
                       obj=assessment)
        ies.addToGraph(iesGraph=iesGraph,
                       subject=assr,
                       predicate=ies.ipo,
                       obj=inferenceSystem)
        #Now put the assessment in a period - i.e. when the assessment was done
        ies.putInPeriod(iesGraph=iesGraph,
                        item=assessment,
                        timeString="2007-01-02T09:17:04")


#Set up the rdf graph
graph = ies.initialiseGraph(None)
#Now say one is following the other (they're not, but I didn't have any data where ships followed each other)
#First we create an object for the system that detected it.
hal = ies.instantiate(iesGraph=graph, _class=ies.system)
ies.addName(iesGraph=graph, item=hal, nameString="HAL")
#now create the following pattern, with our system included as the assessor
following(iesGraph=graph,
          followerMMSI="367000150",
          followedMMSI="366952890",
          startTimeStamp="2007-01-01T00:00:09",
          endTimeStamp="2007-01-01T00:05:40",
          inferenceSystem=hal)

ies.saveRdf(graph=graph, filename='following.ies.ttl')