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.

128 lines
5.5 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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
// kmlParams.SetOverWrite(true);
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)); //过滤条件
exportKMLParams.SetOverWrite(true); //强制覆盖
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;
*/
}