LCOV - code coverage report
Current view: top level - ogr/ogrsf_frmts/geojson - ogresrijsondriver.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 33 37 89.2 %
Date: 2024-11-21 22:18:42 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  OpenGIS Simple Features Reference Implementation
       4             :  * Purpose:  ESRIJSON driver
       5             :  * Author:   Even Rouault, <even.rouault at spatialys.com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2017, Even Rouault, <even.rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "cpl_port.h"
      14             : #include "ogr_geojson.h"
      15             : 
      16             : #include <stdlib.h>
      17             : #include <string.h>
      18             : 
      19             : #include "cpl_conv.h"
      20             : #include "cpl_error.h"
      21             : #include "gdal.h"
      22             : #include "gdal_priv.h"
      23             : #include "ogrgeojsonutils.h"
      24             : #include "ogrsf_frmts.h"
      25             : 
      26             : /************************************************************************/
      27             : /*                       OGRESRIJSONDriverIdentify()                    */
      28             : /************************************************************************/
      29             : 
      30       47375 : static int OGRESRIJSONDriverIdentify(GDALOpenInfo *poOpenInfo)
      31             : {
      32       47375 :     GeoJSONSourceType nSrcType = ESRIJSONDriverGetSourceType(poOpenInfo);
      33       47375 :     if (nSrcType == eGeoJSONSourceUnknown)
      34       47355 :         return FALSE;
      35          20 :     if (nSrcType == eGeoJSONSourceService)
      36             :     {
      37           1 :         if (poOpenInfo->IsSingleAllowedDriver("ESRIJSON"))
      38           1 :             return TRUE;
      39           0 :         if (!STARTS_WITH_CI(poOpenInfo->pszFilename, "ESRIJSON:"))
      40             :         {
      41           0 :             return -1;
      42             :         }
      43             :     }
      44          19 :     return TRUE;
      45             : }
      46             : 
      47             : /************************************************************************/
      48             : /*                           Open()                                     */
      49             : /************************************************************************/
      50             : 
      51          19 : static GDALDataset *OGRESRIJSONDriverOpen(GDALOpenInfo *poOpenInfo)
      52             : {
      53          19 :     GeoJSONSourceType nSrcType = ESRIJSONDriverGetSourceType(poOpenInfo);
      54          19 :     if (nSrcType == eGeoJSONSourceUnknown)
      55           0 :         return nullptr;
      56          19 :     return OGRGeoJSONDriverOpenInternal(poOpenInfo, nSrcType, "ESRIJSON");
      57             : }
      58             : 
      59             : /************************************************************************/
      60             : /*                          RegisterOGRESRIJSON()                       */
      61             : /************************************************************************/
      62             : 
      63        1595 : void RegisterOGRESRIJSON()
      64             : {
      65        1595 :     if (!GDAL_CHECK_VERSION("OGR/ESRIJSON driver"))
      66           0 :         return;
      67             : 
      68        1595 :     if (GDALGetDriverByName("ESRIJSON") != nullptr)
      69         302 :         return;
      70             : 
      71        1293 :     GDALDriver *poDriver = new GDALDriver();
      72             : 
      73        1293 :     poDriver->SetDescription("ESRIJSON");
      74        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VECTOR, "YES");
      75        1293 :     poDriver->SetMetadataItem(GDAL_DMD_LONGNAME, "ESRIJSON");
      76        1293 :     poDriver->SetMetadataItem(GDAL_DMD_EXTENSION, "json");
      77        1293 :     poDriver->SetMetadataItem(GDAL_DMD_HELPTOPIC,
      78        1293 :                               "drivers/vector/esrijson.html");
      79        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_Z_GEOMETRIES, "YES");
      80             : 
      81        1293 :     poDriver->SetMetadataItem(
      82             :         GDAL_DMD_OPENOPTIONLIST,
      83             :         "<OpenOptionList>"
      84             :         "  <Option name='FEATURE_SERVER_PAGING' type='boolean' "
      85             :         "description='Whether to automatically scroll through results with a "
      86             :         "ArcGIS Feature Service endpoint'/>"
      87        1293 :         "</OpenOptionList>");
      88             : 
      89        1293 :     poDriver->SetMetadataItem(GDAL_DMD_CREATIONOPTIONLIST,
      90        1293 :                               "<CreationOptionList/>");
      91             : 
      92        1293 :     poDriver->SetMetadataItem(GDAL_DCAP_VIRTUALIO, "YES");
      93        1293 :     poDriver->SetMetadataItem(GDAL_DMD_SUPPORTED_SQL_DIALECTS, "OGRSQL SQLITE");
      94             : 
      95        1293 :     poDriver->pfnOpen = OGRESRIJSONDriverOpen;
      96        1293 :     poDriver->pfnIdentify = OGRESRIJSONDriverIdentify;
      97             : 
      98        1293 :     GetGDALDriverManager()->RegisterDriver(poDriver);
      99             : }

Generated by: LCOV version 1.14