Example #1
0
SEXP
RGDAL_GenCMap(SEXP input1, SEXP input2, SEXP input3, SEXP output, SEXP nColors, SEXP setCMap) {
	
	GDALRasterBand* band1 = getGDALRasterPtr(input1);
	GDALRasterBand* band2 = getGDALRasterPtr(input2);
	GDALRasterBand* band3 = getGDALRasterPtr(input3);
		
	GDALColorTable ctab;
	
	int ncol = asInteger(nColors);
	
	if (ncol < 2 || ncol > 256)
		error("Number of colors should range from 2 to 256");
	
        installErrorHandler();
	int err = GDALComputeMedianCutPCT(band1, band2, band3, NULL,
	                                  ncol, &ctab, NULL, NULL); 
	
	if (err == CE_Failure) {
          uninstallErrorHandlerAndTriggerError();
          error("Error generating color table");
	}
        uninstallErrorHandlerAndTriggerError();
	if (output != R_NilValue) {
		
		GDALRasterBand* target = getGDALRasterPtr(output);
	
                installErrorHandler();
		err = GDALDitherRGB2PCT(band1, band2, band3, target, &ctab, NULL, NULL);
	
		if (err == CE_Failure) {
                  uninstallErrorHandlerAndTriggerError();
                  error("Image dithering failed");
                }
                uninstallErrorHandlerAndTriggerError();
	
		if (asLogical(setCMap)) {
			
                        installErrorHandler();
			err = GDALSetRasterColorTable(target, &ctab);
	
			if (err == CE_Failure) {
                          uninstallErrorHandlerAndTriggerError();
                          warning("Unable to set color table");
                        }
                        uninstallErrorHandlerAndTriggerError();
			
		}
		
	}   	
	
	return(GDALColorTable2Matrix(&ctab));
	
}
Example #2
0
SEXP
RGDAL_GetColorTable(SEXP rasterObj) {

	GDALRasterBandH rasterBand = getGDALRasterPtr(rasterObj);

	GDALColorTableH ctab = GDALGetRasterColorTable(rasterBand);

	if (ctab == NULL) return(R_NilValue);

	return(GDALColorTable2Matrix(ctab));

}
Example #3
0
SEXP
RGDAL_GetColorTable(SEXP rasterObj) {

	GDALRasterBandH rasterBand = getGDALRasterPtr(rasterObj);

        installErrorHandler();
	GDALColorTableH ctab = GDALGetRasterColorTable(rasterBand);
        uninstallErrorHandlerAndTriggerError();

	if (ctab == NULL) return(R_NilValue);

	return(GDALColorTable2Matrix(ctab));

}