void GDALRegister_ECRGTOC() { GDALDriver *poDriver; if( GDALGetDriverByName( "ECRGTOC" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "ECRGTOC" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "ECRG TOC format" ); poDriver->pfnIdentify = ECRGTOCDataset::Identify; poDriver->pfnOpen = ECRGTOCDataset::Open; poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_various.html#ECRGTOC" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "xml" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_SUBDATASETS, "YES" ); GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void GDALRegister_Terragen() { GDALDriver *poDriver; if( GDALGetDriverByName( "Terragen" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "Terragen" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "ter" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Terragen heightfield" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_terragen.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" " <Option name='MINUSERPIXELVALUE' type='float' description='Lowest logical elevation'/>" " <Option name='MAXUSERPIXELVALUE' type='float' description='Highest logical elevation'/>" "</CreationOptionList>" ); poDriver->pfnOpen = TerragenDataset::Open; poDriver->pfnCreate = TerragenDataset::Create; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
CPL_C_END /************************************************************************/ /* ==================================================================== */ /* HDF5Dataset */ /* ==================================================================== */ /************************************************************************/ /************************************************************************/ /* GDALRegister_HDF5() */ /************************************************************************/ void GDALRegister_HDF5() { GDALDriver *poDriver; if( GDALGetDriverByName("HDF5") == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription("HDF5"); poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Hierarchical Data Format Release 5"); poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "frmt_hdf5.html"); poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "hdf5"); poDriver->pfnOpen = HDF5Dataset::Open; poDriver->pfnIdentify = HDF5Dataset::Identify; GetGDALDriverManager()->RegisterDriver(poDriver); } }
void GDALRegister_BT() { GDALDriver *poDriver; if( GDALGetDriverByName( "BT" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "BT" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "VTP .bt (Binary Terrain) 1.3 Format" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_various.html#BT" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "bt" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Int16 Int32 Float32" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnOpen = BTDataset::Open; poDriver->pfnCreate = BTDataset::Create; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void OGRDeregisterDriver( OGRSFDriverH hDriver ) { VALIDATE_POINTER0( hDriver, "OGRDeregisterDriver" ); GetGDALDriverManager()->DeregisterDriver( (GDALDriver*)hDriver ); }
void GDALRegister_PNM() { GDALDriver *poDriver; if( GDALGetDriverByName( "PNM" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "PNM" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Portable Pixmap Format (netpbm)" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_various.html#PNM" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "pnm" ); poDriver->SetMetadataItem( GDAL_DMD_MIMETYPE, "image/x-portable-anymap" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Byte UInt16" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" " <Option name='MAXVAL' type='unsigned int' description='Maximum color value'/>" "</CreationOptionList>" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnOpen = PNMDataset::Open; poDriver->pfnCreate = PNMDataset::Create; poDriver->pfnIdentify = PNMDataset::Identify; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void GDALRegister_RIK() { GDALDriver *poDriver; if( GDALGetDriverByName( "RIK" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "RIK" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Swedish Grid RIK (.rik)" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_various.html#RIK" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "rik" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnOpen = RIKDataset::Open; poDriver->pfnIdentify = RIKDataset::Identify; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void GDALRegister_GTX() { GDALDriver *poDriver; if( GDALGetDriverByName( "GTX" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "GTX" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "NOAA Vertical Datum .GTX" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "gtx" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); // poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, // "frmt_various.html#GTX" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Float32" ); poDriver->pfnOpen = GTXDataset::Open; poDriver->pfnIdentify = GTXDataset::Identify; poDriver->pfnCreate = GTXDataset::Create; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void GDALRegister_EPSILON() { if( !GDAL_CHECK_VERSION( "EPSILON driver" ) ) return; if( GDALGetDriverByName( "EPSILON" ) != NULL ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription( "EPSILON" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Epsilon wavelets" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_epsilon.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Byte" ); CPLString osMethods; char** papszFBID = eps_get_fb_info(EPS_FB_ID); char** papszFBIDIter = papszFBID; while(papszFBIDIter && *papszFBIDIter) { osMethods += " <Value>"; osMethods += *papszFBIDIter; osMethods += "</Value>\n"; papszFBIDIter ++; } eps_free_fb_info(papszFBID); CPLString osOptionList; osOptionList.Printf( "<CreationOptionList>" " <Option name='TARGET' type='int' description='target size reduction as a percentage of the original (0-100)' default='75'/>" " <Option name='FILTER' type='string-select' description='Filter ID' default='daub97lift'>" "%s" " </Option>" " <Option name='BLOCKXSIZE' type='int' description='Tile Width. Between 32 and 1024' default='256'/>" " <Option name='BLOCKYSIZE' type='int' description='Tile Height. Between 32 and 1024' default='256'/>" " <Option name='MODE' type='string-select' default='OTLPF'>" " <Value>NORMAL</Value>" " <Value>OTLPF</Value>" " </Option>" " <Option name='RGB_RESAMPLE' type='boolean' description='if RGB must be resampled to 4:2:0' default='YES'/>" " <Option name='RASTERLITE_OUTPUT' type='boolean' description='if Rasterlite header and footers must be inserted' default='FALSE'/>" "</CreationOptionList>", osMethods.c_str() ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, osOptionList.c_str() ); poDriver->pfnOpen = EpsilonDataset::Open; poDriver->pfnIdentify = EpsilonDataset::Identify; poDriver->pfnCreateCopy = EpsilonDatasetCreateCopy; poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); GetGDALDriverManager()->RegisterDriver( poDriver ); }
void RegisterOGRMySQL() { if (! GDAL_CHECK_VERSION("MySQL driver")) return; GDALDriver *poDriver; if( GDALGetDriverByName( "MySQL" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "MySQL" ); poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "MySQL" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_mysql.html" ); poDriver->SetMetadataItem( GDAL_DMD_CONNECTION_PREFIX, "MYSQL:" ); poDriver->SetMetadataItem( GDAL_DMD_OPENOPTIONLIST, "<OpenOptionList>" " <Option name='DBNAME' type='string' description='Database name' required='true'/>" " <Option name='PORT' type='int' description='Port'/>" " <Option name='USER' type='string' description='User name'/>" " <Option name='PASSWORD' type='string' description='Password'/>" " <Option name='HOST' type='string' description='Server hostname'/>" " <Option name='TABLES' type='string' description='Restricted set of tables to list (comma separated)'/>" "</OpenOptionList>"); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList/>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='OVERWRITE' type='boolean' description='Whether to overwrite an existing table with the layer name to be created' default='NO'/>" " <Option name='LAUNDER' type='boolean' description='Whether layer and field names will be laundered' default='YES'/>" " <Option name='PRECISION' type='boolean' description='Whether fields created should keep the width and precision' default='YES'/>" " <Option name='GEOMETRY_NAME' type='string' description='Name of geometry column.' default='SHAPE'/>" " <Option name='SPATIAL_INDEX' type='boolean' description='Whether to create a spatial index' default='YES'/>" " <Option name='FID' type='string' description='Name of the FID column to create' default='OGR_FID' deprecated_alias='MYSQL_FID'/>" " <Option name='FID64' type='boolean' description='Whether to create the FID column with BIGINT type to handle 64bit wide ids' default='NO'/>" " <Option name='ENGINE' type='string' description='Database engine to use.'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem( GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Integer64 Real String Date DateTime Time Binary" ); poDriver->SetMetadataItem( GDAL_DCAP_NOTNULL_FIELDS, "YES" ); poDriver->SetMetadataItem( GDAL_DCAP_DEFAULT_FIELDS, "YES" ); poDriver->pfnOpen = OGRMySQLDriverOpen; poDriver->pfnIdentify = OGRMySQLDriverIdentify; poDriver->pfnCreate = OGRMySQLDriverCreate; poDriver->pfnUnloadDriver = OGRMySQLDriverUnload; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
Handle<Value> GDALDrivers::count(const Arguments& args) { HandleScope scope; int gdal_count = GetGDALDriverManager()->GetDriverCount(); int ogr_count = OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount(); return scope.Close(Integer::New(gdal_count + ogr_count)); }
Format::Format(const char* name, const char* driver, const char* extension, int w, int h, int b) { mName = name; mDriver = GetGDALDriverManager()->GetDriverByName(driver); mExtension = extension; mTileW = w; mTileH = h; mTileB = b; }
// // Uses GDAL to create a temporary TIF file, using the band create options // copies the content to the destination buffer then erases the temp TIF // static CPLErr CompressTIF(buf_mgr &dst, buf_mgr &src, const ILImage &img, char **papszOptions) { CPLErr ret; GDALDriver *poTiffDriver = GetGDALDriverManager()->GetDriverByName("GTiff"); VSIStatBufL statb; CPLString fname = uniq_memfname("mrf_tif_write"); GDALDataset *poTiff = poTiffDriver->Create(fname, img.pagesize.x, img.pagesize.y, img.pagesize.c, img.dt, papszOptions ); // Read directly to avoid double caching in GDAL // Unfortunately not possible for multiple bands if (img.pagesize.c == 1) { ret = poTiff->GetRasterBand(1)->WriteBlock(0,0,src.buffer); } else { ret = poTiff->RasterIO(GF_Write, 0,0,img.pagesize.x,img.pagesize.y, src.buffer, img.pagesize.x, img.pagesize.y, img.dt, img.pagesize.c, NULL, 0,0,0 #if GDAL_VERSION_MAJOR >= 2 ,NULL #endif ); } if (CE_None != ret) return ret; GDALClose(poTiff); // Check that we can read the file if (VSIStatL(fname, &statb)) { CPLError(CE_Failure,CPLE_AppDefined, "MRF: TIFF, can't stat %s", fname.c_str()); return CE_Failure; } if (size_t(statb.st_size) > dst.size) { CPLError(CE_Failure,CPLE_AppDefined, "MRF: TIFF, Tiff generated is too large"); return CE_Failure; } VSILFILE *pf = VSIFOpenL(fname,"rb"); if (pf == NULL) { CPLError(CE_Failure,CPLE_AppDefined, "MRF: TIFF, can't open %s", fname.c_str()); return CE_Failure; } VSIFReadL(dst.buffer, static_cast<size_t>(statb.st_size), 1, pf); dst.size = static_cast<size_t>(statb.st_size); VSIFCloseL(pf); VSIUnlink(fname); return CE_None; }
void GDALRegister_WEBP() { if( GDALGetDriverByName( "WEBP" ) != NULL ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription( "WEBP" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "WEBP" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_webp.html" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "webp" ); poDriver->SetMetadataItem( GDAL_DMD_MIMETYPE, "image/webp" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Byte" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>\n" " <Option name='QUALITY' type='float' description='good=100, bad=0' default='75'/>\n" #if WEBP_ENCODER_ABI_VERSION >= 0x0100 " <Option name='LOSSLESS' type='boolean' description='Whether lossless compression should be used' default='FALSE'/>\n" #endif " <Option name='PRESET' type='string-select' description='kind of image' default='DEFAULT'>\n" " <Value>DEFAULT</Value>\n" " <Value>PICTURE</Value>\n" " <Value>PHOTO</Value>\n" " <Value>DRAWING</Value>\n" " <Value>ICON</Value>\n" " <Value>TEXT</Value>\n" " </Option>\n" " <Option name='TARGETSIZE' type='int' description='if non-zero, desired target size in bytes. Has precedence over QUALITY'/>\n" " <Option name='PSNR' type='float' description='if non-zero, minimal distortion to to achieve. Has precedence over TARGETSIZE'/>\n" " <Option name='METHOD' type='int' description='quality/speed trade-off. fast=0, slower-better=6' default='4'/>\n" " <Option name='SEGMENTS' type='int' description='maximum number of segments [1-4]' default='4'/>\n" " <Option name='SNS_STRENGTH' type='int' description='Spatial Noise Shaping. off=0, maximum=100' default='50'/>\n" " <Option name='FILTER_STRENGTH' type='int' description='Filter strength. off=0, strongest=100' default='20'/>\n" " <Option name='FILTER_SHARPNESS' type='int' description='Filter sharpness. off=0, least sharp=7' default='0'/>\n" " <Option name='FILTER_TYPE' type='int' description='Filtering type. simple=0, strong=1' default='0'/>\n" " <Option name='AUTOFILTER' type='int' description=\"Auto adjust filter's strength. off=0, on=1\" default='0'/>\n" " <Option name='PASS' type='int' description='Number of entropy analysis passes [1-10]' default='1'/>\n" " <Option name='PREPROCESSING' type='int' description='Preprocessing filter. none=0, segment-smooth=1' default='0'/>\n" " <Option name='PARTITIONS' type='int' description='log2(number of token partitions) in [0..3]' default='0'/>\n" #if WEBP_ENCODER_ABI_VERSION >= 0x0002 " <Option name='PARTITION_LIMIT' type='int' description='quality degradation allowed to fit the 512k limit on prediction modes coding (0=no degradation, 100=full)' default='0'/>\n" #endif "</CreationOptionList>\n" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnIdentify = WEBPDataset::Identify; poDriver->pfnOpen = WEBPDataset::Open; poDriver->pfnCreateCopy = WEBPDataset::CreateCopy; GetGDALDriverManager()->RegisterDriver( poDriver ); }
// Test that GDALWarp() detects error in flush cache template<> template<> void object::test<9>() { GDALDriver* poDriver = new GDALDriver(); poDriver->SetDescription("DatasetWithErrorInFlushCache"); poDriver->pfnCreate = DatasetWithErrorInFlushCache::Create; GetGDALDriverManager()->RegisterDriver( poDriver ); const char* args[] = { "-of", "DatasetWithErrorInFlushCache", NULL }; GDALWarpAppOptions* psOptions = GDALWarpAppOptionsNew((char**)args, NULL); GDALDatasetH hSrcDS = GDALOpen("../gcore/data/byte.tif", GA_ReadOnly); CPLErrorReset(); CPLPushErrorHandler(CPLQuietErrorHandler); GDALDatasetH hOutDS = GDALWarp("/", NULL, 1, &hSrcDS, psOptions, NULL); CPLPopErrorHandler(); GDALClose(hSrcDS); GDALWarpAppOptionsFree(psOptions); ensure(hOutDS == NULL); ensure(CPLGetLastErrorType() != CE_None); GetGDALDriverManager()->DeregisterDriver( poDriver ); delete poDriver; }
/* register the driver with GDAL */ void GDALRegister_COSAR() { GDALDriver *pDriver; if (GDALGetDriverByName("cosar") == NULL) { pDriver = new GDALDriver(); pDriver->SetDescription("COSAR"); pDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "COSAR Annotated Binary Matrix (TerraSAR-X)"); pDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_cosar.html"); pDriver->pfnOpen = COSARDataset::Open; GetGDALDriverManager()->RegisterDriver(pDriver); } }
GDALDriver *OGRSFDriverRegistrar::GetDriverByName( const char * pszName ) { GDALDriverManager* poDriverManager = GetGDALDriverManager(); GDALDriver* poGDALDriver = poDriverManager->GetDriverByName(CPLSPrintf("OGR_%s", pszName)); if( poGDALDriver == NULL ) poGDALDriver = poDriverManager->GetDriverByName(pszName); if( poGDALDriver == NULL || poGDALDriver->GetMetadataItem(GDAL_DCAP_VECTOR) == NULL ) return NULL; return poGDALDriver; }
void write_map(fs::path file_path, GDALDataType data_type, boost::shared_ptr<Map_Matrix<DataFormat> > data, std::string WKTprojection, GeoTransform transform, std::string driverName) throw(std::runtime_error) { GDALAllRegister(); //This registers all availble raster file formats for use with this utility. How neat is that. We can input any GDAL supported rater file format. const char *pszFormat = driverName.c_str(); GDALDriver * poDriver = GetGDALDriverManager()->GetDriverByName(pszFormat); if (poDriver == NULL) { throw std::runtime_error("No driver for file tyle found"); } char ** papszMetadata = poDriver->GetMetadata(); if (!(CSLFetchBoolean(papszMetadata, GDAL_DCAP_CREATE, FALSE))) { throw std::runtime_error("Driver does not support raster creation"); } char **papszOptions = NULL; papszOptions = CSLSetNameValue(papszOptions, "COMPRESS", "LZW"); GDALDataset *poDstDS = poDriver->Create(file_path.string().c_str(), (int)data->NCols(), (int)data->NRows(), 1, data_type, papszOptions); double adfGeoTransform[6] = {1, 1, 1, 1, 1, 1}; adfGeoTransform[0] = transform.x_origin; adfGeoTransform[1] = transform.pixel_width; adfGeoTransform[2] = transform.x_line_space; adfGeoTransform[3] = transform.y_origin; adfGeoTransform[4] = transform.pixel_height; adfGeoTransform[5] = transform.y_line_space; const char * psz_WKT = WKTprojection.c_str(); poDstDS->SetGeoTransform(adfGeoTransform); poDstDS->SetProjection(psz_WKT); DataFormat * pafScanline = new DataFormat[data->NCols() * data->NRows()]; int pafIterator = 0; for (int i = 0; i < data->NRows(); i++) { for (int j = 0; j < data->NCols(); j++) { pafScanline[pafIterator] = data->Get(i, j); pafIterator++; } } GDALRasterBand * poBand = poDstDS->GetRasterBand(1); poBand->SetNoDataValue(data->NoDataValue()); poBand->RasterIO(GF_Write, 0, 0, (int) data->NCols(), (int) data->NRows(), pafScanline, (int) data->NCols(), (int) data->NRows(), data_type, 0, 0); GDALClose( (GDALDatasetH) poDstDS); }
void GDALRegister_USGSDEM() { GDALDriver *poDriver; if( GDALGetDriverByName( "USGSDEM" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "USGSDEM" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "dem" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "USGS Optional ASCII DEM (and CDED)" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_usgsdem.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Int16" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" " <Option name='PRODUCT' type='string-select' description='Specific Product Type'>" " <Value>DEFAULT</Value>" " <Value>CDED50K</Value>" " </Option>" " <Option name='TOPLEFT' type='string' description='Top left product corner (ie. 117d15w,52d30n'/>" " <Option name='RESAMPLE' type='string-select' description='Resampling kernel to use if resampled.'>" " <Value>Nearest</Value>" " <Value>Bilinear</Value>" " <Value>Cubic</Value>" " <Value>CubicSpline</Value>" " </Option>" " <Option name='TEMPLATE' type='string' description='File to default metadata from.'/>" " <Option name='DEMLevelCode' type='int' description='DEM Level (1, 2 or 3 if set)'/>" " <Option name='DataSpecVersion' type='int' description='Data and Specification version/revision (eg. 1020)'/>" " <Option name='PRODUCER' type='string' description='Producer Agency (up to 60 characters)'/>" " <Option name='OriginCode' type='string' description='Origin code (up to 4 characters, YT for Yukon)'/>" " <Option name='ProcessCode' type='string' description='Processing Code (8=ANUDEM, 9=FME, A=TopoGrid)'/>" " <Option name='ZRESOLUTION' type='float' description='Scaling factor for elevation values'/>" " <Option name='NTS' type='string' description='NTS Mapsheet name, used to derive TOPLEFT.'/>" " <Option name='INTERNALNAME' type='string' description='Dataset name written into file header.'/>" "</CreationOptionList>" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnOpen = USGSDEMDataset::Open; poDriver->pfnCreateCopy = USGSDEMCreateCopy; poDriver->pfnIdentify = USGSDEMDataset::Identify; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
GDALDataset* CreateGDALRaster(TeRasterParams& params) { // Gets the appropriate GDAL driver std::string path = params.fileName_; if(path.empty()) return 0; std::string extension = TeGetExtension(path.c_str()); std::string driverName = TeGDALDecoder::getGDALDriverName(extension); if(driverName.empty()) return 0; GDALDriverManager* driverManager = GetGDALDriverManager(); GDALDriver* driver = driverManager->GetDriverByName(driverName.c_str()); if(driver == 0) return 0; // Converts the raster data type GDALDataType gDataType = Convert2GDAL(params.dataType_[0]); // Creates the raster GDAL GDALDataset* ds = driver->Create(path.c_str(), params.ncols_, params.nlines_, params.nBands(), gDataType, 0); if(ds == 0) return 0; // Sets the geometric transformations double gt[6]; Convert2GDAL(gt, params); ds->SetGeoTransform(gt); // Sets the raster projection TeProjection* proj = params.projection(); if(proj) { int epsg = proj->epsgCode(); OGRSpatialReference oSRS; oSRS.importFromEPSG(epsg); char* projWKT = 0; if(oSRS.exportToWkt(&projWKT) == OGRERR_NONE) { ds->SetProjection(projWKT); OGRFree(projWKT); } } return ds; }
// method to register this driver void GDALRegister_KEA() { if( !GDAL_CHECK_VERSION( "KEA" ) ) return; if( GDALGetDriverByName( "KEA" ) != NULL ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription( "KEA" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "KEA Image Format (.kea)" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "kea" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_kea.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONDATATYPES, "Byte Int16 UInt16 Int32 UInt32 " "Float32 Float64" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, CPLSPrintf( "<CreationOptionList> " "<Option name='IMAGEBLOCKSIZE' type='int' description='The size of each block for image data' default='%d'/> " "<Option name='ATTBLOCKSIZE' type='int' description='The size of each block for attribute data' default='%d'/> " "<Option name='MDC_NELMTS' type='int' description='Number of elements in the meta data cache' default='%d'/> " "<Option name='RDCC_NELMTS' type='int' description='Number of elements in the raw data chunk cache' default='%d'/> " "<Option name='RDCC_NBYTES' type='int' description='Total size of the raw data chunk cache, in bytes' default='%d'/> " "<Option name='RDCC_W0' type='float' min='0' max='1' description='Preemption policy' default='%.2f'/> " "<Option name='SIEVE_BUF' type='int' description='Sets the maximum size of the data sieve buffer' default='%d'/> " "<Option name='META_BLOCKSIZE' type='int' description='Sets the minimum size of metadata block allocations' default='%d'/> " "<Option name='DEFLATE' type='int' description='0 (no compression) to 9 (max compression)' default='%d'/> " "<Option name='THEMATIC' type='boolean' description='If YES then all bands are set to thematic' default='NO'/> " "</CreationOptionList>", static_cast<int>(kealib::KEA_IMAGE_CHUNK_SIZE), static_cast<int>(kealib::KEA_ATT_CHUNK_SIZE), static_cast<int>(kealib::KEA_MDC_NELMTS), static_cast<int>(kealib::KEA_RDCC_NELMTS), static_cast<int>(kealib::KEA_RDCC_NBYTES), kealib::KEA_RDCC_W0, static_cast<int>(kealib::KEA_SIEVE_BUF), static_cast<int>(kealib::KEA_META_BLOCKSIZE), kealib::KEA_DEFLATE ) ); poDriver->pfnOpen = KEADataset::Open; poDriver->pfnIdentify = KEADataset::Identify; poDriver->pfnCreate = KEADataset::Create; poDriver->pfnCreateCopy = KEADataset::CreateCopy; GetGDALDriverManager()->RegisterDriver( poDriver ); }
void RegisterOGRGPX() { if (! GDAL_CHECK_VERSION("OGR/GPX driver")) return; GDALDriver *poDriver; if( GDALGetDriverByName( "GPX" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "GPX" ); poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "GPX" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "gpx" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_gpx.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" #ifdef WIN32 " <Option name='LINEFORMAT' type='string-select' description='end-of-line sequence' default='CRLF'>" #else " <Option name='LINEFORMAT' type='string-select' description='end-of-line sequence' default='LF'>" #endif " <Value>CRLF</Value>" " <Value>LF</Value>" " </Option>" " <Option name='GPX_USE_EXTENSIONS' type='boolean' description='Whether to write non-GPX attributes in an <extensions> tag' default='NO'/>" " <Option name='GPX_EXTENSIONS_NS' type='string' description='Namespace value used for extension tags' default='ogr'/>" " <Option name='GPX_EXTENSIONS_NS_URL' type='string' description='Namespace URI' default='http://osgeo.org/gdal'/>" "</CreationOptionList>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='FORCE_GPX_TRACK' type='boolean' description='Whether to force layers with geometries of type wkbLineString as tracks' default='NO'/>" " <Option name='FORCE_GPX_ROUTE' type='boolean' description='Whether to force layers with geometries of type wkbMultiLineString (with single line string in them) as routes' default='NO'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->pfnOpen = OGRGPXDriverOpen; poDriver->pfnCreate = OGRGPXDriverCreate; poDriver->pfnDelete = OGRGPXDriverDelete; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void RegisterOGRGeoJSON() { if( !GDAL_CHECK_VERSION("OGR/GeoJSON driver") ) return; if( GDALGetDriverByName( "GeoJSON" ) != NULL ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription( "GeoJSON" ); poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "GeoJSON" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSIONS, "json geojson topojson" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_geojson.html" ); poDriver->SetMetadataItem( GDAL_DMD_OPENOPTIONLIST, "<OpenOptionList>" " <Option name='FLATTEN_NESTED_ATTRIBUTES' type='boolean' description='Whether to recursively explore nested objects and produce flatten OGR attributes' default='NO'/>" " <Option name='NESTED_ATTRIBUTE_SEPARATOR' type='string' description='Separator between components of nested attributes' default='_'/>" " <Option name='FEATURE_SERVER_PAGING' type='boolean' description='Whether to automatically scroll through results with a ArcGIS Feature Service endpoint'/>" " <Option name='NATIVE_DATA' type='boolean' description='Whether to store the native JSon representation at FeatureCollection and Feature level' default='NO'/>" " <Option name='ARRAY_AS_STRING' type='boolean' description='Whether to expose JSon arrays of strings, integers or reals as a OGR String' default='NO'/>" "</OpenOptionList>"); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList/>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='WRITE_BBOX' type='boolean' description='whether to write a bbox property with the bounding box of the geometries at the feature and feature collection level' default='NO'/>" " <Option name='COORDINATE_PRECISION' type='int' description='Number of decimal for coordinates' default='15'/>" " <Option name='SIGNIFICANT_FIGURES' type='int' description='Number of significant figures for floating-point values' default='17'/>" " <Option name='NATIVE_DATA' type='string' description='FeatureCollection level elements.'/>" " <Option name='NATIVE_MEDIA_TYPE' type='string' description='Format of NATIVE_DATA. Must be \"application/vnd.geo+json\", otherwise NATIVE_DATA will be ignored.'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Integer64 Real String IntegerList " "Integer64List RealList StringList" ); poDriver->pfnOpen = OGRGeoJSONDriverOpen; poDriver->pfnIdentify = OGRGeoJSONDriverIdentify; poDriver->pfnCreate = OGRGeoJSONDriverCreate; poDriver->pfnDelete = OGRGeoJSONDriverDelete; GetGDALDriverManager()->RegisterDriver( poDriver ); }
int OGRSFDriverRegistrar::GetDriverCount() { /* We must be careful only to return drivers that are actual OGRSFDriver* */ GDALDriverManager* poDriverManager = GetGDALDriverManager(); int nTotal = poDriverManager->GetDriverCount(); int nOGRDriverCount = 0; for(int i=0;i<nTotal;i++) { GDALDriver* poDriver = poDriverManager->GetDriver(i); if( poDriver->GetMetadataItem(GDAL_DCAP_VECTOR) != NULL ) nOGRDriverCount ++; } return nOGRDriverCount; }
void GDALRegister_PALSARJaxa() { GDALDriver *poDriver; if( GDALGetDriverByName( "JAXAPALSAR" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "JAXAPALSAR" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "JAXA PALSAR Product Reader (Level 1.1/1.5)" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "frmt_palsar.html" ); poDriver->pfnOpen = PALSARJaxaDataset::Open; poDriver->pfnIdentify = PALSARJaxaDataset::Identify; GetGDALDriverManager()->RegisterDriver( poDriver ); } }
void GDALRegister_GFF(void) { GDALDriver *poDriver; if ( GDALGetDriverByName("GFF") == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription("GFF"); poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Ground-based SAR Applications Testbed File Format (.gff)"); poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "frmt_various.html#GFF"); poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "gff"); poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); poDriver->pfnOpen = GFFDataset::Open; GetGDALDriverManager()->RegisterDriver(poDriver); } }
void GDALRegister_MSG() { if( GDALGetDriverByName( "MSG" ) != NULL ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription( "MSG" ); poDriver->SetMetadataItem( GDAL_DCAP_RASTER, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "MSG HRIT Data" ); poDriver->pfnOpen = MSGDataset::Open; GetGDALDriverManager()->RegisterDriver( poDriver ); }
void RegisterOGRTAB() { if( GDALGetDriverByName("MapInfo File") != nullptr ) return; GDALDriver *poDriver = new GDALDriver(); poDriver->SetDescription("MapInfo File"); poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "MapInfo File"); poDriver->SetMetadataItem(GDAL_DMD_EXTENSIONS, "tab mif mid"); poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drv_mitab.html"); poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); poDriver->SetMetadataItem(GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='BOUNDS' type='string' description='Custom bounds. Expect format is xmin,ymin,xmax,ymax'/>" " <Option name='ENCODING' type='string' description='to override the encoding interpretation of the DAT/MID with any encoding supported by CPLRecode or to \"\" to avoid any recoding (Neutral charset)'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem(GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" " <Option name='FORMAT' type='string-select' description='type of MapInfo format'>" " <Value>MIF</Value>" " <Value>TAB</Value>" " </Option>" " <Option name='SPATIAL_INDEX_MODE' type='string-select' description='type of spatial index' default='QUICK'>" " <Value>QUICK</Value>" " <Value>OPTIMIZED</Value>" " </Option>" " <Option name='BLOCKSIZE' type='int' description='.map block size' min='512' max='32256' default='512'/>" " <Option name='ENCODING' type='string' description='to override the encoding interpretation of the DAT/MID with any encoding supported by CPLRecode or to \"\" to avoid any recoding (Neutral charset)'/>" "</CreationOptionList>"); poDriver->SetMetadataItem(GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Real String Date DateTime Time"); poDriver->SetMetadataItem( GDAL_DCAP_FEATURE_STYLES, "YES" ); poDriver->pfnOpen = OGRTABDriverOpen; poDriver->pfnIdentify = OGRTABDriverIdentify; poDriver->pfnCreate = OGRTABDriverCreate; poDriver->pfnDelete = OGRTABDriverDelete; poDriver->pfnUnloadDriver = OGRTABDriverUnload; GetGDALDriverManager()->RegisterDriver(poDriver); }
void SaveGeometry(const CPLString &path, const OGRPolygon &polygon, const OGRSpatialReference &spaRef) { const char *pszDriverName = "ESRI Shapefile"; GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName ); if( poDriver == NULL ) { printf( "%s driver not available.\n", pszDriverName ); exit( 1 ); } GDALDataset *poDS = poDriver->Create( path, 0, 0, 0, GDT_Unknown, NULL ); if( poDS == NULL ) { printf( "Creation of output file failed.\n" ); exit( 1 ); } const char* pszLayerName = CPLGetBasename(path); OGRLayer *poLayer = poDS->CreateLayer( pszLayerName, spaRef.Clone(), wkbPolygon, NULL ); if( poLayer == NULL ) { printf( "Layer creation failed.\n" ); exit( 1 ); } OGRFieldDefn oField( "Name", OFTString ); oField.SetWidth(32); if( poLayer->CreateField( &oField ) != OGRERR_NONE ) { printf( "Creating Name field failed.\n" ); exit( 1 ); } OGRFeature *poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() ); //poFeature->SetField( "Name", szName ); poFeature->SetGeometry( polygon.clone() ); if( poLayer->CreateFeature( poFeature ) != OGRERR_NONE ) { printf( "Failed to create feature in shapefile.\n" ); exit( 1 ); } OGRFeature::DestroyFeature( poFeature ); GDALClose( poDS ); }
void RegisterOGRGeoJSON() { if( !GDAL_CHECK_VERSION("OGR/GeoJSON driver") ) return; GDALDriver *poDriver; if( GDALGetDriverByName( "GeoJSON" ) == NULL ) { poDriver = new GDALDriver(); poDriver->SetDescription( "GeoJSON" ); poDriver->SetMetadataItem( GDAL_DCAP_VECTOR, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "GeoJSON" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSIONS, "json geojson topojson" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_geojson.html" ); poDriver->SetMetadataItem( GDAL_DMD_OPENOPTIONLIST, "<OpenOptionList>" " <Option name='FLATTEN_NESTED_ATTRIBUTES' type='boolean' description='Whether to recursively explore nested objects and produce flatten OGR attributes' default='NO'/>" " <Option name='NESTED_ATTRIBUTE_SEPARATOR' type='string' description='Separator between components of nested attributes' default='_'/>" " <Option name='FEATURE_SERVER_PAGING' type='boolean' description='Whether to automatically scroll through results with a ArcGIS Feature Service endpoint'/>" "</OpenOptionList>"); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList/>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='WRITE_BBOX' type='boolean' description='whether to write a bbox property with the bounding box of the geometries at the feature and feature collection level' default='NO'/>" " <Option name='COORDINATE_PRECISION' type='int' description='Number of decimal for coordinates' default='10'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Integer64 Real String IntegerList Integer64List RealList StringList" ); poDriver->pfnOpen = OGRGeoJSONDriverOpen; poDriver->pfnIdentify = OGRGeoJSONDriverIdentify; poDriver->pfnCreate = OGRGeoJSONDriverCreate; poDriver->pfnDelete = OGRGeoJSONDriverDelete; GetGDALDriverManager()->RegisterDriver( poDriver ); } }