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