예제 #1
0
    def soil_data(self, polygon):
        """
        Retrieves the latest soil data on the specified polygon

        :param polygon: the reference polygon you want soil data for
        :type polygon: `pyowm.agro10.polygon.Polygon` instance
        :returns: a `pyowm.agro10.soil.Soil` instance

        """
        assert polygon is not None
        assert isinstance(polygon, Polygon)
        polyd = polygon.id
        status, data = self.http_client.get_json(
            SOIL_URI,
            params={
                'appid': self.API_key,
                'polyid': polyd
            },
            headers={'Content-Type': 'application/json'})
        the_dict = {
            'reference_time': data['dt'],
            'surface_temp': data['t0'],
            'ten_cm_temp': data['t10'],
            'moisture': data['moisture'],
            'polygon_id': polyd,
        }

        return Soil.from_dict(the_dict)
예제 #2
0
파일: test_soil.py 프로젝트: csparpa/pyowm
 def test_from_dict(self):
     ref_time = 12345567
     surf_temp = 11.2
     ten_cm_temp = 9.5
     moisture = 8.2
     pol_id = "5abb9fb82c8897000bde3e87"
     the_dict = {
         "reference_time": ref_time,
         "surface_temp": surf_temp,
         "ten_cm_temp": ten_cm_temp,
         "moisture": moisture,
         "polygon_id": pol_id
     }
     expected = Soil(ref_time, surf_temp, ten_cm_temp, moisture, pol_id)
     result = Soil.from_dict(the_dict)
     self.assertEqual(expected.reference_time(), result.reference_time())
     self.assertEqual(expected.surface_temp(), result.surface_temp())
     self.assertEqual(expected.ten_cm_temp(), result.ten_cm_temp())
     self.assertEqual(expected.moisture, result.moisture)
     self.assertEqual(expected.polygon_id, result.polygon_id)
예제 #3
0
    def soil_data(self, polygon):
        """
        Retrieves the latest soil data on the specified polygon

        :param polygon: the reference polygon you want soil data for
        :type polygon: `pyowm.agro10.polygon.Polygon` instance
        :returns: a `pyowm.agro10.soil.Soil` instance

        """
        assert polygon is not None
        assert isinstance(polygon, Polygon)
        polyd = polygon.id
        status, data = self.http_client.get_json(
            SOIL_URI,
            params={'appid': self.API_key,
                    'polyid': polyd},
            headers={'Content-Type': 'application/json'})
        the_dict = dict()
        the_dict['reference_time'] = data['dt']
        the_dict['surface_temp'] = data['t0']
        the_dict['ten_cm_temp'] = data['t10']
        the_dict['moisture'] = data['moisture']
        the_dict['polygon_id'] = polyd
        return Soil.from_dict(the_dict)
 def test_from_dict(self):
     ref_time = 12345567
     surf_temp = 11.2
     ten_cm_temp = 9.5
     moisture = 8.2
     pol_id = "5abb9fb82c8897000bde3e87"
     the_dict = {
         "reference_time": ref_time,
         "surface_temp": surf_temp,
         "ten_cm_temp": ten_cm_temp,
         "moisture": moisture,
         "polygon_id": pol_id
     }
     expected = Soil(ref_time, surf_temp, ten_cm_temp, moisture, pol_id)
     result = Soil.from_dict(the_dict)
     self.assertEqual(expected.reference_time(), result.reference_time())
     self.assertEqual(expected.surface_temp(), result.surface_temp())
     self.assertEqual(expected.ten_cm_temp(), result.ten_cm_temp())
     self.assertEqual(expected.moisture, result.moisture)
     self.assertEqual(expected.polygon_id, result.polygon_id)
