'DRY routine for setting up a GeoQuerySet method that attaches a
Geometry attribute (e.g., `centroid`, `point_on_surface`).'

def _geom_attribute(self, func, tolerance=0.05, **kwargs):

    s = {'select_field': GeomField()}
    if connections[self.db].ops.oracle:
        s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
        s['procedure_args'] = {'tolerance': tolerance}
    return self._spatial_attribute(func, s, **kwargs)
