diff --git a/Code/IO/otbImage.h b/Code/IO/otbImage.h
index 696c5cbb5dee41790d1b3e37315ec266f889ccf7..919f8cc31f6d9f77f5d1f7c2b2496bd9426bf1da 100644
--- a/Code/IO/otbImage.h
+++ b/Code/IO/otbImage.h
@@ -145,6 +145,7 @@ public:
   virtual unsigned int GetGCPCount(void) const;
 
   virtual OTB_GCP& GetGCPs(unsigned int GCPnum);
+  virtual const OTB_GCP& GetGCPs(unsigned int GCPnum) const;
 
   virtual std::string GetGCPId(unsigned int GCPnum) const;
   virtual std::string GetGCPInfo(unsigned int GCPnum) const;
diff --git a/Code/IO/otbImage.txx b/Code/IO/otbImage.txx
index 4189ef8c8202711e40d3b760cea15264cfc255bd..b040b5f1d0ca0090f82a3df191057795727e4668 100644
--- a/Code/IO/otbImage.txx
+++ b/Code/IO/otbImage.txx
@@ -56,6 +56,12 @@ OTB_GCP& Image<TPixel, VImageDimension>::GetGCPs(unsigned int GCPnum)
   return (this->GetMetaDataInterface()->GetGCPs(GCPnum));
 }
 
+template <class TPixel, unsigned int VImageDimension>
+const OTB_GCP& Image<TPixel, VImageDimension>::GetGCPs(unsigned int GCPnum) const
+{
+  return (this->GetMetaDataInterface()->GetGCPs(GCPnum));
+}
+
 template <class TPixel, unsigned int VImageDimension>
 std::string Image<TPixel, VImageDimension>::GetGCPId(unsigned int GCPnum) const
 {