From 0f24f5ea8ce51f72b78c2fb1c4c8b4b2bf6c9370 Mon Sep 17 00:00:00 2001
From: Manuel Grizonnet <manuel.grizonnet@gmail.com>
Date: Tue, 13 Apr 2010 15:24:43 +0200
Subject: [PATCH] ENH:add translation from depth to scale in TileMapIO

---
 Code/IO/otbTileMapImageIO.cxx | 66 +++++++++++++++++++++++++++++++++++
 Code/IO/otbTileMapImageIO.h   |  4 ++-
 2 files changed, 69 insertions(+), 1 deletion(-)

diff --git a/Code/IO/otbTileMapImageIO.cxx b/Code/IO/otbTileMapImageIO.cxx
index 1fab93ff55..9081c7e617 100644
--- a/Code/IO/otbTileMapImageIO.cxx
+++ b/Code/IO/otbTileMapImageIO.cxx
@@ -927,6 +927,72 @@ int TileMapImageIO::XYToQuadTree2(double x, double y, std::ostringstream& quad)
   return 0;
 }
 
+/** get scale rfom depth */
+const std::string TileMapImageIO::ConvertDepthToScale(const unsigned int depth) const
+{
+  switch (depth)
+    {
+      case 1:
+	return "1 : 222 million";
+	break;
+      case 2:
+	return "1 : 111 million";
+	break;
+      case 3:
+	return "1 : 55 million";
+	break;
+      case 4:
+	return "1 : 28 million";
+	break;
+      case 5:
+	return "1 : 14 million";
+	break;
+      case 6:
+	return "1 : 7 million";
+	break;
+      case 7:
+	return "1 : 3 million";
+	break;
+      case 8:
+	return "1 : 2 million";
+	break;
+      case 9:
+	return "1 : 867,000";
+	break;
+      case 10:
+	return "1 : 433,000";
+	break;
+      case 11:
+	return "1 : 217,000";
+	break;
+      case 12:
+	return "1 : 108,000";
+	break;
+      case 13:
+	return "1 : 54,000";
+	break;
+      case 14:
+	return "1 : 27,000";
+	break;
+      case 15:
+	return "1 : 14,000";
+	break;
+      case 16:
+	return "1 : 6,771";
+	break;
+      case 17:
+	return "1 : 3,385";
+	break;
+      case 18:
+	return "1 : 1,693";
+	break;
+      default:
+	return "1 : 222 million";
+	break;
+    }
+
+}  
+    
 unsigned int
 TileMapImageIO::GetActualNumberOfSplitsForWritingCanStreamWrite(unsigned int numberOfRequestedSplits,
                                                                 const ImageIORegion& pasteRegion) const
diff --git a/Code/IO/otbTileMapImageIO.h b/Code/IO/otbTileMapImageIO.h
index dfc0065b5e..a03ff15fd5 100644
--- a/Code/IO/otbTileMapImageIO.h
+++ b/Code/IO/otbTileMapImageIO.h
@@ -141,6 +141,8 @@ public:
    * that the IORegion has been set properly. */
   virtual void Write(const void* buffer);
 
+  /** Correspondance between depth and scale for the quad tree paradigm*/
+  virtual const std::string ConvertDepthToScale(const unsigned int depth) const;
 protected:
   /** Constructor.*/
   TileMapImageIO();
@@ -186,7 +188,7 @@ private:
   void FillCacheFaults(void* buffer) const;
   int XYToQuadTree(double x, double y, std::ostringstream& quad) const;
   int XYToQuadTree2(double x, double y, std::ostringstream& quad) const;
-
+  
   /** CURL Multi */
   void GenerateTileInfo(double x, double y, int numTileX, int numTileY);
   bool CanReadFromCache(std::string filename);
-- 
GitLab