/src/gdal/ogr/ogrsf_frmts/idrisi/ogridrisidriver.cpp
Line | Count | Source |
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 | | static GDALDataset *OGRIdrisiOpen(GDALOpenInfo *poOpenInfo) |
23 | | |
24 | 102k | { |
25 | 102k | if (poOpenInfo->eAccess == GA_Update) |
26 | 52 | { |
27 | 52 | return nullptr; |
28 | 52 | } |
29 | | |
30 | | // -------------------------------------------------------------------- |
31 | | // Does this appear to be a .vct file? |
32 | | // -------------------------------------------------------------------- |
33 | 102k | if (!poOpenInfo->IsExtensionEqualToCI("vct")) |
34 | 102k | return nullptr; |
35 | | |
36 | 11 | auto poDS = std::make_unique<OGRIdrisiDataSource>(); |
37 | | |
38 | 11 | if (!poDS->Open(poOpenInfo->pszFilename)) |
39 | 11 | { |
40 | 11 | return nullptr; |
41 | 11 | } |
42 | | |
43 | 0 | return poDS.release(); |
44 | 11 | } |
45 | | |
46 | | /************************************************************************/ |
47 | | /* RegisterOGRIdrisi() */ |
48 | | /************************************************************************/ |
49 | | |
50 | | void RegisterOGRIdrisi() |
51 | | |
52 | 24 | { |
53 | 24 | if (GDALGetDriverByName("Idrisi") != nullptr) |
54 | 0 | return; |
55 | | |
56 | 24 | GDALDriver *poDriver = new GDALDriver(); |
57 | 24 | poDriver->SetDescription("Idrisi"); |
58 | 24 | poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Idrisi Vector (.vct)"); |
59 | 24 | poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "vct"); |
60 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); |
61 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); |
62 | 24 | poDriver->pfnOpen = OGRIdrisiOpen; |
63 | 24 | GetGDALDriverManager()->RegisterDriver(poDriver); |
64 | 24 | } |