Line data Source code
1 : /****************************************************************************** 2 : * $I$ 3 : * 4 : * Project: Idrisi Translator 5 : * Purpose: Implements OGRIdrisiDriver. 6 : * Author: Even Rouault, even dot rouault at spatialys.com 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com> 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #include "cpl_conv.h" 15 : #include "ogr_idrisi.h" 16 : #include "ogrsf_frmts.h" 17 : 18 : /************************************************************************/ 19 : /* Open() */ 20 : /************************************************************************/ 21 : 22 24766 : static GDALDataset *OGRIdrisiOpen(GDALOpenInfo *poOpenInfo) 23 : 24 : { 25 24766 : if (poOpenInfo->eAccess == GA_Update) 26 : { 27 236 : return nullptr; 28 : } 29 : 30 : // -------------------------------------------------------------------- 31 : // Does this appear to be a .vct file? 32 : // -------------------------------------------------------------------- 33 24530 : if (!poOpenInfo->IsExtensionEqualToCI("vct")) 34 24527 : return nullptr; 35 : 36 6 : auto poDS = std::make_unique<OGRIdrisiDataSource>(); 37 : 38 3 : if (!poDS->Open(poOpenInfo->pszFilename)) 39 : { 40 0 : return nullptr; 41 : } 42 : 43 3 : return poDS.release(); 44 : } 45 : 46 : /************************************************************************/ 47 : /* RegisterOGRIdrisi() */ 48 : /************************************************************************/ 49 : 50 1682 : void RegisterOGRIdrisi() 51 : 52 : { 53 1682 : if (GDALGetDriverByName("Idrisi") != nullptr) 54 301 : return; 55 : 56 1381 : GDALDriver *poDriver = new GDALDriver(); 57 1381 : poDriver->SetDescription("Idrisi"); 58 1381 : poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Idrisi Vector (.vct)"); 59 1381 : poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "vct"); 60 1381 : poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); 61 1381 : poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); 62 1381 : poDriver->pfnOpen = OGRIdrisiOpen; 63 1381 : GetGDALDriverManager()->RegisterDriver(poDriver); 64 : }