Clojure has a built in function, iterator-seq, which converts a java.util.Iterator to a lazy-seq. Lazy-seq's keep a copy of each data item that they have grabbed from the iterator, so they hide the mutability of Iterators.
Your interface doesn't subclass java.util.Iterator though, so you would need to make something similar.
I haven't tested this, but maybe something like this:
(defn pathiterator-seq
[i]
(when-not (.isDone i)
(lazy-seq
(.next i)
(let [arr (make-array Double/TYPE 6)
type (.currentSegment i arr)]
(cons {:type type :coords (into [] arr)}
(pathiterator-seq i))))))
--
Dave