/src/gdal/ogr/ogrsf_frmts/plscenes/ogrplscenesdriver.cpp
Line | Count | Source |
1 | | /****************************************************************************** |
2 | | * |
3 | | * Project: PlanetLabs scene driver |
4 | | * Purpose: PlanetLabs scene driver |
5 | | * Author: Even Rouault, even dot rouault at spatialys.com |
6 | | * |
7 | | ****************************************************************************** |
8 | | * Copyright (c) 2015-2016, Planet Labs |
9 | | * |
10 | | * SPDX-License-Identifier: MIT |
11 | | ****************************************************************************/ |
12 | | |
13 | | #include "ogr_plscenes.h" |
14 | | #include "ogrplscenesdrivercore.h" |
15 | | |
16 | | /************************************************************************/ |
17 | | /* OGRPLScenesOpen() */ |
18 | | /************************************************************************/ |
19 | | |
20 | | static GDALDataset *OGRPLScenesOpen(GDALOpenInfo *poOpenInfo) |
21 | 62 | { |
22 | 62 | if (!OGRPLSCENESDriverIdentify(poOpenInfo) || |
23 | 62 | poOpenInfo->eAccess == GA_Update) |
24 | 0 | return nullptr; |
25 | | |
26 | 62 | char **papszOptions = CSLTokenizeStringComplex( |
27 | 62 | poOpenInfo->pszFilename + strlen("PLScenes:"), ",", TRUE, FALSE); |
28 | 62 | CPLString osVersion = CSLFetchNameValueDef( |
29 | 62 | papszOptions, "version", |
30 | 62 | CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "VERSION", "")); |
31 | 62 | CSLDestroy(papszOptions); |
32 | | |
33 | 62 | if (EQUAL(osVersion, "v0") || EQUAL(osVersion, "v1")) |
34 | 0 | { |
35 | 0 | CPLError(CE_Failure, CPLE_AppDefined, |
36 | 0 | "This API version has been removed or deprecated. " |
37 | 0 | "Please use DATA_V1 API instead"); |
38 | 0 | return nullptr; |
39 | 0 | } |
40 | 62 | else if (EQUAL(osVersion, "data_v1") || EQUAL(osVersion, "")) |
41 | 62 | { |
42 | 62 | return OGRPLScenesDataV1Dataset::Open(poOpenInfo); |
43 | 62 | } |
44 | 0 | else |
45 | 0 | { |
46 | 0 | CPLError(CE_Failure, CPLE_AppDefined, "Unhandled API version: %s", |
47 | 0 | osVersion.c_str()); |
48 | 0 | return nullptr; |
49 | 0 | } |
50 | 62 | } |
51 | | |
52 | | /************************************************************************/ |
53 | | /* RegisterOGRPLSCENES() */ |
54 | | /************************************************************************/ |
55 | | |
56 | | void RegisterOGRPLSCENES() |
57 | | |
58 | 22 | { |
59 | 22 | if (GDALGetDriverByName(DRIVER_NAME) != nullptr) |
60 | 0 | return; |
61 | | |
62 | 22 | GDALDriver *poDriver = new GDALDriver(); |
63 | 22 | OGRPLSCENESDriverSetCommonMetadata(poDriver); |
64 | | |
65 | 22 | poDriver->pfnOpen = OGRPLScenesOpen; |
66 | | |
67 | 22 | GetGDALDriverManager()->RegisterDriver(poDriver); |
68 | 22 | } |