Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: NAS Reader 4 : * Purpose: Declarations for OGR wrapper classes for NAS, and NAS<->OGR 5 : * translation of geometry. 6 : * Author: Frank Warmerdam, warmerdam@pobox.com 7 : * 8 : ****************************************************************************** 9 : * Copyright (c) 2002, Frank Warmerdam 10 : * 11 : * SPDX-License-Identifier: MIT 12 : ****************************************************************************/ 13 : 14 : #ifndef OGR_NAS_H_INCLUDED 15 : #define OGR_NAS_H_INCLUDED 16 : 17 : #include "ogrsf_frmts.h" 18 : #include "nasreaderp.h" 19 : #include "ogr_api.h" 20 : #include <vector> 21 : 22 : class OGRNASDataSource; 23 : 24 : /************************************************************************/ 25 : /* OGRNASLayer */ 26 : /************************************************************************/ 27 : 28 : class OGRNASLayer final : public OGRLayer 29 : { 30 : OGRFeatureDefn *poFeatureDefn; 31 : 32 : int iNextNASId; 33 : 34 : OGRNASDataSource *poDS; 35 : 36 : GMLFeatureClass *poFClass; 37 : 38 : public: 39 : OGRNASLayer(const char *pszName, OGRNASDataSource *poDS); 40 : 41 : virtual ~OGRNASLayer(); 42 : 43 : void ResetReading() override; 44 : OGRFeature *GetNextFeature() override; 45 : 46 : GIntBig GetFeatureCount(int bForce = TRUE) override; 47 : OGRErr IGetExtent(int iGeomField, OGREnvelope *psExtent, 48 : bool bForce) override; 49 : 50 86 : OGRFeatureDefn *GetLayerDefn() override 51 : { 52 86 : return poFeatureDefn; 53 : } 54 : 55 : int TestCapability(const char *) override; 56 : }; 57 : 58 : /************************************************************************/ 59 : /* OGRNASDataSource */ 60 : /************************************************************************/ 61 : 62 : class OGRNASDataSource final : public GDALDataset 63 : { 64 : OGRLayer **papoLayers; 65 : int nLayers; 66 : 67 : OGRNASLayer *TranslateNASSchema(GMLFeatureClass *); 68 : 69 : // input related parameters. 70 : IGMLReader *poReader; 71 : 72 : void InsertHeader(); 73 : 74 : public: 75 : OGRNASDataSource(); 76 : ~OGRNASDataSource(); 77 : 78 : int Open(const char *); 79 : int Create(const char *pszFile, char **papszOptions); 80 : 81 7 : int GetLayerCount() override 82 : { 83 7 : return nLayers; 84 : } 85 : 86 : OGRLayer *GetLayer(int) override; 87 : 88 20 : IGMLReader *GetReader() 89 : { 90 20 : return poReader; 91 : } 92 : 93 : void GrowExtents(OGREnvelope *psGeomBounds); 94 : }; 95 : 96 : #endif /* OGR_NAS_H_INCLUDED */