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