code: def from_gdal(cls, rpcs):
      """Deserialize dict values to float or list.
  
  
      Returns
      -------
      RPC
      """
      out = {}
  
      for key, val in rpcs.items():
          # Four items have 20 floats in their values.
          if key in {
              "LINE_NUM_COEFF",
              "LINE_DEN_COEFF",
              "SAMP_NUM_COEFF",
              "SAMP_DEN_COEFF",
          }:
              out[key] = [float(v) for v in val.split(maxsplit=20)[:20]]
          # All other items have one float in their values but might also contain non-conforming extra text.
          else:
              out[key] = float(val.split(maxsplit=1)[0])
  
      return cls(
          err_bias=out.get("ERR_BIAS"),
          err_rand=out.get("ERR_RAND"),
          height_off=out["HEIGHT_OFF"],
          height_scale=out["HEIGHT_SCALE"],
          lat_off=out["LAT_OFF"],
          lat_scale=out["LAT_SCALE"],
          line_den_coeff=out["LINE_DEN_COEFF"],
          line_num_coeff=out["LINE_NUM_COEFF"],
          line_off=out["LINE_OFF"],
          line_scale=out["LINE_SCALE"],
          long_off=out["LONG_OFF"],
          long_scale=out["LONG_SCALE"],
          samp_den_coeff=out["SAMP_DEN_COEFF"],
          samp_num_coeff=out["SAMP_NUM_COEFF"],
          samp_off=out["SAMP_OFF"],
          samp_scale=out["SAMP_SCALE"],
      )
  
imports: import attr
label_desc: Use image node_id 3 for calling the RPC obj's underlying member method code with example usage: obj.from_gdal(cls, rpcs) and returns: cls