docs: def write_observation_zone(self, **kw):
          """
          Write an observation zone declaration to the file::
  
              writer.write_observation_zone(
                  type=ObservationZoneType.CYLINDER,
                  radius=30000,
              )
  
              # <ObservationZone type="Cylinder" radius="30000"/>
  
          The required parameters depend on the type parameter. Different
          observation zone types require different parameters.
  
          :param type: observation zone type (one of the constants in
              :class:`~aerofiles.xcsoar.constants.ObservationZoneType`)
  
          :param length: length of the line
              (only used with type
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.LINE`)
          :param radius: (outer) radius of the observation zone
              (used with types
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.CYLINDER`,
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.SECTOR`,
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.SYMMETRIC_QUADRANT` and
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.CUSTOM_KEYHOLE`)
          :param inner_radius: inner radius of the observation zone
              (only used with type
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.CUSTOM_KEYHOLE`)
          :param angle: angle of the observation zone
              (only used with type
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.CUSTOM_KEYHOLE`)
          :param start_radial: start radial of the observation zone
              (only used with type
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.SECTOR`)
          :param end_radial: end radial of the observation zone
              (only used with type
              :const:`~aerofiles.xcsoar.constants.ObservationZoneType.SECTOR`)
          """
  
          assert 'type' in kw
  
          if kw['type'] == ObservationZoneType.LINE:
              assert 'length' in kw
  
          elif kw['type'] == ObservationZoneType.CYLINDER:
              assert 'radius' in kw
  
          elif kw['type'] == ObservationZoneType.SECTOR:
              assert 'radius' in kw
              assert 'start_radial' in kw
              assert 'end_radial' in kw
  
          elif kw['type'] == ObservationZoneType.SYMMETRIC_QUADRANT:
              assert 'radius' in kw
  
          elif kw['type'] == ObservationZoneType.CUSTOM_KEYHOLE:
              assert 'radius' in kw
              assert 'inner_radius' in kw
              assert 'angle' in kw
  
          self.write_tag('ObservationZone', **kw)