<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_nearest_observation_site(self, latitude=None, longitude=None):
 """ This function returns the nearest Site to the specified coordinates that supports observations """

        if longitude is None:
            print('ERROR: No longitude given.')
            return False

        if latitude is None:
            print('ERROR: No latitude given.')
            return False

        nearest = False
        distance = None
        sites = self.get_observation_sites()
        for site in sites:
            new_distance = \
                self._distance_between_coords(
                    float(site.longitude),
                    float(site.latitude),
                    float(longitude),
                    float(latitude))

            if ((distance == None) or (new_distance < distance)):
                distance = new_distance
                nearest = site

        # If the nearest site is more than 20km away, raise an error
        if distance > 20:
            raise APIException("There is no site within 30km.")

        return nearest