📄 s57.h
字号:
int GetOBJL(); const char *GetDescription(); const char *GetAcronym(); char **GetAttributeList( const char * = NULL ); char GetClassCode(); char **GetPrimitives(); // attribute table methods. int GetMaxAttrIndex() { return nAttrMax; } const char *GetAttrName( int i ) { return papszAttrNames[i]; } const char *GetAttrAcronym( int i ) { return papszAttrAcronym[i]; } char **GetAttrValues( int i ) { return papapszAttrValues[i]; } char GetAttrType( int i ) { return pachAttrType[i]; }#define SAT_ENUM 'E'#define SAT_LIST 'L'#define SAT_FLOAT 'F'#define SAT_INT 'I'#define SAT_CODE_STRING 'A'#define SAT_FREE_TEXT 'S' char GetAttrClass( int i ) { return pachAttrClass[i]; } int FindAttrByAcronym( const char * );};/************************************************************************//* DDFRecordIndex *//* *//* Maintain an index of DDF records based on an integer key. *//************************************************************************/typedef struct{ int nKey; DDFRecord *poRecord; void *pClientData;} DDFIndexedRecord;class CPL_DLL DDFRecordIndex{ int bSorted; int nRecordCount; int nRecordMax; int nLastObjlPos; /* rjensen. added for FindRecordByObjl() */ int nLastObjl; /* rjensen. added for FindRecordByObjl() */ DDFIndexedRecord *pasRecords; void Sort();public: DDFRecordIndex(); ~DDFRecordIndex(); void AddRecord( int nKey, DDFRecord * ); int RemoveRecord( int nKey ); DDFRecord *FindRecord( int nKey ); DDFRecord *FindRecordByObjl( int nObjl ); /* rjensen. added for FindRecordByObjl() */ void Clear(); int GetCount() { return nRecordCount; } DDFRecord *GetByIndex( int i ); void *GetClientInfoByIndex( int i ); void SetClientInfoByIndex( int i, void *pClientInfo );};/************************************************************************//* S57Reader *//************************************************************************/class CPL_DLL S57Reader{ S57ClassRegistrar *poRegistrar; int nFDefnCount; OGRFeatureDefn **papoFDefnList; OGRFeatureDefn *apoFDefnByOBJL[MAX_CLASSES]; char *pszModuleName; char *pszDSNM; DDFModule *poModule; int nCOMF; /* Coordinate multiplier */ int nSOMF; /* Vertical (sounding) multiplier */ int bFileIngested; DDFRecordIndex oVI_Index; DDFRecordIndex oVC_Index; DDFRecordIndex oVE_Index; DDFRecordIndex oVF_Index; int nNextVIIndex; int nNextVCIndex; int nNextVEIndex; int nNextVFIndex; int nNextFEIndex; DDFRecordIndex oFE_Index; char **papszOptions; int nOptionFlags; int iPointOffset; OGRFeature *poMultiPoint; void ClearPendingMultiPoint(); OGRFeature *NextPendingMultiPoint(); OGRFeature *AssembleFeature( DDFRecord *, OGRFeatureDefn * ); void ApplyObjectClassAttributes( DDFRecord *, OGRFeature *); void GenerateLNAMAndRefs( DDFRecord *, OGRFeature * ); void GenerateFSPTAttributes( DDFRecord *, OGRFeature * ); void AssembleSoundingGeometry( DDFRecord *, OGRFeature * ); void AssemblePointGeometry( DDFRecord *, OGRFeature * ); void AssembleLineGeometry( DDFRecord *, OGRFeature * ); void AssembleAreaGeometry( DDFRecord *, OGRFeature * ); int FetchPoint( int, int, double *, double *, double * = NULL ); int FetchLine( DDFRecord *, int, int, OGRLineString * ); OGRFeatureDefn *FindFDefn( DDFRecord * ); int ParseName( DDFField *, int = 0, int * = NULL ); int ApplyRecordUpdate( DDFRecord *, DDFRecord * ); int bMissingWarningIssued; int bAttrWarningIssued; public: S57Reader( const char * ); ~S57Reader(); void SetClassBased( S57ClassRegistrar * ); void SetOptions( char ** ); int GetOptionFlags() { return nOptionFlags; } int Open( int bTestOpen ); void Close(); DDFModule *GetModule() { return poModule; } const char *GetDSNM() { return pszDSNM; } void Ingest(); int ApplyUpdates( DDFModule * ); int FindAndApplyUpdates( const char *pszPath=NULL ); void Rewind(); OGRFeature *ReadNextFeature( OGRFeatureDefn * = NULL ); OGRFeature *ReadFeature( int nFID, OGRFeatureDefn * = NULL ); OGRFeature *ReadVector( int nFID, int nRCNM ); int GetNextFEIndex( int nRCNM = 100 ); void SetNextFEIndex( int nNewIndex, int nRCNM = 100 ); void AddFeatureDefn( OGRFeatureDefn * ); int CollectClassList( int *, int); OGRErr GetExtent( OGREnvelope *psExtent, int bForce ); };/************************************************************************//* S57Writer *//************************************************************************/class CPL_DLL S57Writer{public: S57Writer(); ~S57Writer(); void SetClassBased( S57ClassRegistrar * ); int CreateS57File( const char *pszFilename ); int Close(); int WriteGeometry( DDFRecord *, int, double *, double *, double * ); int WriteATTF( DDFRecord *, OGRFeature * ); int WritePrimitive( OGRFeature *poFeature ); int WriteCompleteFeature( OGRFeature *poFeature ); int WriteDSID( const char *pszDSNM = NULL, const char *pszISDT = NULL, const char *pszSTED = NULL, int nAGEN = 0, const char *pszCOMT = NULL ); int WriteDSPM( int nScale = 0 );private: DDFModule *poModule; S57ClassRegistrar *poRegistrar; int nNext0001Index; DDFRecord *MakeRecord(); int nCOMF; /* Coordinate multiplier */ int nSOMF; /* Vertical (sounding) multiplier */};/* -------------------------------------------------------------------- *//* Functions to create OGRFeatureDefns. *//* -------------------------------------------------------------------- */void CPL_DLL S57GenerateStandardAttributes( OGRFeatureDefn *, int );OGRFeatureDefn CPL_DLL *S57GenerateGeomFeatureDefn( OGRwkbGeometryType, int );OGRFeatureDefn CPL_DLL *S57GenerateObjectClassDefn( S57ClassRegistrar *, int, int );OGRFeatureDefn CPL_DLL *S57GenerateVectorPrimitiveFeatureDefn( int, int );#endif /* ndef _S57_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -