func (this *Geos) MultiPolygon(polygons []*Geom) *Geom { if len(polygons) == 0 { return nil } polygonPtr := make([]*C.GEOSGeometry, len(polygons)) for i, geom := range polygons { polygonPtr[i] = geom.v } geom := C.GEOSGeom_createCollection_r(this.v, C.GEOS_MULTIPOLYGON, &polygonPtr[0], C.uint(len(polygons))) if geom == nil { return nil } return &Geom{geom} }
func (this *Geos) MultiLineString(lines []*Geom) *Geom { if len(lines) == 0 { return nil } linePtr := make([]*C.GEOSGeometry, len(lines)) for i, geom := range lines { linePtr[i] = geom.v } geom := C.GEOSGeom_createCollection_r(this.v, C.GEOS_MULTILINESTRING, &linePtr[0], C.uint(len(lines))) if geom == nil { return nil } return &Geom{geom} }
func cGEOSGeom_createCollection(_type C.int, geoms **C.GEOSGeometry, ngeoms C.uint) *C.GEOSGeometry { handlemu.Lock() defer handlemu.Unlock() return C.GEOSGeom_createCollection_r(handle, _type, geoms, ngeoms) }