/* * 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 otbImage_hxx #define otbImage_hxx #include "otbImage.h" #include "otbImageMetadataInterfaceFactory.h" #include "itkMetaDataObject.h" namespace otb { template Image::Image() { } template std::string Image::GetProjectionRef(void) const { return (this->GetMetaDataInterface()->GetProjectionRef()); } template void Image::SetProjectionRef(const std::string& kwl) { itk::EncapsulateMetaData(this->GetMetaDataDictionary(), MetaDataKey::ProjectionRefKey, kwl); } template std::string Image::GetGCPProjection(void) const { return (this->GetMetaDataInterface()->GetGCPProjection()); } template unsigned int Image::GetGCPCount(void) const { return (this->GetMetaDataInterface()->GetGCPCount()); } template OTB_GCP& Image::GetGCPs(unsigned int GCPnum) { return (this->GetMetaDataInterface()->GetGCPs(GCPnum)); } template const OTB_GCP& Image::GetGCPs(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPs(GCPnum)); } template std::string Image::GetGCPId(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPId(GCPnum)); } template std::string Image::GetGCPInfo(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPInfo(GCPnum)); } template double Image::GetGCPRow(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPRow(GCPnum)); } template double Image::GetGCPCol(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPCol(GCPnum)); } template double Image::GetGCPX(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPX(GCPnum)); } template double Image::GetGCPY(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPY(GCPnum)); } template double Image::GetGCPZ(unsigned int GCPnum) const { return (this->GetMetaDataInterface()->GetGCPZ(GCPnum)); } template typename Image::VectorType Image::GetGeoTransform(void) const { return (this->GetMetaDataInterface()->GetGeoTransform()); } template typename Image::VectorType Image::GetUpperLeftCorner(void) const { return (this->GetMetaDataInterface()->GetUpperLeftCorner()); } template typename Image::VectorType Image::GetUpperRightCorner(void) const { return (this->GetMetaDataInterface()->GetUpperRightCorner()); } template typename Image::VectorType Image::GetLowerLeftCorner(void) const { return (this->GetMetaDataInterface()->GetLowerLeftCorner()); } template typename Image::VectorType Image::GetLowerRightCorner(void) const { return (this->GetMetaDataInterface()->GetLowerRightCorner()); } template typename Image::SpacingType Image::GetSignedSpacing() const { auto spacing = this->GetSpacing(); for (unsigned int i = 0; i < Image::ImageDimension; ++i) { if (this->m_Direction[i][i] < 0) spacing[i] = -spacing[i]; } return spacing; } template void Image::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 Image::SetSignedSpacing(double spacing[VImageDimension]) { SpacingType s(spacing); this->SetSignedSpacing(s); } template typename Image::ImageKeywordlistType Image::GetImageKeywordlist(void) { ImageKeywordlistType kwl; itk::ExposeMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); return kwl; } template void Image::SetImageKeywordList(const ImageKeywordlistType& kwl) { itk::EncapsulateMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); } template const typename Image::ImageKeywordlistType Image::GetImageKeywordlist(void) const { ImageKeywordlistType kwl; itk::ExposeMetaData(this->GetMetaDataDictionary(), MetaDataKey::OSSIMKeywordlistKey, kwl); return kwl; } template void Image::CopyInformation(const itk::DataObject* data) { Superclass::CopyInformation(data); this->itk::Object::SetMetaDataDictionary(data->GetMetaDataDictionary()); } template typename Image::ImageMetadataInterfacePointerType Image::GetMetaDataInterface() const { if (m_ImageMetadataInterface.IsNull()) m_ImageMetadataInterface = ImageMetadataInterfaceFactory::CreateIMI(this->GetMetaDataDictionary()); return m_ImageMetadataInterface; } template void Image::PrintSelf(std::ostream& os, itk::Indent indent) const { Superclass::PrintSelf(os, indent); this->GetMetaDataInterface()->PrintMetadata(os, indent, this->GetMetaDataDictionary()); } } // end namespace otb #endif