'Compare geographic value of data with its initial value.'

def _has_changed(self, initial, data):

    if isinstance(initial, six.string_types):
        try:
            initial = GEOSGeometry(initial)
        except (GEOSException, ValueError):
            initial = None
    if (initial and data):
        data = fromstr(data)
        data.transform(initial.srid)
        return (not initial.equals_exact(data, tolerance=1e-06))
    else:
        return (bool(initial) != bool(data))
