// Create a new layer on the data source func (ds DataSource) CreateLayer( name string, sr SpatialReference, geomType GeometryType, options []string, ) Layer { cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) length := len(options) opts := make([]*C.char, length+1) for i := 0; i < length; i++ { opts[i] = C.CString(options[i]) defer C.free(unsafe.Pointer(opts[i])) } opts[length] = (*C.char)(unsafe.Pointer(nil)) layer := C.OGR_DS_CreateLayer( ds.cval, cName, sr.cval, C.OGRwkbGeometryType(geomType), (**C.char)(unsafe.Pointer(&opts[0])), ) return Layer{layer} }
// Set the geometry base type for this feature definition func (fd FeatureDefinition) SetGeometryType(geomType GeometryType) { C.OGR_FD_SetGeomType(fd.cval, C.OGRwkbGeometryType(geomType)) }
// Create an empty geometry of the desired type func Create(geomType GeometryType) Geometry { geom := C.OGR_G_CreateGeometry(C.OGRwkbGeometryType(geomType)) return Geometry{geom} }