def _do_test_create_geospatial_point_center(self, resources): platformsite_obj = IonObject(RT.PlatformSite, name='TestPlatformSite', description='some new TestPlatformSite') geo_index_obj = IonObject(OT.GeospatialBounds) geo_index_obj.geospatial_latitude_limit_north = 20.0 geo_index_obj.geospatial_latitude_limit_south = 10.0 geo_index_obj.geospatial_longitude_limit_east = 15.0 geo_index_obj.geospatial_longitude_limit_west = 20.0 platformsite_obj.constraint_list = [geo_index_obj] platformsite_id = self.OMS.create_platform_site(platformsite_obj) # now get the dp back to see if it was updated platformsite_obj = self.OMS.read_platform_site(platformsite_id) self.assertEquals('some new TestPlatformSite', platformsite_obj.description) self.assertAlmostEqual(15.0, platformsite_obj.geospatial_point_center.lat, places=1) #now adjust a few params platformsite_obj.description = 'some old TestPlatformSite' geo_index_obj = IonObject(OT.GeospatialBounds) geo_index_obj.geospatial_latitude_limit_north = 30.0 geo_index_obj.geospatial_latitude_limit_south = 20.0 platformsite_obj.constraint_list = [geo_index_obj] update_result = self.OMS.update_platform_site(platformsite_obj) # now get the dp back to see if it was updated platformsite_obj = self.OMS.read_platform_site(platformsite_id) self.assertEquals('some old TestPlatformSite', platformsite_obj.description) self.assertAlmostEqual(25.0, platformsite_obj.geospatial_point_center.lat, places=1) self.OMS.force_delete_platform_site(platformsite_id)
def test_midpoint(self): geospatial_bounds = IonObject("GeospatialBounds") geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_longitude_limit_west = -10 # Basic test #TODO. do we really want calc_geospatial_point_center() to return string? mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, -180) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 179 geospatial_bounds.geospatial_longitude_limit_west = -179 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, -180.0) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) geospatial_bounds.geospatial_longitude_limit_east = -179 geospatial_bounds.geospatial_longitude_limit_west = 179 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lon, -180.0) geospatial_bounds.geospatial_latitude_limit_north = 90 geospatial_bounds.geospatial_latitude_limit_south = -90 geospatial_bounds.geospatial_longitude_limit_east = 0 geospatial_bounds.geospatial_longitude_limit_west = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) # MM: changed this: if the same values are given, we expect a point not the full globe #self.assertAlmostEqual(mid_point.lon, -180.0) geospatial_bounds.geospatial_latitude_limit_north = 40 geospatial_bounds.geospatial_latitude_limit_south = 50 geospatial_bounds.geospatial_longitude_limit_east = -75 geospatial_bounds.geospatial_longitude_limit_west = -125 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, -102.328727, 6) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, -102.328727, 6) mid_point = GeoUtils.calc_geospatial_point_center( geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, 77.671273, 6) geospatial_bounds.geospatial_longitude_limit_west = 165 geospatial_bounds.geospatial_latitude_limit_north = 5 geospatial_bounds.geospatial_longitude_limit_east = -170 geospatial_bounds.geospatial_latitude_limit_south = 5 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 5.121583, 6) self.assertAlmostEqual(mid_point.lon, 177.5, 6) geospatial_bounds.geospatial_longitude_limit_west = 65 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 165 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 115.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 10.0 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = -150 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 110.0, 6) geospatial_bounds.geospatial_longitude_limit_west = -150 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 170 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 10.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 30 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, -160.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 10 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 50 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 30.0, 6) geospatial_bounds.geospatial_longitude_limit_west = -170 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = -10 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, -90.0, 6) # Bad requests with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance="spacetime") geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_longitude_limit_west = -181 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 181 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -91 geospatial_bounds.geospatial_longitude_limit_east = 181 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 91 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 0 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds)
def test_midpoint(self): geospatial_bounds = IonObject("GeospatialBounds") geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_longitude_limit_west = -10 # Basic test #TODO. do we really want calc_geospatial_point_center() to return string? mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, -180) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 179 geospatial_bounds.geospatial_longitude_limit_west = -179 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, -180.0) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) geospatial_bounds.geospatial_longitude_limit_east = -179 geospatial_bounds.geospatial_longitude_limit_west = 179 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lon, -180.0) geospatial_bounds.geospatial_latitude_limit_north = 90 geospatial_bounds.geospatial_latitude_limit_south = -90 geospatial_bounds.geospatial_longitude_limit_east = 0 geospatial_bounds.geospatial_longitude_limit_west = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0) self.assertAlmostEqual(mid_point.lon, 0.0) # MM: changed this: if the same values are given, we expect a point not the full globe #self.assertAlmostEqual(mid_point.lon, -180.0) geospatial_bounds.geospatial_latitude_limit_north = 40 geospatial_bounds.geospatial_latitude_limit_south = 50 geospatial_bounds.geospatial_longitude_limit_east = -75 geospatial_bounds.geospatial_longitude_limit_west = -125 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, -102.328727, 6) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_SHORTEST) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, -102.328727, 6) mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance=GeoUtils.DISTANCE_LONGEST) self.assertAlmostEqual(mid_point.lat, 47.801397, 6) self.assertAlmostEqual(mid_point.lon, 77.671273, 6) geospatial_bounds.geospatial_longitude_limit_west = 165 geospatial_bounds.geospatial_latitude_limit_north = 5 geospatial_bounds.geospatial_longitude_limit_east = -170 geospatial_bounds.geospatial_latitude_limit_south = 5 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 5.121583, 6) self.assertAlmostEqual(mid_point.lon, 177.5, 6) geospatial_bounds.geospatial_longitude_limit_west = 65 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 165 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 115.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 10.0 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = -150 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 110.0, 6) geospatial_bounds.geospatial_longitude_limit_west = -150 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 170 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 10.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 30 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, -160.0, 6) geospatial_bounds.geospatial_longitude_limit_west = 10 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = 50 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, 30.0, 6) geospatial_bounds.geospatial_longitude_limit_west = -170 geospatial_bounds.geospatial_latitude_limit_north = 0 geospatial_bounds.geospatial_longitude_limit_east = -10 geospatial_bounds.geospatial_latitude_limit_south = 0 mid_point = GeoUtils.calc_geospatial_point_center(geospatial_bounds) self.assertAlmostEqual(mid_point.lat, 0.0, 6) self.assertAlmostEqual(mid_point.lon, -90.0, 6) # Bad requests with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds, distance="spacetime") geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 10 geospatial_bounds.geospatial_longitude_limit_west = -181 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 181 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 10 geospatial_bounds.geospatial_latitude_limit_south = -91 geospatial_bounds.geospatial_longitude_limit_east = 181 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds) geospatial_bounds.geospatial_latitude_limit_north = 91 geospatial_bounds.geospatial_latitude_limit_south = -10 geospatial_bounds.geospatial_longitude_limit_east = 0 geospatial_bounds.geospatial_longitude_limit_west = -10 with self.assertRaises(BadRequest): GeoUtils.calc_geospatial_point_center(geospatial_bounds)