class TestSoil(unittest.TestCase):

    test_reference_time = 1378459200
    test_iso_reference_time = "2013-09-06 09:20:00+00:00"
    test_date_reference_time = datetime.strptime(
        test_iso_reference_time,
        '%Y-%m-%d %H:%M:%S+00:00').replace(tzinfo=UTC())
    test_temperature = 294.199
    test_celsius_temperature = 21.049
    test_fahrenheit_temperature = 69.888
    test_moisture = 45.6
    test_polygon_id = 'my-polygon'
    test_instance = Soil(test_reference_time, test_temperature,
                         test_temperature, test_moisture, test_polygon_id)

    def test_soil_fails_with_wrong_parameters(self):
        self.assertRaises(AssertionError, Soil, None, 12.4, 11.8, 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 'wrong', 12.4, 11.8, 80.2,
                          'my-polygon')
        self.assertRaises(ValueError, Soil, -345, 12.4, 11.8, 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, None, 11.8, 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, 'wrong', 11.8, 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, 12.4, None, 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, 12.4, 'wrong', 80.2,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, 12.4, 11.8, None,
                          'my-polygon')
        self.assertRaises(AssertionError, Soil, 1234567, 12.4, 11.8, "'wrong",
                          'my-polygon')
        self.assertRaises(ValueError, Soil, 1234567, 12.4, 11.8, -45.6,
                          'my-polygon')

    def test_reference_time_returning_different_formats(self):

        self.assertEqual(self.test_instance.reference_time(timeformat='unix'),
                         self.test_reference_time)
        self.assertEqual(self.test_instance.reference_time(timeformat='iso'),
                         self.test_iso_reference_time)
        self.assertEqual(self.test_instance.reference_time(timeformat='date'),
                         self.test_date_reference_time)

    def test_reference_time_fails_with_unknown_timeformat(self):
        self.assertRaises(ValueError, Soil.reference_time, self.test_instance,
                          'xyz')

    def test_from_dict(self):
        ref_time = 12345567
        surf_temp = 11.2
        ten_cm_temp = 9.5
        moisture = 8.2
        pol_id = "5abb9fb82c8897000bde3e87"
        the_dict = {
            "reference_time": ref_time,
            "surface_temp": surf_temp,
            "ten_cm_temp": ten_cm_temp,
            "moisture": moisture,
            "polygon_id": pol_id
        }
        expected = Soil(ref_time, surf_temp, ten_cm_temp, moisture, pol_id)
        result = Soil.from_dict(the_dict)
        self.assertEqual(expected.reference_time(), result.reference_time())
        self.assertEqual(expected.surface_temp(), result.surface_temp())
        self.assertEqual(expected.ten_cm_temp(), result.ten_cm_temp())
        self.assertEqual(expected.moisture, result.moisture)
        self.assertEqual(expected.polygon_id, result.polygon_id)

    def test_to_dict(self):
        expected = dict(reference_time=self.test_reference_time,
                        surface_temp=self.test_temperature,
                        ten_cm_temp=self.test_temperature,
                        moisture=self.test_moisture,
                        polygon_id=self.test_polygon_id)
        result = self.test_instance.to_dict()
        self.assertEqual(expected, result)

    def test_returning_different_units_for_temperatures(self):
        # Surface temp
        result_kelvin = self.test_instance.surface_temp(unit='kelvin')
        result_celsius = self.test_instance.surface_temp(unit='celsius')
        result_fahrenheit = self.test_instance.surface_temp(unit='fahrenheit')
        self.assertAlmostEqual(result_kelvin, self.test_temperature, delta=0.1)
        self.assertAlmostEqual(result_celsius,
                               self.test_celsius_temperature,
                               delta=0.1)
        self.assertAlmostEqual(result_fahrenheit,
                               self.test_fahrenheit_temperature,
                               delta=0.1)

        # 10 cm temp
        result_kelvin = self.test_instance.ten_cm_temp(unit='kelvin')
        result_celsius = self.test_instance.ten_cm_temp(unit='celsius')
        result_fahrenheit = self.test_instance.ten_cm_temp(unit='fahrenheit')
        self.assertAlmostEqual(result_kelvin, self.test_temperature, delta=0.1)
        self.assertAlmostEqual(result_celsius,
                               self.test_celsius_temperature,
                               delta=0.1)
        self.assertAlmostEqual(result_fahrenheit,
                               self.test_fahrenheit_temperature,
                               delta=0.1)

    def test_trying_unknown_units_for_temperatures(self):
        self.assertRaises(ValueError, Soil.surface_temp, self.test_instance,
                          'xyz')
        self.assertRaises(ValueError, Soil.ten_cm_temp, self.test_instance,
                          'xyz')

    def test_repr(self):
        instance = Soil(1234567, 12.4, 11.8, 80.2, 'my-polygon')
        repr(instance)
        instance = Soil(1234567, 12.4, 11.8, 80.2, None)
        repr(instance)
 def test_repr(self):
     instance = Soil(1234567, 12.4, 11.8, 80.2, 'my-polygon')
     repr(instance)
     instance = Soil(1234567, 12.4, 11.8, 80.2, None)
     repr(instance)