Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: SOSI Translator 4 : * Purpose: Implements OGRSOSIDriver. 5 : * Author: Thomas Hirsch, <thomas.hirsch statkart no> 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2010, Thomas Hirsch 9 : * Copyright (c) 2010, Even Rouault <even dot rouault at spatialys.com> 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #include "gdal_frmts.h" 15 : #include "gdalplugindriverproxy.h" 16 : 17 : #include "ogrsf_frmts.h" 18 : 19 : #include "ogrsosidrivercore.h" 20 : 21 : /************************************************************************/ 22 : /* OGRSOSIDriverIdentify() */ 23 : /************************************************************************/ 24 : 25 53144 : int OGRSOSIDriverIdentify(GDALOpenInfo *poOpenInfo) 26 : 27 : { 28 53144 : if (poOpenInfo->fpL == nullptr || 29 2993 : strstr((const char *)poOpenInfo->pabyHeader, ".HODE") == nullptr) 30 53138 : return FALSE; 31 : 32 : // TODO: add better identification 33 6 : return -1; 34 : } 35 : 36 : /************************************************************************/ 37 : /* OGRSOSIDriverSetCommonMetadata() */ 38 : /************************************************************************/ 39 : 40 2109 : void OGRSOSIDriverSetCommonMetadata(GDALDriver *poDriver) 41 : { 42 2109 : poDriver->SetDescription(DRIVER_NAME); 43 2109 : poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES"); 44 : // GDAL_DMD_CREATIONFIELDDATATYPES should also be defined if CreateField is 45 : // supported poDriver->SetMetadataItem( GDAL_DCAP_CREATE_FIELD, "YES" ); 46 2109 : poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "Norwegian SOSI Standard"); 47 2109 : poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC, "drivers/vector/sosi.html"); 48 2109 : poDriver->SetMetadataItem( 49 : GDAL_DMD_OPENOPTIONLIST, 50 : "<OpenOptionList>" 51 : "<Option name='appendFieldsMap' type='string' description='Default is " 52 : "that all rows for equal field names will be appended in a feature, " 53 : "but with this parameter you select what field this should be valid " 54 : "for. With appendFieldsMap=f1&f2, Append will be done for field f1 " 55 : "and f2 using a comma as delimiter.'/>" 56 2109 : "</OpenOptionList>"); 57 2109 : poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE"); 58 : 59 2109 : poDriver->pfnIdentify = OGRSOSIDriverIdentify; 60 2109 : poDriver->SetMetadataItem(GDAL_DCAP_OPEN, "YES"); 61 2109 : } 62 : 63 : /************************************************************************/ 64 : /* DeclareDeferredOGRSOSIPlugin() */ 65 : /************************************************************************/ 66 : 67 : #ifdef PLUGIN_FILENAME 68 2038 : void DeclareDeferredOGRSOSIPlugin() 69 : { 70 2038 : if (GDALGetDriverByName(DRIVER_NAME) != nullptr) 71 : { 72 283 : return; 73 : } 74 1755 : auto poDriver = new GDALPluginDriverProxy(PLUGIN_FILENAME); 75 : #ifdef PLUGIN_INSTALLATION_MESSAGE 76 : poDriver->SetMetadataItem(GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE, 77 : PLUGIN_INSTALLATION_MESSAGE); 78 : #endif 79 1755 : OGRSOSIDriverSetCommonMetadata(poDriver); 80 1755 : GetGDALDriverManager()->DeclareDeferredPluginDriver(poDriver); 81 : } 82 : #endif