/src/gdal/ogr/ogrsf_frmts/edigeo/ogredigeodriver.cpp
Line | Count | Source |
1 | | /****************************************************************************** |
2 | | * |
3 | | * Project: EDIGEO Translator |
4 | | * Purpose: Implements OGREDIGEODriver. |
5 | | * Author: Even Rouault, even dot rouault at spatialys.com |
6 | | * |
7 | | ****************************************************************************** |
8 | | * Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com> |
9 | | * |
10 | | * SPDX-License-Identifier: MIT |
11 | | ****************************************************************************/ |
12 | | |
13 | | #include "ogr_edigeo.h" |
14 | | #include "cpl_conv.h" |
15 | | |
16 | | extern "C" void RegisterOGREDIGEO(); |
17 | | |
18 | | // g++ -fPIC -g -Wall ogr/ogrsf_frmts/edigeo/*.cpp -shared -o ogr_EDIGEO.so |
19 | | // -Iport -Igcore -Iogr -Iogr/ogrsf_frmts -Iogr/ogrsf_frmts/generic |
20 | | // -Iogr/ogrsf_frmts/edigeo -L. -lgdal |
21 | | |
22 | | /************************************************************************/ |
23 | | /* OGREDIGEODriverIdentify() */ |
24 | | /************************************************************************/ |
25 | | |
26 | | static int OGREDIGEODriverIdentify(GDALOpenInfo *poOpenInfo) |
27 | | |
28 | 113k | { |
29 | 113k | return poOpenInfo->fpL != nullptr && |
30 | 60.7k | poOpenInfo->IsExtensionEqualToCI("thf"); |
31 | 113k | } |
32 | | |
33 | | /************************************************************************/ |
34 | | /* Open() */ |
35 | | /************************************************************************/ |
36 | | |
37 | | static GDALDataset *OGREDIGEODriverOpen(GDALOpenInfo *poOpenInfo) |
38 | | |
39 | 93 | { |
40 | 93 | if (poOpenInfo->eAccess == GA_Update || |
41 | 93 | !OGREDIGEODriverIdentify(poOpenInfo)) |
42 | 0 | return nullptr; |
43 | | |
44 | 93 | OGREDIGEODataSource *poDS = new OGREDIGEODataSource(); |
45 | | |
46 | 93 | if (!poDS->Open(poOpenInfo->pszFilename)) |
47 | 93 | { |
48 | 93 | delete poDS; |
49 | 93 | poDS = nullptr; |
50 | 93 | } |
51 | | |
52 | 93 | return poDS; |
53 | 93 | } |
54 | | |
55 | | /************************************************************************/ |
56 | | /* RegisterOGREDIGEO() */ |
57 | | /************************************************************************/ |
58 | | |
59 | | void RegisterOGREDIGEO() |
60 | | |
61 | 24 | { |
62 | 24 | if (GDALGetDriverByName("EDIGEO") != nullptr) |
63 | 0 | return; |
64 | | |
65 | 24 | GDALDriver *poDriver = new GDALDriver(); |
66 | | |
67 | 24 | poDriver->SetDescription("EDIGEO"); |
68 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); |
69 | 24 | poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, |
70 | 24 | "French EDIGEO exchange format"); |
71 | 24 | poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "thf"); |
72 | 24 | poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/edigeo.html"); |
73 | | |
74 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES"); |
75 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES, "YES"); |
76 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_FEATURE_STYLES_READ, "YES"); |
77 | 24 | poDriver->SetMetadataItem(GDAL_DCAP_MULTIPLE_VECTOR_LAYERS, "YES"); |
78 | 24 | poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE"); |
79 | | |
80 | 24 | poDriver->pfnOpen = OGREDIGEODriverOpen; |
81 | 24 | poDriver->pfnIdentify = OGREDIGEODriverIdentify; |
82 | | |
83 | 24 | GetGDALDriverManager()->RegisterDriver(poDriver); |
84 | 24 | } |