bool wxGISGPProjectVectorTool::Execute(ITrackCancel* pTrackCancel) { if(!Validate()) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Unexpected error occurred"), -1, enumGISMessageErr); return false; } IGxObjectContainer* pGxObjectContainer = dynamic_cast<IGxObjectContainer*>(m_pCatalog); if(!pGxObjectContainer) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Error getting catalog object"), -1, enumGISMessageErr); return false; } //get source wxString sSrcPath = m_paParam[0]->GetValue(); IGxObject* pGxObject = pGxObjectContainer->SearchChild(sSrcPath); if(!pGxObject) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Error get source object"), -1, enumGISMessageErr); return false; } IGxDataset* pGxDataset = dynamic_cast<IGxDataset*>(pGxObject); if(!pGxDataset) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("The source object is of incompatible type"), -1, enumGISMessageErr); return false; } wxGISFeatureDatasetSPtr pSrcDataSet = boost::dynamic_pointer_cast<wxGISFeatureDataset>(pGxDataset->GetDataset()); if(!pSrcDataSet) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("The source dataset is of incompatible type"), -1, enumGISMessageErr); return false; } if(!pSrcDataSet->IsOpened()) if(!pSrcDataSet->Open()) return false; OGRFeatureDefn *pDef = pSrcDataSet->GetDefinition(); if(!pDef) { if(pTrackCancel) pTrackCancel->PutMessage(_("Error reading dataset definition"), -1, enumGISMessageErr); //wsDELETE(pSrcDataSet); return false; } //get spatial reference wxString sWKT = m_paParam[1]->GetValue().MakeString(); if(sWKT.IsEmpty()) { if(pTrackCancel) pTrackCancel->PutMessage(_("Unsupported Spatial Reference"), -1, enumGISMessageErr); return false; } CPLString szWKT(sWKT.mb_str()); OGRSpatialReference NewSpaRef; const char* szpWKT = szWKT.c_str(); if(NewSpaRef.importFromWkt((char**)&szpWKT) != OGRERR_NONE) { if(pTrackCancel) pTrackCancel->PutMessage(_("Unsupported Spatial Reference"), -1, enumGISMessageErr); return false; } //get destination wxString sDstPath = m_paParam[2]->GetValue(); //check overwrite & do it! if(!OverWriteGxObject(pGxObjectContainer->SearchChild(sDstPath), pTrackCancel)) return false; IGxObject* pGxDstObject = GetParentGxObjectFromPath(sDstPath, pGxObjectContainer, pTrackCancel); if(!pGxDstObject) return false; CPLString szDestPath = pGxDstObject->GetInternalName(); wxFileName sDstFileName(sDstPath); wxString sName = sDstFileName.GetName(); wxGISGPGxObjectDomain* pDomain = dynamic_cast<wxGISGPGxObjectDomain*>(m_paParam[2]->GetDomain()); IGxObjectFilter* pFilter = pDomain->GetFilter(m_paParam[2]->GetSelDomainValue()); if(!pFilter) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Error getting selected destination filter"), -1, enumGISMessageErr); return false; } bool bRes = Project(pSrcDataSet, szDestPath, sName, pFilter, &NewSpaRef, pTrackCancel); //CPLString szPath = pGxDstObject->GetInternalName(); //wxString sName = sDstFileName.GetName(); // //wxGISGPGxObjectDomain* pDomain = dynamic_cast<wxGISGPGxObjectDomain*>(m_paParam[1]->GetDomain()); //IGxObjectFilter* pFilter = pDomain->GetFilter(pDomain->GetSelFilter()); //if(!pFilter) //{ // //add messages to pTrackCancel // if(pTrackCancel) // pTrackCancel->PutMessage(_("Error getting selected destination filter"), -1, enumGISMessageErr); // return false; //} // //bool bHasErrors = ExportFormat(pSrcDataSet, szPath, sName, pFilter, NULL, pTrackCancel); if(pGxDstObject) pGxDstObject->Refresh(); return bRes; }
bool wxGISGPShapeToTextTool::Execute(ITrackCancel* pTrackCancel) { if(!Validate()) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Unexpected error occurred"), -1, enumGISMessageErr); return false; } IGxObjectContainer* pGxObjectContainer = dynamic_cast<IGxObjectContainer*>(m_pCatalog); if(!pGxObjectContainer) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Error getting catalog object"), -1, enumGISMessageErr); return false; } wxString sSrcPath = m_paParam[0]->GetValue(); IGxObject* pGxObject = pGxObjectContainer->SearchChild(sSrcPath); if(!pGxObject) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("Error get source object"), -1, enumGISMessageErr); return false; } IGxDataset* pGxDataset = dynamic_cast<IGxDataset*>(pGxObject); if(!pGxDataset) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("The source object is of incompatible type"), -1, enumGISMessageErr); return false; } wxGISFeatureDatasetSPtr pSrcDataSet = boost::dynamic_pointer_cast<wxGISFeatureDataset>(pGxDataset->GetDataset()); if(!pSrcDataSet) { //add messages to pTrackCancel if(pTrackCancel) pTrackCancel->PutMessage(_("The source dataset is of incompatible type"), -1, enumGISMessageErr); return false; } if(!pSrcDataSet->IsOpened()) if(!pSrcDataSet->Open()) return false; OGRFeatureDefn *pDef = pSrcDataSet->GetDefinition(); if(!pDef) { if(pTrackCancel) pTrackCancel->PutMessage(_("Error reading dataset definition"), -1, enumGISMessageErr); return false; } bool bSwap = m_paParam[2]->GetValue(); wxString sMask = m_paParam[1]->GetValue(); m_CFormat.Create(sMask, bSwap); if(!m_CFormat.IsOk()) { if(pTrackCancel) pTrackCancel->PutMessage(_("Invalid format mask"), -1, enumGISMessageErr); return false; } wxString sDstPath = m_paParam[3]->GetValue(); //check overwrite & do it! if(!OverWriteGxObject(pGxObjectContainer->SearchChild(sDstPath), pTrackCancel)) return false; IGxObject* pGxDstObject = GetParentGxObjectFromPath(sDstPath, pGxObjectContainer, pTrackCancel); if(!pGxDstObject) return false; CPLString szPath = pGxDstObject->GetInternalName(); wxFileName sDstFileName(sDstPath); wxString sName = sDstFileName.GetFullName(); bool bRes = GeometryVerticesToTextFile(pSrcDataSet, CPLFormFilename(szPath, sName.mb_str(wxConvUTF8), NULL), m_CFormat, NULL, pTrackCancel); if(pGxDstObject) pGxDstObject->Refresh(); return bRes; }