//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#ifndef ___FUNCTION_TOOLKIT_H__#define ___FUNCTION_TOOLKIT_H__#include "ProcessFunction/UGLogTool.h"#include "Stream/ugdefs.h"#include "Engine/UGDataSource.h"#include "DataExchange/UGDataExchange.h"#include "FileParser/UGRasterConfigParams.h"#include "Map/UGMap.h"#include "GridModeling/UGSurfaceAnalyst.h"#include "GridModeling/UGGeneralizeOperator.h"#include "Generalization/UGTopoDissolve.h"#include "GridAnalyst/UGFocalStatisticAnalysis.h"#include "GridAnalyst/UGZonalStatisticAnalysis.h"#include "GridModeling/UGTerrainBuilder.h"#include "ossim/base/ossimKeywordlist.h"#include "ossim/base/ossimConnectableObject.h"#include "ossim/projection/ossimMapProjection.h"#include "ossim/imaging/ossimImageCombiner.h"#include "ossim/imaging/ossimTiffWriter.h"#include "xercesc/parsers/XercesDOMParser.hpp"#include "xercesc/dom/DOMDocument.hpp"#include "xercesc/dom/DOMElement.hpp"#include "xercesc/dom/DOMNodeIterator.hpp"#include "xercesc/util/XMLString.hpp"#include "xercesc/dom/DOMNamedNodeMap.hpp"#include "xercesc/dom/DOMNodeList.hpp"#include "xercesc/dom/DOMNode.hpp"#include "CacheBuilder/UGMapCache.h"//using namespace XERCES_CPP_NAMESPACE;namespace UGC{class UGProjectionConfig;////////////////////////////////////////////////////////////////////////////辅助结构体和类////////////////////////////////////////////////////////////////////////////{{OSSIM投影相关struct ossimProjectStruct{UGString Name;UGbool HasZone;UGint Zone;UGStrArray Files;};ossimProjectStruct * NewOSSIMProjectStruct();UGbool ParserProjectionConfig(const UGString & strFile, UGArray<ossimProjectStruct*> & arrays);ossimProjectStruct * FindProjection(const UGString & strPath, const UGArray<ossimProjectStruct*> & arrays);void ReleaseProjects(UGArray<ossimProjectStruct*> & arraysPrj);ossimMapProjection * CreateOSSIMMapProject(const ossimProjectStruct & prj,UGLogTool * pLog);void ReleaseOSSIMMapProject(ossimMapProjection * pPrj);//}}OSSIM投影相关PROCESSFUNCTION_API void GetResourceContent(UGLogTool * pLog,UGStringEx *logContent,UGLogTool::LogType eType, UGString strKey,UGString dataName);void GetResourceContent(UGLogTool * pLog,UGStringEx & logContent,UGLogTool::LogType eType,UGString strKey,...);UGSize GetMapClientSize(UGMap* pMap);////////////////////////////////////////////////////////////////////////////字符串转UGC对象//////////////////////////////////////////////////////////////////////////UGGeoRegion* UGDatasetToGeoRegion(UGString strRegionDatasource, UGString strRegionDataset, UGLogTool * pLog);void StringToDoubleArray(UGString str, UGArray<UGdouble> & arrDouble);UGbool StringToDatasetRasterArray(UGString str, UGDataSource* pDataSource, UGArray<UGDatasetRaster*>& arrDtRasters, UGbool bJumpError = FALSE);UGbool StringArrayToDatasetRasterArray(const UGArray<UGString> & strs, UGDataSource* pDataSource, UGArray<UGDatasetRaster*>& arrDtRasters, UGbool bJumpError = FALSE);UGbool StringToRect2D(const UGString & strBound, UGRect2D & rt);UGbool StringArrayToDatasetVectorArray(const UGArray<UGString> & strs, UGDataSource* pDataSource, UGArray<UGDatasetVector*>& arrDtVectors, UGbool bJumpError = FALSE);UGbool StringToBoolean(const UGString & str);////////////////////////////////////////////////////////////////////////////从外部传入参数获取有效UGC类型////////////////////////////////////////////////////////////////////////////! \brief 获取有效数据源指针//! \param pDataSource [in] 外部传入的有效的待分析数据源指针//! \param strDatasource [in] 外部传入的其他数据源名称//! \return 数据源指针//! \remarks 如果能够从系统中获取到对应strDatasource,则返回其对应数据源指针,否则返回pDataSourceUGDataSource * GetAvailableDataSource(UGDataSource * pDataSource, const UGString & strDatasource,UGLogTool * pLog);//! \brief 获取有效数据源指针//! \param pDataSource [in] 要查找的数据集所在数据源//! \param strSrcDataset [in] 带有通配符的数据集名称,他们在pDataSource中//! \param nDstType [in] 在搜索有效的strSrcDataset数据集时,允许的数据集类型//! \param strDsts [out] 对strSrcDataset分析后,传出的数据集名称数组//! \param strSuffixs [in] 结果数据集名称,如果strSrcDataset带有通配符,则为后缀,否则为数据集名称//! \param bJump[in]//! \return//! \remarks 后面的不定长参数为按照strSuffixs中的顺序,传出的结果数据集名称数组指针void GetAvailableDatasetNames(UGDataSource * pDataSource,const UGString & strSrcDataset,UGint nDstType, UGStrArray & strDsts, const UGStrArray & strSuffixs, UGLogTool * pLog,...);////////////////////////////////////////////////////////////////////////////UGC类库枚举转换函数//////////////////////////////////////////////////////////////////////////UGFileType::EmType UGintToEmType(UGint nType);UGSurfaceAnalyst::InterpolateType UGintToInterpolateType(UGint nType);UGRasterAnalystEnv::BoundsType UGintToBoundsType(UGint nType);UGGeneralizeOperator::AggregationType UGintToAggregationType(UGint nType);PixelFormat UGintToPixelFormat(UGint nType);UGTopoDissolve::UGStatisticType UGintToStatisticType(UGint nType);UGTopoDissolve::UGDissolveType UGintToDissolveType(UGint nType);//UGDataCodec::CodecType UGintToCodecType(UGint nType);UGFocalStatisticAnalysis::StatisticType UGintToFocalStatisticType(UGint nType);UGNeighborhood::eSmShapeType UGintToNeighShapeType(UGint nType);UGNeighborhood::eSmUnitType UGintToNeighUnitType(UGint nType);UGZonalStatisticAnalysis::StatisticType UGintToZonalStatisticType(UGint nType);UGTerrainBuilder::InterpolateType UGintToTerrainInterpolateType(UGint nType);UGTerrainBuilder::TerrainStatisticType UGintToTerrainStatisticType(UGint nType);//UGMapCache::MapCacheStrategy UGintToMapCacheStategy(UGint nType);UGMapCacheVersion UGintToMapCacheVersion(UGint nType);UGDataset::DatasetType UGintToDatasetType(UGint nType);UGDatasetRasterInfo::IBSizeOption UGintToIBSizeOption(UGint nSize);////////////////////////////////////////////////////////////////////////////UGC类库类型转换函数//////////////////////////////////////////////////////////////////////////void BandInfoToUGBandInfo(UGBandInfo & ugBandInfo, const BandInfo & bandInfo);////////////////////////////////////////////////////////////////////////////UGC参数有效性校验函数//////////////////////////////////////////////////////////////////////////UGbool IsAvailablePixelFormat(UGint nPixelFormat);UGbool IsAvailableFitType(UGint nType);//拟合类型UGbool IsAvailableStatisticType(UGint nType);UGbool IsAvailableDissolveType(UGint nType);UGbool IsNumber(const UGString & str);PROCESSFUNCTION_API UGint AddFieldInfo(UGString fileName,OgdcFieldInfo::FieldType nType,UGint fieldSize,UGFieldInfos * m_pFieldInfo);PROCESSFUNCTION_API UGbool SearchRaster(UGString RasterFilePath,UGArray<UGString>* rasterFile);////////////////////////////////////////////////////////////////////////////PCI镶嵌入库辅助函数////////////////////////////////////////////////////////////////////////////PROCESSFUNCTION_API UGbool CreateGeometryByRasterFile(UGRecordset *pRecordset,UGArray<UGString>* rasterFile,UGFeature* m_pUGFeatureAdd);//镶嵌为Pix文件//UGbool MosaicToPix(const UGStrArray & arrImgFiles, UGint nbandCount, UGString strPixFile);//Pix文件导入到影像数据集中//UGbool PixToRasterDataset(UGString strPixFile, UGDatasetRaster * pDstRaster);PROCESSFUNCTION_API void SetPoint(UGdouble XOff,UGdouble YOff,UGdouble XRot,UGdouble YRot,UGdouble XSize,UGdouble YSize,UGint x,UGint y, UGArray<UGPoint2D> *ugPoints);PROCESSFUNCTION_API UGbool AddSourceImage(UGString *FilePath,UGbool IsLoopGroup,UGString SchemaPath,UGLogTool* pLog);PROCESSFUNCTION_API UGbool FindAndAddSourceImage(UGString filePath,UGString DirPath,UGString lastDir,UGint &findCount,XERCES_CPP_NAMESPACE::DOMNode * domElement,XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc,UGLogTool* pLog );PROCESSFUNCTION_API UGbool IsSuportedFile(UGString filePath);//生成专题图PROCESSFUNCTION_API UGbool CreateThemeGraphByTemplateFile(UGDatasetVector* pDatasetvector,UGString strWorkSpacePath,UGString strTemplatePath);////////////////////////////////////////////////////////////////////////////ossim Mosaic 辅助函数//////////////////////////////////////////////////////////////////////////UGbool CreateGeometryFromRasterFile(const UGString & rasterFile,UGFeature * pFeature,const UGProjectionConfig & prjConfig,UGLogTool * pLog);ossimMapProjection* buildProductProjection(const ossimKeywordlist* pKml,ossimConnectableObject::ConnectableObjectList* pInputSources,const UGDict<UGString, UGString> & geomKwl);UGbool buildRenderers(const ossimKeywordlist* pSpecFile,ossimConnectableObject::ConnectableObjectList* pImageSources,ossimMapProjection* productProjection, const UGDict<UGString, UGString> & geomKwl);UGbool buildChains(std::vector<ossimFilename>* pFileList,ossimConnectableObject::ConnectableObjectList* pChains);UGbool buildChains(const ossimKeywordlist* pKml,ossimConnectableObject::ConnectableObjectList* pChains);ossimImageCombiner* createMosaic(const ossimKeywordlist* pKml,ossimConnectableObject::ConnectableObjectList* pInputSources);// {{ Added By YU_LinfegUGbool setTileSize(ossimTiffWriter* tiff,ossimIrect rect);UGbool writeMosaicSeparated(const ossimKeywordlist* pKwl,const ossimFilename& outputFile, const UGDict<UGString, UGString> & geomKwl,UGdouble& dBase,UGdouble & dScale,int size,int nLength,ossimKeywordlist & finalKwl,UGLogTool * pLog);UGbool writeMosaicMerge(const ossimKeywordlist& finalKwl,const ossimFilename& outputFile, const UGDict<UGString, UGString> & geomKwl,UGdouble& dBase,UGdouble &dScale,UGbool bDelete,UGLogTool * pLog);// }}UGbool writeMosaic(const ossimKeywordlist* pKml,const ossimFilename& outputFile, const UGDict<UGString, UGString> & geomKwl,UGdouble dBase,UGdouble dScale,UGLogTool * pLog);UGbool CreateTIFGeom(const UGString & strFile, const ossimProjectStruct & prj,const UGString & strGeomFile,UGLogTool * pLog);/************************************************************************//* XML操作相关 *//************************************************************************/void UGWriteSchemaState(XERCES_CPP_NAMESPACE::DOMNode * pNodeStates, const UGString & strMainId, UGbool bState);void UGCheckTargetNode(XERCES_CPP_NAMESPACE::DOMNode * nodeTargetImagem, const UGString & strMainId, const UGString & strPath, UGStrArray & validMainIds/*, UGStrArray & newPaths*/);UGArray<XERCES_CPP_NAMESPACE::DOMNode*> GetSourceImageParent(XERCES_CPP_NAMESPACE::DOMNode * nodeItem);void GetRootFloder(UGString & rootFloder, const UGString & strFilePath);XERCES_CPP_NAMESPACE::DOMElement * CreateTargetImageNodeWithRoute(XERCES_CPP_NAMESPACE::DOMNode * rootNode, XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc, UGString rootFloder, UGString strPath);XERCES_CPP_NAMESPACE::DOMElement * CreateSimpleTargetImageNode(XERCES_CPP_NAMESPACE::DOMNode * rootNode, XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc, UGString rootFloder, UGString strPath);/** UGint nGroupType* 1--按文件分组* 2--按文件夹分组* 3--按分辨率分组* 4--按投影分组* 5--按投影带分组* 6--按波段数分组*/UGbool UGImageGroupAction( UGshort nGroupType, UGString strMetadataFile, UGString strSchemaFile, UGbool bLoopGroup,UGLogTool* pLog);//2UGbool UGInitializeByFolder(const UGString & /*strRootFloder, UGint*/ nLevel,XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc, UGDatasetVector* pMetaDataSet, XERCES_CPP_NAMESPACE::DOMNode * nodeSchema, UGbool bLoopGroup);UGbool UGSplitByFolder(const UGString & strRootFloder, const UGString & nLevel,XERCES_CPP_NAMESPACE::DOMNode * node,UGbool bLoopGroup);//1,3,4,6UGbool UGInitializeByFieldName(XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc, UGDatasetVector* pMetaDataSet, XERCES_CPP_NAMESPACE::DOMNode * nodeSchema,UGshort nGroupType, UGbool bLoopGroup);UGbool UGSplitByFieldName(XERCES_CPP_NAMESPACE::DOMNode * node,UGDatasetVector* pMetaDataSet,UGshort nGroupType, UGbool bLoopGroup);XERCES_CPP_NAMESPACE::DOMNode * UGFindTargetImageNodeByMainId(XERCES_CPP_NAMESPACE::DOMNode * node,const UGString & strId);////////////////////////////////////////////////////////////////////////////xerces C++通用性辅助函数//////////////////////////////////////////////////////////////////////////XERCES_CPP_NAMESPACE::DOMNode * GetChildNodeByAttributionName(XERCES_CPP_NAMESPACE::DOMNode * rootNode, const UGString & strName);UGint GetMaxMainId(XERCES_CPP_NAMESPACE::DOMNode * node);UGString GetAttribution(XERCES_CPP_NAMESPACE::DOMNode * node, const UGString & strAttName);XERCES_CPP_NAMESPACE::DOMNode * GetChildNodeByAttribution(XERCES_CPP_NAMESPACE::DOMNode * rootNode, const UGString & strName, const UGString & strValue);//将Xml写入文件UGbool WriteToFile(const UGString & file, XERCES_CPP_NAMESPACE::DOMDocument *xmlDoc);////////////////////////////////////////////////////////////////////////////通用性辅助函数//////////////////////////////////////////////////////////////////////////UGString GetParentDir(const UGString& strPathFile);void SplitFilePath(const UGString& strPathFile, UGString & strDrive, UGString& strDir, UGString& strFile);UGString UGStringArrayToString(const OgdcStringArray & strs, const OgdcString& strDelims="_");//UGFindingString是给UGMatchingString调用的UGint UGFindingString(const UGchar* pcStrSource, const UGchar* pcStrFind, UGint nStart = 0);UGbool UGMatchingString(const UGchar* pcStrSource, const UGchar* pcStrMatch, UGbool bMatchCase = TRUE );void UGPatternMatchingStrings(UGStrArray & results, const UGStrArray & strs, const UGString & strPattern,UGbool bMatchCase = TRUE );//nTypeFilter//1-只有点//2-线//3-多边形//4-文本//5-影像//6-栅格//7-DEM//8-MultiBand Image//9-MultiBand Grid//10-MultiBand DEM//11-三维点//12-三维线//13-三维面//14-CAD数据集//100-所有数据//101-所有矢量//102-所有影像栅格//103-Grid和DEM//104-所有矢量和影像,不包括网络数据集、属性数据集、文本数据集void UGGetMatchedDataset(UGStrArray & results, UGDataSource * pDataSource, const UGString & strPattern, UGint nTypeFilter);PROCESSFUNCTION_API void GetFlodersByLevel(OgdcStringArray & arrayFloders, const UGString & strRootFloder, UGint nLevel);//判断strPath是否在文件夹数组arrayFloders的某个文件夹下,如果是返回该文件夹给strFloderPROCESSFUNCTION_API UGbool IsInFloders(const OgdcStringArray & arrayFloders, const UGString & strPath, UGString& strFloder);//找出strFloder及其子文件夹下所有后缀为strExtName的文件,由strFileNames返回PROCESSFUNCTION_API UGbool UGFindFileExtPaths(const UGString & strFloder, const UGString & strExtName, OgdcStringArray & strFileNames, UGbool bAddPath);//判断是否合法文件夹字符串,文件夹必须存在PROCESSFUNCTION_API UGbool IsAvailableFloder(const UGString & strFloder);//! \brief 预处理目录。//! \param strPath [in] 要预处理的目录。//! \param bIsFile [in] 是否带有文件名。//! \return 处理后的目录。//! \remarks 处理的内容包括:删除左右的空格;把"\\"替换为"/",以便各个平台都能认识;//! 把"//"替换为"\\\\",因为网络路径只认识这个; 如果不带有文件名,则还要确保最后一个字符是"/"PROCESSFUNCTION_API UGString UGPreDealPath(UGString strPath, UGbool bIsFile);//判断str是否在strs,bMatchSase表示是否区分大小写UGbool IsInArray(const UGString & str, const UGStrArray & strs,UGbool bMatchSase);//根据给定文件名,通过其后缀名称,返回对应数据引擎类型UGEngineType GetEngineTypeFromFile(const UGString & strFile);//判断文件或者文件夹是否可写UGbool IsWriteable(const UGString & strPath);//判断文件或者文件夹是否存在UGbool IsFileOrFloderExist(const UGString & strPath);//使用该方法生成一个新的文件,在缓冲出图是用到,生成的新文件标示生成换成完成PROCESSFUNCTION_API void MakeFile(UGString filePath);UGRasterImportParams * CreateRasterImportParamsByFile(const UGString & strFile);////////////////////////////////////////////////////////////////////////////字符串匹配及正则表达式工具类////////////////////////////////////////////////////////////////////////////外部传入匹配含义:*代表0个或者任意个任意字符,?代表一个任意字符PROCESSFUNCTION_API UGString PatternToICURegex(const UGString & strPattern);////////////////////////////////////////////////////////////////////////////其他工具类//////////////////////////////////////////////////////////////////////////void ThreadsSurveillant(UGArray<UGThread*> & threads);void ThreadsSurveillant2(UGArray<UGThread*> & threads);void VerifyDatasetName(UGDataSource * pDataSource,UGStrArray & names);////////////////////////////////////////////////////////////////////////////数据发布模块辅助函数//////////////////////////////////////////////////////////////////////////}#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型