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 : ~OGRNASLayer() override; 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 : using OGRLayer::GetLayerDefn; 51 : 52 86 : const OGRFeatureDefn *GetLayerDefn() const override 53 : { 54 86 : return poFeatureDefn; 55 : } 56 : 57 : int TestCapability(const char *) const override; 58 : }; 59 : 60 : /************************************************************************/ 61 : /* OGRNASDataSource */ 62 : /************************************************************************/ 63 : 64 : class OGRNASDataSource final : public GDALDataset 65 : { 66 : OGRLayer **papoLayers; 67 : int nLayers; 68 : 69 : OGRNASLayer *TranslateNASSchema(GMLFeatureClass *); 70 : 71 : // input related parameters. 72 : IGMLReader *poReader; 73 : 74 : void InsertHeader(); 75 : 76 : public: 77 : OGRNASDataSource(); 78 : ~OGRNASDataSource() override; 79 : 80 : int Open(const char *); 81 : int Create(const char *pszFile, char **papszOptions); 82 : 83 7 : int GetLayerCount() const override 84 : { 85 7 : return nLayers; 86 : } 87 : 88 : const OGRLayer *GetLayer(int) const override; 89 : 90 20 : IGMLReader *GetReader() 91 : { 92 20 : return poReader; 93 : } 94 : 95 : void GrowExtents(OGREnvelope *psGeomBounds); 96 : }; 97 : 98 : #endif /* OGR_NAS_H_INCLUDED */