⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntf.h

📁 支持各种栅格图像和矢量图像读取的库
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * $Id: ntf.h 10646 2007-01-18 02:38:10Z warmerdam $ * * Project:  NTF Translator * Purpose:  Main declarations for NTF translator. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************/#ifndef _NTF_H_INCLUDED#define _NTF_H_INCLUDED#include "cpl_conv.h"#include "ogrsf_frmts.h"/* -------------------------------------------------------------------- *//*      Record types.                                                   *//* -------------------------------------------------------------------- */#define NRT_VHR       1                /* Volume Header Record */#define NRT_DHR       2                /* Database Header Record */#define NRT_FCR       5                /* Feature Classification Record */#define NRT_SHR       7                /* Section Header Record */#define NRT_NAMEREC  11                /* Name Record */#define NRT_NAMEPOSTN 12               /* Name Position */#define NRT_ATTREC   14                /* Attribute Record */#define NRT_POINTREC 15                /* Point Record */#define NRT_NODEREC  16                /* Node Record */#define NRT_GEOMETRY 21                /* Geometry Record */#define NRT_GEOMETRY3D 22              /* 3D Geometry Record */#define NRT_LINEREC  23                /* Line Record */#define NRT_CHAIN    24                /* Chain */#define NRT_POLYGON  31                /* Polygon */#define NRT_CPOLY    33                /* Complex Polygon */#define NRT_COLLECT  34                /* Collection of featues */#define NRT_ADR      40                /* Attribute Description Record */#define NRT_CODELIST 42                /* Codelist Record (ie. BL2000) */#define NRT_TEXTREC  43                /* Text */#define NRT_TEXTPOS  44                /* Text position */#define NRT_TEXTREP  45                /* Text representation */#define NRT_GRIDHREC 50                /* Grid Header Record */#define NRT_GRIDREC  51                /* Grid Data Record */#define NRT_COMMENT  90                /* Comment record */#define NRT_VTR      99                /* Volume Termination Record *//* -------------------------------------------------------------------- *//*      Product names (DBNAME) and codes.                               *//* -------------------------------------------------------------------- */#define NPC_UNKNOWN             0#define NPC_LANDLINE            1#define NPC_LANDLINE99          2#define NTF_LANDLINE            "LAND-LINE.93"#define NTF_LANDLINE_PLUS       "LAND-LINE.93+"#define NPC_STRATEGI            3#define NTF_STRATEGI            "Strategi_02.96"#define NPC_MERIDIAN            4#define NTF_MERIDIAN            "Meridian_01.95"#define NPC_BOUNDARYLINE        5#define NTF_BOUNDARYLINE        "Boundary-Line"#define NPC_BASEDATA            6#define NTF_BASEDATA            "BaseData.GB_01.96"#define NPC_OSCAR_ASSET         7#define NPC_OSCAR_TRAFFIC       8#define NPC_OSCAR_ROUTE         9#define NPC_OSCAR_NETWORK       10#define NPC_ADDRESS_POINT       11#define NPC_CODE_POINT          12#define NPC_CODE_POINT_PLUS     13#define NPC_LANDFORM_PROFILE_CONT 14#define NPC_LANDRANGER_CONT     15#define NTF_LANDRANGER_CONT     "OS_LANDRANGER_CONT"#define NPC_LANDRANGER_DTM      16#define NPC_LANDFORM_PROFILE_DTM 17#define NPC_BL2000              18#define NPC_MERIDIAN2           19#define NTF_MERIDIAN2           "Meridian_02.01"/************************************************************************//*                              NTFRecord                               *//************************************************************************/class NTFRecord{    int      nType;    int      nLength;    char    *pszData;    int      ReadPhysicalLine( FILE *fp, char *pszLine );      public:             NTFRecord( FILE * );             ~NTFRecord();    int      GetType() { return nType; }    int      GetLength() { return nLength; }    const char *GetData() { return pszData; }    const char *GetField( int, int );};/************************************************************************//*                           NTFGenericClass                            *//************************************************************************/class NTFGenericClass{public:    int         nFeatureCount;    int         b3D;    int         nAttrCount;    char        **papszAttrNames;    char        **papszAttrFormats;    int         *panAttrMaxWidth;    int         *pabAttrMultiple;                NTFGenericClass();                ~NTFGenericClass();        void        CheckAddAttr( const char *, const char *, int );    void        SetMultiple( const char * );};/************************************************************************//*                             NTFCodeList                              *//************************************************************************/class NTFCodeList{public:                NTFCodeList( NTFRecord * );                ~NTFCodeList();    const char  *Lookup( const char * );    char        szValType[3];   /* attribute code for list, ie. AC */    char        szFInter[6];    /* format of code values */     int         nNumCode;    char        **papszCodeVal; /* Short code value */    char        **papszCodeDes; /* Long description of code */};/************************************************************************//*                              NTFAttDesc                              *//************************************************************************/typedef struct{  char  val_type     [ 2 +1];  char  fwidth       [ 3 +1];  char  finter       [ 5 +1];  char  att_name     [ 100 ];  NTFCodeList *poCodeList;} NTFAttDesc;class OGRNTFLayer;class OGRNTFRasterLayer;class OGRNTFDataSource;class NTFFileReader;#define MAX_REC_GROUP   100typedef OGRFeature *(*NTFFeatureTranslator)(NTFFileReader *,                                            OGRNTFLayer *,                                            NTFRecord **);typedef int (*NTFRecordGrouper)(NTFFileReader *, NTFRecord **, NTFRecord *);/************************************************************************//*                            NTFFileReader                             *//************************************************************************/class NTFFileReader{    char             *pszFilename;    OGRNTFDataSource *poDS;            FILE             *fp;    // feature class list.    int               nFCCount;    char            **papszFCNum;    char            **papszFCName;    // attribute definitions    int               nAttCount;    NTFAttDesc       *pasAttDesc;    char             *pszTileName;    int               nCoordWidth;    int               nZWidth;    int               nNTFLevel;    double            dfXYMult;    double            dfZMult;    double            dfXOrigin;    double            dfYOrigin;    double            dfTileXSize;    double            dfTileYSize;    double            dfScale;    double            dfPaperToGround;    long              nStartPos;    long              nPreSavedPos;    long              nPostSavedPos;    NTFRecord        *poSavedRecord;    long              nSavedFeatureId;    long              nBaseFeatureId;    long              nFeatureCount;         NTFRecord         *apoCGroup[MAX_REC_GROUP+1];    char             *pszProduct;    char             *pszPVName;    int               nProduct;    void              EstablishLayers();    void              ClearCGroup();    void              ClearDefs();    OGRNTFLayer       *apoTypeTranslation[100];    NTFRecordGrouper  pfnRecordGrouper;    int               anIndexSize[100];    NTFRecord         **apapoRecordIndex[100];    int               bIndexBuilt;    int               bIndexNeeded;    void              EstablishRasterAccess();    int               nRasterXSize;    int               nRasterYSize;    int               nRasterDataType;    double            adfGeoTransform[6];    OGRNTFRasterLayer *poRasterLayer;    long             *panColumnOffset;    int               bCacheLines;    int               nLineCacheSize;    OGRGeometry     **papoLineCache;  public:                      NTFFileReader( OGRNTFDataSource * );                      ~NTFFileReader();    int               Open( const char * pszFilename = NULL );    void              Close();    FILE              *GetFP() { return fp; }    void              GetFPPos( long *pnPos, long * pnFeatureId);    int               SetFPPos( long nPos, long nFeatureId );    void              Reset();    void              SetBaseFID( long nFeatureId );          OGRGeometry      *ProcessGeometry( NTFRecord *, int * = NULL );    OGRGeometry      *ProcessGeometry3D( NTFRecord *, int * = NULL );    int               ProcessAttDesc( NTFRecord *, NTFAttDesc * );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -