/* * Copyright (C) 2005-2019 Centre National d'Etudes Spatiales (CNES) * * This file is part of Orfeo Toolbox * * https://www.orfeo-toolbox.org/ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef otbVectorImage_hxx #define otbVectorImage_hxx #include "otbVectorImage.h" #include "otbImageMetadataInterfaceFactory.h" #include "otbImageKeywordlist.h" #include "itkMetaDataObject.h" namespace otb { template VectorImage::VectorImage() { } template std::string VectorImage::GetProjectionRef(void) const { return (this->GetMetaDataInterface()->GetProjectionRef()); } template void VectorImage::SetProjectionRef(const std::string& kwl) { itk::EncapsulateMetaData(this->GetMetaDataDictionary(), MetaDataKey::ProjectionRefKey, kwl); } template std::string VectorImage::GetGCPProjection(void) const { return (this->GetMetaDataInterface()->GetGCPProjection()); } template unsigned int VectorImage::GetGCPCount(void) const { return (this->GetMetaDataInterface()->GetGCPCount()); } template OTB_GCP& VectorImage::GetGCPs(unsigned int GCPnum) { return (this->GetMetaDataInterface()->GetGCPs(GCPnum)); } template const OTB_GCP& VectorImage::GetGCPs(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPs(GCPnum)); } template std::string VectorImage::GetGCPId(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPId(GCPnum)); } template std::string VectorImage::GetGCPInfo(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPInfo(GCPnum)); } template double VectorImage::GetGCPRow(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPRow(GCPnum)); } template double VectorImage::GetGCPCol(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPCol(GCPnum)); } template double VectorImage::GetGCPX(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPX(GCPnum)); } template double VectorImage::GetGCPY(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPY(GCPnum)); } template double VectorImage::GetGCPZ(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPZ(GCPnum)); } template typename VectorImage::VectorType VectorImage::GetGeoTransform(void) const { return (this->GetMetaDataInterface()->GetGeoTransform()); } template typename VectorImage::VectorType VectorImage::GetUpperLeftCorner(void) const { return (this->GetMetaDataInterface()->GetUpperLeftCorner()); } template typename VectorImage::VectorType VectorImage::GetUpperRightCorner(void) const { return (this->GetMetaDataInterface()->GetUpperRightCorner()); } template typename VectorImage::VectorType VectorImage::GetLowerLeftCorner(void) const { return (this->GetMetaDataInterface()->GetLowerLeftCorner()); } template typename VectorImage::VectorType VectorImage::GetLowerRightCorner(void) const { return (this->GetMetaDataInterface()->GetLowerRightCorner()); } template typename VectorImage::SpacingType VectorImage::GetSignedSpacing() const { auto spacing = this->GetSpacing(); for (unsigned int i = 0; i < VImageDimension; ++i) { if (this->m_Direction[i][i] < 0) spacing[i] = -spacing[i]; } return spacing; } template void VectorImage::SetSignedSpacing(SpacingType spacing) { for (unsigned int i = 0; i < VImageDimension; i++) { if (spacing[i] < 0.0) { if (this->m_Direction[i][i] > 0) { for (unsigned j = 0; j < VImageDimension; ++j) { this->m_Direction[j][i] = -this->m_Direction[j][i]; } } spacing[i] = -spacing[i]; } } this->SetSpacing(spacing); this->ComputeIndexToPhysicalPointMatrices(); this->Modified(); } template void VectorImage::SetSignedSpacing(double spacing[VImageDimension]) { SpacingType s(spacing); this->SetSignedSpacing(s); } template typename VectorImage::ImageKeywordlistType VectorImage::GetImageKeywordlist(void) { ImageKeywordlist kwl; itk::ExposeMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); return kwl; } template const typename VectorImage::ImageKeywordlistType VectorImage::GetImageKeywordlist(void) const { ImageKeywordlist kwl; itk::ExposeMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); return kwl; } template void VectorImage::SetImageKeywordList(const ImageKeywordlistType& kwl) { itk::EncapsulateMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); } template void VectorImage::CopyInformation(const itk::DataObject* data) { Superclass::CopyInformation(data); this->itk::Object::SetMetaDataDictionary(data->GetMetaDataDictionary()); } template typename VectorImage::ImageMetadataInterfacePointerType VectorImage::GetMetaDataInterface() const { if (m_ImageMetadataInterface.IsNull()) m_ImageMetadataInterface = ImageMetadataInterfaceFactory::CreateIMI(this->GetMetaDataDictionary()); return m_ImageMetadataInterface; } template void VectorImage::PrintSelf(std::ostream& os, itk::Indent indent) const { Superclass::PrintSelf(os, indent); this->GetMetaDataInterface()->PrintMetadata(os, indent, this->GetMetaDataDictionary()); } } // end namespace otb #endif