func (p *PGeometry) Overlaps(other *Geometry) (bool, error) {
	return p.predicate("overlaps", cGEOSPreparedOverlaps, other)
}
Overlaps computes whether the prepared geometry overlaps the other
prepared geometry.
package geos
import "C"
import (
	"errors"
	"runtime"
)
type PGeometry struct {
	p *C.GEOSPreparedGeometry
}
func PrepareGeometry(g *Geometry) *PGeometry {
	ptr := cGEOSPrepare(g.g)
	p := &PGeometry{ptr}
	runtime.SetFinalizer(p, (*PGeometry).destroy)
	return p
}
func (p *PGeometry) destroy() {
	cGEOSPreparedGeom_destroy(p.p)
	p.p = nil
}
func (p *PGeometry) Contains(other *Geometry) (bool, error) {
	return p.predicate("contains", cGEOSPreparedContains, other)
}
func (p *PGeometry) ContainsP(other *Geometry) (bool, error) {
	return p.predicate("contains", cGEOSPreparedContainsProperly, other)
}
func (p *PGeometry) CoveredBy(other *Geometry) (bool, error) {
	return p.predicate("covered by", cGEOSPreparedCoveredBy, other)
}
func (p *PGeometry) Covers(other *Geometry) (bool, error) {
	return p.predicate("covers", cGEOSPreparedCovers, other)
}
func (p *PGeometry) Crosses(other *Geometry) (bool, error) {
	return p.predicate("crosses", cGEOSPreparedCrosses, other)
}
func (p *PGeometry) Disjoint(other *Geometry) (bool, error) {
	return p.predicate("disjoint", cGEOSPreparedDisjoint, other)
}
func (p *PGeometry) Intersects(other *Geometry) (bool, error) {
	return p.predicate("intersects", cGEOSPreparedIntersects, other)
}