void init_ogr(const std::string& outfile) { OGRRegisterAll(); const char* driver_name = "SQLite"; OGRSFDriver* driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(driver_name); if (driver == NULL) { std::cerr << driver_name << " driver not available.\n"; exit(1); } CPLSetConfigOption("OGR_SQLITE_SYNCHRONOUS", "FALSE"); const char* options[] = { "SPATIALITE=TRUE", NULL }; m_data_source = driver->CreateDataSource(outfile.c_str(), const_cast<char**>(options)); if (m_data_source == NULL) { std::cerr << "Creation of output file failed.\n"; exit(1); } m_layer_point = init_layer("planet_osm_point", m_fields_nodes, wkbPoint); m_layer_line = init_layer("planet_osm_line", m_fields_ways, wkbLineString); m_layer_polygon = init_layer("planet_osm_polygon", m_fields_areas, wkbMultiPolygon); stringv fields_roads; fields_roads.push_back("railway"); fields_roads.push_back("highway"); fields_roads.push_back("boundary"); m_layer_roads = init_layer("planet_osm_roads", fields_roads, wkbLineString); }
Handle<Value> GDALDrivers::getNames(const Arguments& args) { HandleScope scope; int gdal_count = GetGDALDriverManager()->GetDriverCount(); int i, ogr_count = 0; std::string name; #if GDAL_VERSION_MAJOR < 2 ogr_count = OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount(); #endif int n = gdal_count + ogr_count; Local<Array> driver_names = Array::New(n); for (i = 0; i < gdal_count; ++i) { GDALDriver *driver = GetGDALDriverManager()->GetDriver(i); name = driver->GetDescription(); #if GDAL_VERSION_MAJOR < 2 if(name == "VRT") name = "VRT:raster"; #endif driver_names->Set(i, SafeString::New(name.c_str())); } for (; i < n; ++i) { OGRSFDriver *driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriver(i - gdal_count); name = driver->GetName(); #if GDAL_VERSION_MAJOR < 2 if(name == "VRT") name = "VRT:vector"; #endif driver_names->Set(i, SafeString::New(name.c_str())); } return scope.Close(driver_names); }
void RegisterOGRGeoconcept() { OGRSFDriver* poDriver = new OGRGeoconceptDriver; poDriver->SetMetadataItem( GDAL_DMD_EXTENSIONS, "gxt txt" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList>" " <Option name='EXTENSION' type='string-select' description='indicates the " "GeoConcept export file extension. TXT was used by earlier releases of " "GeoConcept. GXT is currently used.' default='GXT'>" " <Value>GXT</Value>" " <Value>TXT</Value>" " </Option>" " <Option name='CONFIG' type='string' description='path to the GCT file that " "describes the GeoConcept types definitions.'/>" "</CreationOptionList>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='FEATURETYPE' type='string' description='TYPE.SUBTYPE : " "defines the feature to be created. The TYPE corresponds to one of the Name " "found in the GCT file for a type section. The SUBTYPE corresponds to one of " "the Name found in the GCT file for a sub-type section within the previous " "type section'/>" "</LayerCreationOptionList>" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); }
//--------------------------------------------------------- CSG_String COGR_Driver::Get_Description(int iDriver) { OGRSFDriver *pDriver = m_pManager->GetDriver(iDriver); CSG_String s; s += pDriver->TestCapability(ODrCCreateDataSource) ? SG_T("\n[x] ") : SG_T("\n[ ] "); s += _TL("create data source"); s += pDriver->TestCapability(ODrCDeleteDataSource) ? SG_T("\n[x] ") : SG_T("\n[ ] "); s += _TL("delete data source"); /* s += pDriver->TestCapability(ODsCCreateLayer) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("create layer"); s += pDriver->TestCapability(ODsCDeleteLayer) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("delete layer"); s += pDriver->TestCapability(OLCDeleteFeature) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("delete feature"); s += pDriver->TestCapability(OLCRandomRead) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("random read"); s += pDriver->TestCapability(OLCRandomWrite) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("random write"); s += pDriver->TestCapability(OLCSequentialWrite) ? SG_T("\n[x]") : SG_T("\n[ ]"); s += _TL("sequential write"); /**/ return( SG_STR_MBTOSG(s) ); }
shared_ptr<OGRDataSource> OgrUtilities::createDataSource(QString url) { const char* driverName = NULL; int i = 0; while (extensions[i][0] != NULL) { if (url.endsWith(extensions[i][0])) { driverName = extensions[i][1]; } i++; } i = 0; while (beginName[i][0] != NULL) { if (url.startsWith(beginName[i][0])) { driverName = beginName[i][1]; } i++; } if (driverName == NULL) { throw HootException("No driver found for: " + url); } OGRSFDriver* driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(driverName); if (driver == 0) { throw HootException("Error getting driver by name: " + QString(driverName)); } // if the user specifies a shapefile then crop off the .shp and create a directory. if (url.toLower().endsWith(".shp")) { url = url.mid(0, url.length() - 4); } shared_ptr<OGRDataSource> result(driver->CreateDataSource(url.toAscii())); if (result == NULL) { throw HootException("Unable to create data source: " + url + " (" + QString(CPLGetLastErrorMsg()) + ")"); } result->SetDriver(driver); if (QString(driverName) == "FileGDB") { long v = GDAL_VERSION_MAJOR * 1000000 + GDAL_VERSION_MINOR * 1000 + GDAL_VERSION_REV; long lowest = 1 * 1000000 + 10 * 1000 + 1; if (v < lowest) { LOG_WARN("Writing to FileGDB with GDAL v" << GDAL_RELEASE_NAME << ". FileGDB with a GDAL " "v1.9.0 is known to create files that can't be read by ArcMap 10.2. " "GDAL v1.10.1 is known to work."); } } return result; }
void RegisterOGRCouchDB() { OGRSFDriver* poDriver = new OGRCouchDBDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "CouchDB / GeoCouch" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); }
OGRDataSourceH OGR_Dr_CreateDataSource( OGRSFDriverH hDriver, const char *pszName, char ** papszOptions ) { VALIDATE_POINTER1( hDriver, "OGR_Dr_CreateDataSource", NULL ); OGRSFDriver* poDriver = (OGRSFDriver *) hDriver; CPLAssert( NULL != poDriver ); OGRDataSource* poDS = NULL; poDS = poDriver->CreateDataSource( pszName, papszOptions ); /* This fix is explained in Ticket #1223 */ if( NULL != poDS ) { poDS->SetDriver( poDriver ); CPLAssert( NULL != poDS->GetDriver() ); } else { CPLDebug( "OGR", "CreateDataSource operation failed. NULL pointer returned." ); } return (OGRDataSourceH) poDS; }
int OGRGPSBabelWriteDataSource::Create( const char * pszName, char **papszOptions ) { OGRSFDriver* poGPXDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("GPX"); if (poGPXDriver == NULL) { CPLError(CE_Failure, CPLE_AppDefined, "GPX driver is necessary for GPSBabel write support"); return FALSE; } if (!EQUALN(pszName, "GPSBABEL:", 9)) { const char* pszOptionGPSBabelDriverName = CSLFetchNameValue(papszOptions, "GPSBABEL_DRIVER"); if (pszOptionGPSBabelDriverName != NULL) pszGPSBabelDriverName = CPLStrdup(pszOptionGPSBabelDriverName); else { CPLError(CE_Failure, CPLE_AppDefined, "GPSBABEL_DRIVER dataset creation option expected"); return FALSE; } pszFilename = CPLStrdup(pszName); } else { const char* pszSep = strchr(pszName + 9, ':'); if (pszSep == NULL) { CPLError(CE_Failure, CPLE_AppDefined, "Wrong syntax. Expected GPSBabel:driver_name[,options]*:file_name"); return FALSE; } pszGPSBabelDriverName = CPLStrdup(pszName + 9); *(strchr(pszGPSBabelDriverName, ':')) = '\0'; pszFilename = CPLStrdup(pszSep+1); } /* A bit of validation to avoid command line injection */ if (!OGRGPSBabelDataSource::IsValidDriverName(pszGPSBabelDriverName)) return FALSE; const char* pszOptionUseTempFile = CSLFetchNameValue(papszOptions, "USE_TEMPFILE"); if (pszOptionUseTempFile == NULL) pszOptionUseTempFile = CPLGetConfigOption("USE_TEMPFILE", NULL); if (pszOptionUseTempFile && CSLTestBoolean(pszOptionUseTempFile)) osTmpFileName = CPLGenerateTempFilename(NULL); else osTmpFileName.Printf("/vsimem/ogrgpsbabeldatasource_%p", this); poGPXDS = poGPXDriver->CreateDataSource(osTmpFileName.c_str(), papszOptions); if (poGPXDS == NULL) return FALSE; this->pszName = CPLStrdup(pszName); return TRUE; }
void CShapefileLayer::OpenShapefile(const std::string& filename) { m_FileName_ = filename; OGRRegisterAll(); std::string pszDriverName = "ESRI Shapefile"; //CPLSetConfigOption("SHAPE_ENCODING", ""); //支持中文 OGRSFDriver* poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(pszDriverName.c_str()); m_pDataSource_ = poDriver->Open(m_FileName_.c_str(), false); //打开shapefile文件,获取数据源 if(m_pDataSource_ == NULL) { m_bExistFile_ = false; return; } m_pLayer_ = m_pDataSource_->GetLayer(0); //获取shapefile第0层 if(m_pLayer_ == NULL) { m_bExistFile_ = false; return ; } int theFeatureCount = m_pLayer_->GetFeatureCount(); //层里面的数据数量 OGRFeature *poFeature = NULL; //读取的数据指针 m_pLayer_->ResetReading(); //重新读取 m_ShapefileType_ = m_pLayer_->GetLayerDefn()->GetGeomType(); //类型 m_bExistFile_ = true; }
void Usage() { OGRSFDriverRegistrar * poR = OGRSFDriverRegistrar::GetRegistrar(); printf( "Usage: txt2shp -i <input directory>\n" " -o <output directory>\n" " [-f <output file format_name>]\n\n" "Note :\n" " You can not put any file except you data files in the input directory." " And the output directory must be empty directory.\n\n" ); printf("Advanced options :\n"); printf(" -f format_name: output file format name, possible values are:\n"); for (int iDriver = 0; iDriver < poR->GetDriverCount(); iDriver++) { OGRSFDriver * poDriver = poR->GetDriver(iDriver); if (poDriver->TestCapability(ODrCCreateDataSource)) printf(" -f \"%s\"\n", poDriver->GetName()); } printf( "\nExample :\n" " txt2shp -i you_dir -o you_dir -f \"ESRI Shapefile\"\n\n" ); exit(1); }
void RegisterOGRGFT() { OGRSFDriver* poDriver = new OGRGFTDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Google Fusion Tables" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_gft.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRMEM() { OGRSFDriver* poDriver = new OGRMemDriver; poDriver->SetMetadataItem( GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Integer64 Real String Date DateTime Time IntegerList Integer64List RealList StringList Binary" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); }
void RegisterOGRIdrisi() { OGRSFDriver* poDriver = new OGRIdrisiDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Idrisi Vector (.vct)" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "vct" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void TeOGRDriver::getDriversNames(std::vector<std::string>& dnames) { int ndrivers = OGRSFDriverRegistrar::GetRegistrar()->GetDriverCount(); for(int i = 0; i < ndrivers; ++i) { OGRSFDriver* driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriver(i); dnames.push_back(driver->GetName()); } }
void RegisterOGRGeomedia() { OGRSFDriver* poDriver = new OGRGeomediaDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Geomedia .mdb" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "mdb" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_geomedia.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRSXF() { OGRSFDriver* poDriver = new OGRSXFDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Storage and eXchange Format" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_sxf.html" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "sxf" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRGME() { OGRSFDriver* poDriver = new OGRGMEDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Google Maps Engine" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "http://trac.osgeo.org/gdal/wiki/GMEDriver" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRPGeo() { OGRSFDriver* poDriver = new OGRPGeoDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "ESRI Personal GeoDatabase" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "mdb" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_pgeo.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); }
void RegisterOGRXLS() { OGRSFDriver* poDriver = new OGRXLSDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "MS Excel format" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "xls" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_xls.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRDWG() { OGRSFDriver* poDriver = new OGRDWGDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "AutoCAD DWG" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "dwg" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_dwg.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( poDriver ); }
void RegisterOGROGDI() { if (! GDAL_CHECK_VERSION("OGR/OGDI driver")) return; OGRSFDriver* poDriver = new OGROGDIDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "OGDI Vectors (VPF, VMAP, DCW)" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_ogdi.html" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
void RegisterOGRXPlane() { OGRSFDriver* poDriver = new OGRXPlaneDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "X-Plane/Flightgear aeronautical data" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "dat" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_xplane.html" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
JNIEXPORT jint JNICALL Java_es_gva_cit_jogr_OGRSFDriver_deleteDataSourceNat (JNIEnv *env, jobject obj, jlong cPtr, jstring pszName){ OGRSFDriver *drv = (OGRSFDriver *) 0 ; drv = *(OGRSFDriver **)&cPtr; int ogrerr; const char *name = env->GetStringUTFChars( pszName, 0); ogrerr = drv->DeleteDataSource(name); env->ReleaseStringUTFChars( pszName, name); return ogrerr; }
void RegisterOGRWAsP() { OGRSFDriver* poDriver = new OGRWAsPDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "WAsP .map format" ); poDriver->SetMetadataItem( GDAL_DMD_EXTENSION, "map" ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_wasp.html" ); poDriver->SetMetadataItem( GDAL_DCAP_VIRTUALIO, "YES" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }
JNIEXPORT jint JNICALL Java_es_gva_cit_jogr_OGRSFDriver_testCapabilityNat (JNIEnv *env, jobject obj, jlong cPtr, jstring cap){ OGRSFDriver *drv = (OGRSFDriver *) 0 ; drv = *(OGRSFDriver **)&cPtr; int res=-1; const char *testcap = env->GetStringUTFChars( cap, 0); res = drv->TestCapability(testcap); env->ReleaseStringUTFChars( cap, testcap); return res; }
bool COGR_DataSource::Create(const CSG_String &File, const CSG_String &DriverName) { OGRSFDriver *pDriver; Destroy(); if( (pDriver = g_OGR_Driver.Get_Driver(DriverName)) != NULL ) { m_pDataSource = pDriver->CreateDataSource(SG_STR_SGTOMB(File), NULL); } return( m_pDataSource != NULL ); }
OGRDataSource * VectorCreate( const char * pszFormat, const char * pszFilename, char ** papszOptions/*=NULL*/ ) { OGRSFDriver * poDriver = GetVectorDriver(pszFormat); OGRDataSource * poOGRDataSource = poDriver->CreateDataSource(pszFilename, papszOptions); #ifdef TRACEON //测试时使用文件型数据库,没有图层时打开有问题,因此在这里放一个图层 //这样才能打开,不用测试可以关闭,在release中没有 poOGRDataSource->CreateLayer("TEMP", NULL, wkbUnknown, NULL); #endif return poOGRDataSource; }
OGRDataSource *AoIIntersection::buildIntersectionDataSource ( const char *outFmt ) { // get driver registrar OGRSFDriverRegistrar *reg = OGRSFDriverRegistrar::GetRegistrar(); // create an OGRDataSource OGRSFDriver *driverToUse = reg->GetDriverByName( outFmt ); if ( driverToUse ) { return( driverToUse->CreateDataSource( "C:\\Minerva\\Data\\intersection.mem", NULL ) ); } return 0; }
JNIEXPORT jstring JNICALL Java_es_gva_cit_jogr_OGRSFDriver_getNameNat (JNIEnv *env, jobject obj, jlong cPtr){ OGRSFDriver *drv = (OGRSFDriver *) 0 ; jstring nom_drv; drv = *(OGRSFDriver **)&cPtr; const char *name = drv->GetName(); if(name!=NULL) nom_drv = env->NewStringUTF(name); else return NULL; return nom_drv; }
void RegisterOGRMSSQLSpatial() { if (! GDAL_CHECK_VERSION("OGR/MSSQLSpatial driver")) return; OGRSFDriver* poDriver = new OGRMSSQLSpatialDriver; poDriver->SetMetadataItem( GDAL_DMD_LONGNAME, "Microsoft SQL Server Spatial Database" #ifdef MSSQL_BCP_SUPPORTED " (BCP)" #endif ); poDriver->SetMetadataItem( GDAL_DMD_HELPTOPIC, "drv_mssqlspatial.html" ); poDriver->SetMetadataItem( GDAL_DMD_CREATIONOPTIONLIST, "<CreationOptionList/>"); poDriver->SetMetadataItem( GDAL_DS_LAYER_CREATIONOPTIONLIST, "<LayerCreationOptionList>" " <Option name='GEOM_TYPE' type='string-select' description='Format of geometry columns' default='geometry'>" " <Value>geometry</Value>" " <Value>geography</Value>" " </Option>" " <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='DIM' type='integer' description='Set to 2 to force the geometries to be 2D, or 3 to be 2.5D'/>" " <Option name='GEOMETRY_NAME' type='string' description='Name of geometry column.' default='ogr_geometry' deprecated_alias='GEOM_NAME'/>" " <Option name='SCHEMA' type='string' description='Name of schema into which to create the new table' default='dbo'/>" " <Option name='SRID' type='int' description='Forced SRID of the layer'/>" " <Option name='SPATIAL_INDEX' type='boolean' description='Whether to create a spatial index' default='YES'/>" " <Option name='UPLOAD_GEOM_FORMAT' type='string-select' description='Geometry format when creating or modifying features' default='wkb'>" " <Value>wkb</Value>" " <Value>wkt</Value>" " </Option>" " <Option name='FID' type='string' description='Name of the FID column to create' default='ogr_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='GEOMETRY_NULLABLE' type='boolean' description='Whether the values of the geometry column can be NULL' default='YES'/>" " <Option name='EXTRACT_SCHEMA_FROM_LAYER_NAME' type='boolean' description='Whether a dot in a layer name should be considered as the separator for the schema and table name' default='YES'/>" "</LayerCreationOptionList>"); poDriver->SetMetadataItem( GDAL_DMD_CONNECTION_PREFIX, "MSSQL:"); poDriver->SetMetadataItem( GDAL_DMD_CREATIONFIELDDATATYPES, "Integer Integer64 Real String Date Time " "DateTime Binary" ); poDriver->SetMetadataItem( GDAL_DCAP_NOTNULL_FIELDS, "YES" ); poDriver->SetMetadataItem( GDAL_DCAP_DEFAULT_FIELDS, "YES" ); poDriver->SetMetadataItem( GDAL_DCAP_NOTNULL_GEOMFIELDS, "YES" ); OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver(poDriver); }