Il problema è che la variabile $Q non contiene un valore valido, presumibilmente perché il valore passato in $station1 non esiste nel database. Avrei pensato che CI avrebbe contrastato questo utilizzando almeno una stringa tra virgolette vuota, ma a quanto pare no.
Devi convalidare quel $Q contiene un valore ragionevole prima di passarlo a where() . Ad esempio, un altro num_rows() check ti dirà se la prima query ha trovato qualcosa.
Inoltre, devi passare i dati del campo da $Q , non solo l'oggetto. Quindi nel tuo caso, $Q->row()->Zone .