~ubuntu-branches/debian/sid/gdal/sid

« back to all changes in this revision

Viewing changes to ogr/ogrsf_frmts/pds/ogr_pds.h

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2012-05-07 15:04:42 UTC
  • mfrom: (5.5.16 experimental)
  • Revision ID: package-import@ubuntu.com-20120507150442-2eks97loeh6rq005
Tags: 1.9.0-1
* Ready for sid, starting transition.
* All symfiles updated to latest builds.
* Added dh_numpy call in debian/rules to depend on numpy ABI.
* Policy bumped to 3.9.3, no changes required.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * $Id: ogr_pds.h 20996 2010-10-28 18:38:15Z rouault $
 
3
 *
 
4
 * Project:  PDS Translator
 
5
 * Purpose:  Definition of classes for OGR .pdstable driver.
 
6
 * Author:   Even Rouault, even dot rouault at mines dash paris dot org
 
7
 *
 
8
 ******************************************************************************
 
9
 * Copyright (c) 2010, Even Rouault <even dot rouault at mines dash paris dot org>
 
10
 *
 
11
 * Permission is hereby granted, free of charge, to any person obtaining a
 
12
 * copy of this software and associated documentation files (the "Software"),
 
13
 * to deal in the Software without restriction, including without limitation
 
14
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 
15
 * and/or sell copies of the Software, and to permit persons to whom the
 
16
 * Software is furnished to do so, subject to the following conditions:
 
17
 *
 
18
 * The above copyright notice and this permission notice shall be included
 
19
 * in all copies or substantial portions of the Software.
 
20
 *
 
21
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
22
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
23
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 
24
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 
25
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 
26
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 
27
 * DEALINGS IN THE SOFTWARE.
 
28
 ****************************************************************************/
 
29
 
 
30
#ifndef _OGR_PDS_H_INCLUDED
 
31
#define _OGR_PDS_H_INCLUDED
 
32
 
 
33
#include "ogrsf_frmts.h"
 
34
#include "nasakeywordhandler.h"
 
35
 
 
36
/************************************************************************/
 
37
/*                              OGRPDSLayer                             */
 
38
/************************************************************************/
 
39
 
 
40
typedef enum
 
41
{
 
42
    ASCII_REAL,
 
43
    ASCII_INTEGER,
 
44
    CHARACTER,
 
45
    MSB_INTEGER,
 
46
    MSB_UNSIGNED_INTEGER,
 
47
    IEEE_REAL,
 
48
} FieldFormat;
 
49
 
 
50
typedef struct
 
51
{
 
52
    int nStartByte;
 
53
    int nByteCount;
 
54
    FieldFormat eFormat;
 
55
    int nItemBytes;
 
56
    int nItems;
 
57
} FieldDesc;
 
58
 
 
59
class OGRPDSLayer : public OGRLayer
 
60
{
 
61
    OGRFeatureDefn*    poFeatureDefn;
 
62
 
 
63
    CPLString          osTableID;
 
64
    VSILFILE*          fpPDS;
 
65
    int                nRecords;
 
66
    int                nStartBytes;
 
67
    int                nRecordSize;
 
68
    GByte             *pabyRecord;
 
69
    int                nNextFID;
 
70
    int                nLongitudeIndex;
 
71
    int                nLatitudeIndex;
 
72
 
 
73
    FieldDesc*         pasFieldDesc;
 
74
    
 
75
    void               ReadStructure(CPLString osStructureFilename);
 
76
    OGRFeature        *GetNextRawFeature();
 
77
 
 
78
  public:
 
79
                        OGRPDSLayer(CPLString osTableID,
 
80
                                         const char* pszLayerName, VSILFILE* fp,
 
81
                                         CPLString osLabelFilename,
 
82
                                         CPLString osStructureFilename,
 
83
                                         int nRecords,
 
84
                                         int nStartBytes, int nRecordSize,
 
85
                                         GByte* pabyRecord, int bIsASCII);
 
86
                        ~OGRPDSLayer();
 
87
 
 
88
 
 
89
    virtual void                ResetReading();
 
90
    virtual OGRFeature *        GetNextFeature();
 
91
 
 
92
    virtual OGRFeatureDefn *    GetLayerDefn() { return poFeatureDefn; }
 
93
 
 
94
    virtual int                 TestCapability( const char * );
 
95
 
 
96
    virtual OGRSpatialReference *GetSpatialRef() { return NULL; }
 
97
 
 
98
    virtual int                 GetFeatureCount(int bForce = TRUE );
 
99
 
 
100
    virtual OGRFeature         *GetFeature( long nFID );
 
101
 
 
102
    virtual OGRErr              SetNextByIndex( long nIndex );
 
103
};
 
104
 
 
105
/************************************************************************/
 
106
/*                           OGRPDSDataSource                           */
 
107
/************************************************************************/
 
108
 
 
109
class OGRPDSDataSource : public OGRDataSource
 
110
{
 
111
    char*               pszName;
 
112
 
 
113
    OGRLayer**          papoLayers;
 
114
    int                 nLayers;
 
115
 
 
116
    NASAKeywordHandler  oKeywords;
 
117
 
 
118
    CPLString           osTempResult;
 
119
    const char         *GetKeywordSub( const char *pszPath, 
 
120
                                       int iSubscript,
 
121
                                       const char *pszDefault );
 
122
 
 
123
    int                 LoadTable(const char* pszFilename,
 
124
                                  int nRecordSize,
 
125
                                  CPLString osTableID);
 
126
 
 
127
  public:
 
128
                        OGRPDSDataSource();
 
129
                        ~OGRPDSDataSource();
 
130
 
 
131
    int                 Open( const char * pszFilename,
 
132
                              int bUpdate );
 
133
 
 
134
    virtual const char*         GetName() { return pszName; }
 
135
 
 
136
    virtual int                 GetLayerCount() { return nLayers; }
 
137
    virtual OGRLayer*           GetLayer( int );
 
138
 
 
139
    virtual int                 TestCapability( const char * );
 
140
 
 
141
    static void         CleanString( CPLString &osInput );
 
142
};
 
143
 
 
144
/************************************************************************/
 
145
/*                              OGRPDSDriver                            */
 
146
/************************************************************************/
 
147
 
 
148
class OGRPDSDriver : public OGRSFDriver
 
149
{
 
150
  public:
 
151
                ~OGRPDSDriver();
 
152
 
 
153
    virtual const char*         GetName();
 
154
    virtual OGRDataSource*      Open( const char *, int );
 
155
    virtual int                 TestCapability( const char * );
 
156
};
 
157
 
 
158
 
 
159
#endif /* ndef _OGR_PDS_H_INCLUDED */