Source code for pyowm.agroapi10.polygon

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pyowm.utils.geo import GeometryBuilder
from pyowm.utils.geo import Point as GeoPoint
from pyowm.utils.geo import Polygon as GeoPolygon


[docs] class Polygon: """ A Polygon feature, foundational element for all Agro API operations :param id: the polygon's ID :type id: str :param name: the polygon's name :type namr: str :param geopolygon: the `pyowm.utils.geo.Polygon` instance that represents this polygon :type geopolygon: `pyowm.utils.geo.Polygon` :param center: the `pyowm.utils.geo.Point` instance that represents the central point of the polygon :type center: `pyowm.utils.geo.Point` :param area: the area of the polygon in hectares :type area: float or int :param user_id: the ID of the user owning this polygon :type user_id: str :returns: a `Polygon` instance :raises: `AssertionError` when either id is `None` or geopolygon, center or area have wrong type """ def __init__(self, id, name=None, geopolygon=None, center=None, area=None, user_id=None): assert id is not None, 'Polygon ID cannot be None' if geopolygon is not None: assert isinstance(geopolygon, GeoPolygon), 'Polygon must be a valid geopolygon type' if center is not None: assert isinstance(center, GeoPoint), 'Polygon center must be a valid geopoint type' if area is not None: assert isinstance(area, (float, int)), 'Area must be a numeric type' assert area >= 0, 'Area must not be negative' self.id = id self.name = name self.geopolygon = geopolygon self.center = center self.area = area self.user_id = user_id @property def area_km(self): if self.area: return self.area * 0.01 return None
[docs] @classmethod def from_dict(cls, the_dict): assert isinstance(the_dict, dict) the_id = the_dict.get('id', None) geojson = the_dict.get('geo_json', {}).get('geometry', None) name = the_dict.get('name', None) center = the_dict.get('center', None) area = the_dict.get('area', None) user_id =the_dict.get('user_id', None) geopolygon = GeometryBuilder.build(geojson) try: center = GeoPoint(center[0], center[1]) except: raise ValueError('Wrong format for polygon center coordinates') return Polygon(the_id, name, geopolygon, center, area, user_id)
def __repr__(self): return "<%s.%s - id=%s, name=%s, area=%s>" % (__name__, self.__class__.__name__, self.id, self.name, str(self.area))