SEXP RGDAL_CopyDataset(SEXP sxpDataset, SEXP sxpDriver, SEXP sxpStrict, SEXP sxpOpts, SEXP sxpFile) { GDALDataset *pDataset = getGDALDatasetPtr(sxpDataset); const char *filename = asString(sxpFile); if (filename == NULL) error("Invalid filename\n"); GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); GDALDataset *pDatasetCopy = pDriver->CreateCopy(filename, pDataset, asInteger(sxpStrict), NULL, NULL, NULL); if (pDatasetCopy == NULL) error("Dataset copy failed\n"); SEXP sxpHandle = R_MakeExternalPtr((void *) pDatasetCopy, mkChar("GDAL Dataset"), R_NilValue); return(sxpHandle); }
SEXP RGDAL_GetDriverLongName(SEXP sxpDriver) { GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); return(mkString_safe(GDALGetDriverLongName( pDriver ))); }
SEXP RGDAL_GetDriverLongName(SEXP sxpDriver) { GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); installErrorHandler(); const char *desc = GDALGetDriverLongName( pDriver ); uninstallErrorHandlerAndTriggerError(); return(mkString_safe(desc)); }
SEXP RGDAL_DeleteFile(SEXP sxpDriver, SEXP sxpFileName) { GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); const char *filename = asString(sxpFileName); deleteFile(pDriver, filename); return(R_NilValue); }
SEXP RGDAL_CreateDataset(SEXP sxpDriver, SEXP sDim, SEXP sType, SEXP sOpts, SEXP sFile) { GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); GDALDataset *pDataset; const char *filename = asString(sFile); int i, n; #ifdef RGDALDEBUG fprintf(stderr, "Opening dataset: %s\n", filename); fflush(stderr); #endif if (filename == NULL) error("Invalid file name\n"); GDALDataType eGDALType = (GDALDataType) asInteger(sType); if (isNull(sOpts)) { char **opts = NULL; pDataset = pDriver->Create(filename, INTEGER(sDim)[0], INTEGER(sDim)[1], INTEGER(sDim)[2], eGDALType, opts); } else { n = length(sOpts); char *opts[n]; for (i=0; i < n; i++) opts[i] = CHAR(STRING_ELT(sOpts, i)); #ifdef RGDALDEBUG for (i=0; i < n; i++) Rprintf("option: %s\n", opts[i]); #endif pDataset = pDriver->Create(filename, INTEGER(sDim)[0], INTEGER(sDim)[1], INTEGER(sDim)[2], eGDALType, opts); } if (pDataset == NULL) error("Unable to create dataset\n"); pDataset->SetDescription(filename); SEXP sxpHandle = R_MakeExternalPtr((void *) pDataset, mkChar("GDAL Dataset"), R_NilValue); return(sxpHandle); }
SEXP RGDAL_CreateDataset(SEXP sxpDriver, SEXP sDim, SEXP sType, SEXP sOpts, SEXP sFile) { GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); GDALDataset *pDataset; const char *filename = asString(sFile); int i/*, n*/; char **papszCreateOptions = NULL; #ifdef RGDALDEBUG Rprintf("Opening dataset: %s\n", filename); // fflush(stderr); #endif if (filename == NULL) error("Invalid file name\n"); GDALDataType eGDALType = (GDALDataType) asInteger(sType); installErrorHandler(); for (i=0; i < length(sOpts); i++) papszCreateOptions = CSLAddString( papszCreateOptions, CHAR(STRING_ELT(sOpts, i)) ); #ifdef RGDALDEBUG for (i=0; i < CSLCount(papszCreateOptions); i++) Rprintf("option %d: %s\n", i, CSLGetField(papszCreateOptions, i)); #endif uninstallErrorHandlerAndTriggerError(); installErrorHandler(); pDataset = pDriver->Create(filename, INTEGER(sDim)[0], INTEGER(sDim)[1], INTEGER(sDim)[2], eGDALType, papszCreateOptions); uninstallErrorHandlerAndTriggerError(); installErrorHandler(); CSLDestroy(papszCreateOptions); uninstallErrorHandlerAndTriggerError(); if (pDataset == NULL) error("Unable to create dataset\n"); installErrorHandler(); pDataset->SetDescription(filename); uninstallErrorHandlerAndTriggerError(); SEXP sxpHandle = R_MakeExternalPtr((void *) pDataset, mkChar("GDAL Dataset"), R_NilValue); return(sxpHandle); }
SEXP RGDAL_CopyDataset(SEXP sxpDataset, SEXP sxpDriver, SEXP sxpStrict, SEXP sxpOpts, SEXP sxpFile) { GDALDataset *pDataset = getGDALDatasetPtr(sxpDataset); char **papszCreateOptions = NULL; int i; const char *filename = asString(sxpFile); if (filename == NULL) error("Invalid filename\n"); GDALDriver *pDriver = getGDALDriverPtr(sxpDriver); installErrorHandler(); for (i=0; i < length(sxpOpts); i++) papszCreateOptions = CSLAddString( papszCreateOptions, CHAR(STRING_ELT(sxpOpts, i)) ); uninstallErrorHandlerAndTriggerError(); #ifdef RGDALDEBUG installErrorHandler(); for (i=0; i < CSLCount(papszCreateOptions); i++) Rprintf("option %d: %s\n", i, CSLGetField(papszCreateOptions, i)); uninstallErrorHandlerAndTriggerError(); #endif installErrorHandler(); GDALDataset *pDatasetCopy = pDriver->CreateCopy(filename, pDataset, asInteger(sxpStrict), papszCreateOptions, NULL, NULL); uninstallErrorHandlerAndTriggerError(); if (pDatasetCopy == NULL) error("Dataset copy failed\n"); installErrorHandler(); CSLDestroy(papszCreateOptions); uninstallErrorHandlerAndTriggerError(); SEXP sxpHandle = R_MakeExternalPtr((void *) pDatasetCopy, mkChar("GDAL Dataset"), R_NilValue); return(sxpHandle); }