def testCoordinateForPosition3D(self):
   scale = 30 # meters
   encoder = GeospatialCoordinateEncoder(scale, 60)
   coordinate = encoder.coordinateForPosition(
     -122.229194, 37.486782, 1500
   )
   self.assertEqual(coordinate.tolist(), [-90102, -142918, 128710])
 def testRadiusForSpeed(self):
   scale = 30  # meters
   timestep = 60  #seconds
   speed = 50  # meters per second
   encoder = GeospatialCoordinateEncoder(scale, timestep)
   radius = encoder.radiusForSpeed(speed)
   self.assertEqual(radius, 75)
 def testCoordinateForPosition(self):
   scale = 30  # meters
   encoder = GeospatialCoordinateEncoder(scale, 60)
   coordinate = encoder.coordinateForPosition(
     -122.229194, 37.486782
   )
   self.assertEqual(coordinate.tolist(), [-453549, 150239])
  def testReadWrite(self):
    scale = 30 # meters
    timestep = 60 # seconds
    speed = 2.5 # meters per second
    original = GeospatialCoordinateEncoder(scale, timestep, n=999, w=25)
    encode(original, speed, -122.229194, 37.486782, 0)
    encode(original, speed, -122.229294, 37.486882, 100)

    proto1 = GeospatialCoordinateEncoderProto.new_message()
    original.write(proto1)

    # Write the proto to a temp file and read it back into a new proto
    with tempfile.TemporaryFile() as f:
      proto1.write(f)
      f.seek(0)
      proto2 = GeospatialCoordinateEncoderProto.read(f)

    encoder = GeospatialCoordinateEncoder.read(proto2)

    self.assertIsInstance(encoder, GeospatialCoordinateEncoder)
    self.assertEqual(encoder.w, original.w)
    self.assertEqual(encoder.n, original.n)
    self.assertEqual(encoder.name, original.name)
    self.assertEqual(encoder.verbosity, original.verbosity)

    # Compare a new value with the original and deserialized.
    encoding3 = encode(original, speed, -122.229294, 37.486982, 1000)
    encoding4 = encode(encoder, speed, -122.229294, 37.486982, 1000)
    self.assertTrue(np.array_equal(encoding3, encoding4))
 def testRadiusForSpeedInt(self):
   """Test that radius will round to the nearest integer"""
   scale = 30  # meters
   timestep = 62  #seconds
   speed = 25  # meters per second
   encoder = GeospatialCoordinateEncoder(scale, timestep)
   radius = encoder.radiusForSpeed(speed)
   self.assertEqual(radius, 38)
  def testCoordinateForPositionOrigin3D(self):
    scale = 1 # meters
    encoder = GeospatialCoordinateEncoder(scale, 60)
    coordinate = encoder.coordinateForPosition(0,0,0)

    # see WGS80 defining parameters (semi-major axis) on
    # http://en.wikipedia.org/wiki/Geodetic_datum#Parameters_for_some_geodetic_systems
    self.assertEqual(coordinate.tolist(), [6378137, 0, 0])  
 def testRadiusForSpeed0(self):
   scale = 30  # meters
   timestep = 60  #seconds
   speed = 0  # meters per second
   n = 999
   w = 27
   encoder = GeospatialCoordinateEncoder(scale, timestep, n=n, w=w)
   radius = encoder.radiusForSpeed(speed)
   self.assertEqual(radius, 3)
예제 #8
0
    def testEncodeIntoArray(self):
        scale = 30  # meters
        timestep = 60  #seconds
        speed = 2.5  # meters per second
        encoder = GeospatialCoordinateEncoder(scale, timestep, n=999, w=25)
        encoding1 = encode(encoder, speed, -122.229194, 37.486782)
        encoding2 = encode(encoder, speed, -122.229294, 37.486882)
        encoding3 = encode(encoder, speed, -122.229294, 37.486982)

        overlap1 = overlap(encoding1, encoding2)
        overlap2 = overlap(encoding1, encoding3)

        self.assertTrue(overlap1 > overlap2)
예제 #9
0
    def testEncodeIntoArrayAltitude(self):
        scale = 30  # meters
        timestep = 60  # seconds
        speed = 2.5  # meters per second
        longitude, latitude = -122.229294, 37.486782
        encoder = GeospatialCoordinateEncoder(scale, timestep, n=999, w=25)
        encoding1 = encode(encoder, speed, longitude, latitude, 0)
        encoding2 = encode(encoder, speed, longitude, latitude, 100)
        encoding3 = encode(encoder, speed, longitude, latitude, 1000)

        overlap1 = overlap(encoding1, encoding2)
        overlap2 = overlap(encoding1, encoding3)

        self.assertGreater(overlap1, overlap2)
def run(dataPath):
    encoder = GeospatialCoordinateEncoder(10,
                                          10,
                                          n=2048,
                                          w=51,
                                          name='geospatial_coordinate')
    Patcher().patchCoordinateEncoder(encoder, encoder.name)

    with open(dataPath) as csvfile:
        reader = csv.reader(csvfile)
        for row in reader:
            longitude = float(row[2])
            latitude = float(row[3])
            speed = float(row[5])
            encode(encoder, longitude, latitude, speed)
예제 #11
0
 def testCoordinateForPositionOrigin(self):
   scale = 30  # meters
   encoder = GeospatialCoordinateEncoder(scale, 60)
   coordinate = encoder.coordinateForPosition(0, 0)
   self.assertEqual(coordinate.tolist(), [0, 0])