You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
5.5 KiB
C++

#include "geofileparser.h"
#include "qdebug.h"
#include "translator.h"
#include "DataExchange/UGDataExchange.h"
#include "DataExchange/UGExchangeModel.h"
#include "FileParser/UGKMLConfigParams.h"
#include "FileParser/UGKMZConfigParams.h"
#include "FileParser/UGGTiffConfigParams.h"
#include "FileParser/UGExchangeParamsManager.h"
#include "FileParser/UGModelConfigParams.h"
#include "FileParser/UG3dsConfigParams.h"
//void UGSTDCALL ImportFunc(void *pData, const std::vector< void * > &vecParam)
//{
// qDebug()<<"*********************ImportFunc:";
// qDebug()<<"*********************ImportFunc:";
// qDebug()<<"*********************ImportFunc:";
//}
GeoFileParser::GeoFileParser()
{
}
//导入Tiff文件
bool GeoFileParser::importTiffData(UGDataSource *pDataSource, UGString datasetName, QString importPath,
bool ifBuildPyramid,UGint importModel,UGDataCodec::CodecType encType)
{
UGDataExchange exchange = UGDataExchange();
int issu = exchange.AttachDataSource(pDataSource);
//导入参数设置
UGGTiffImportParams tiffImportParams;
tiffImportParams.SetDestDTName(datasetName); //设置目标数据集名称
tiffImportParams.SetFilePathName(Translator::QStr2UGStr(importPath));
tiffImportParams.SetDestCoordSys(UGPrjCoordSys (4326)); //设置坐标系
tiffImportParams.SetBuildPyramid(ifBuildPyramid); //开启影像金字塔
if(!(importModel == UGImportParams::ModeIMG)) //默认类型不设置导入类型,以加快导入速度
tiffImportParams.SetImportMode(importModel);//设置导入数据类型
if(!(encType == UGDataCodec::encPNG))
tiffImportParams.SetDatasetEncType(encType);//UGDataCodec::CodecType encType
tiffImportParams.SetOverWrite(true); //设置强制覆盖
tiffImportParams.SetEnableMultiThread(true); //开启多线程
// tiffImportParams.SetShowProgress(true);
// tiffImportParams.SetCallbackFunc(ImportFunc);
//开始导入
UGint ii = tiffImportParams.GetFileType();
int ss = UGExchangeParamsManager::IsValidImportParams(ii, tiffImportParams);
UGint issucceed = exchange.Import(tiffImportParams);
return issucceed;
}
//导入KML文件
bool GeoFileParser::importKMLData(UGDataSource *pDataSource, UGString datasetName,QString importPath)
{
UGDataExchange exchange = UGDataExchange();
int issu = exchange.AttachDataSource(pDataSource);
UGKMLImportParams kmlParams = UGKMLImportParams();
// UGKMZImportParams kmlParams = UGKMZImportParams();
kmlParams.SetDestDTName(datasetName); //设置目标数据集名称
kmlParams.SetFilePathName(Translator::QStr2UGStr(importPath));
kmlParams.SetDestCoordSys(UGPrjCoordSys (4326)); //设置坐标系:WGS-84
UGint ii = kmlParams.GetFileType();
int ss = UGExchangeParamsManager::IsValidImportParams(ii, kmlParams);
UGint issucceed = exchange.Import(kmlParams);
return issucceed;
}
// 导出KML文件
bool GeoFileParser::exportKMLData(UGC::UGDataSource *pDataSource, QString datasetName, QString savePath, QString strRecordFilter)
{
UGDataExchange exchange = UGC::UGDataExchange();
int issu = exchange.AttachDataSource(pDataSource);
//导出参数设置
UGKMLExportParams exportKMLParams = UGKMLExportParams();
exportKMLParams.SetFilePathName(Translator::QStr2UGStr(savePath)); //导出文件全路径
exportKMLParams.SetDtNameToBeExported(Translator::QStr2UGStr(datasetName)); //要导出的数据集名称数据集坐标系必须为WGS-84
exportKMLParams.SetRecordFilter(Translator::QStr2UGStr(strRecordFilter)); //过滤条件
return exchange.Export(exportKMLParams);
}
//导入模型数据(可以加载.3ds)
bool GeoFileParser::importModelData(UGDataSource *pDataSource, UGString datasetName, QString importPath)
{
UGDataExchange exchange = UGDataExchange();
exchange.AttachDataSource(pDataSource);
//导入参数设置
UGModelImportParams modelImportParams = UGModelImportParams();
// UG3dsImportParams modelImportParams = UG3dsImportParams();
modelImportParams.SetDestDTName(datasetName); //设置数据集名
modelImportParams.SetFilePathName(Translator::QStr2UGStr(importPath)); //文件路径
modelImportParams.SetDestCoordSys(UGPrjCoordSys (4326)); //设置坐标系为WGS-84
// modelImportParams.SetPosition(UGPoint3D(119.718414,32.234539,20)); //设置模型放置点
//开始导入
UGint ii = modelImportParams.GetFileType();
int ss = UGExchangeParamsManager::IsValidImportParams(ii, modelImportParams);
UGint issucceed = exchange.Import(modelImportParams);
return issucceed;
/*
qDebug()<<"************0:"<<pDataSource->GetDatasetCount();
UGExchangeModel modelEM = UGExchangeModel();
// UG3dsImportParams model3dsImportParams = UG3dsImportParams();
UGModelImportParams model3dsImportParams = UGModelImportParams();
model3dsImportParams.SetDestDTName(datasetName); //设置数据集名
model3dsImportParams.SetFilePathName(Translator::QStr2UGStr(importPath)); //文件路径
model3dsImportParams.SetDestCoordSys(UGPrjCoordSys (4326)); //设置坐标系为WGS-84
model3dsImportParams.SetPosition(UGPoint3D(119.718414,32.234539,20)); //设置模型放置点
//开始导入
UGint ii = model3dsImportParams.GetFileType();
int ss = UGExchangeParamsManager::IsValidImportParams(ii, model3dsImportParams);
UGint issucceed = modelEM.Import(pDataSource,model3dsImportParams);
qDebug()<<"************0:"<<pDataSource->GetDatasetCount();
return issucceed;
*/
}