<div dir="ltr"><div><div>Thanks it works well ! I succeed to export graphics from the NITF file.<br></div>But I didn't understand why my C# function was wrong.  <br><br><br></div>Best regards.<br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">2013/6/20 Livneh Yehiyam <span dir="ltr"><<a href="mailto:yehil@rafael.co.il" target="_blank">yehil@rafael.co.il</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">









<div link="blue" vlink="purple" lang="EN-US"><table align="center"><tbody><tr><td></td></tr></tbody></table>

<div>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Hi<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">You can use the GDAL unescape function like this:<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<p class="MsoNormal" style="text-indent:.5in;text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:gray">///</span><span style="font-size:9.5pt;font-family:Consolas;color:green"> </span><span style="font-size:9.5pt;font-family:Consolas;color:gray"><summary></span><span style="font-size:9.5pt;font-family:Consolas"><u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        <span style="color:gray">///</span><span style="color:green"> Remove "backslash quotable" escape characters
from the string and convert it to byte array.</span><u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        <span style="color:gray">///</span><span style="color:green"> </span><span style="color:gray"></summary></span><u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        <span style="color:blue">public</span> <span style="color:blue">static</span> <span style="color:blue">byte</span>[]
RemoveEscapeCharacters(<span style="color:blue">this</span> <span style="color:blue">string</span> value)<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        {<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:blue">if</span>(<span style="color:#2b91af">String</span>.IsNullOrEmpty(value))<u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            {<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">                <span style="color:blue">return</span> <span style="color:blue">new</span> <span style="color:blue">byte</span>[0];<u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            }<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:blue">int</span> length =
value.Length;<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:#2b91af">IntPtr</span>
escapedString = CPLUnescapeString(value, <span style="color:blue">ref</span>
length, 0);<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:blue">byte</span>[]
escapedBytes = <span style="color:blue">new</span> <span style="color:blue">byte</span>[length];<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:#2b91af">Marshal</span>.Copy(escapedString,
escapedBytes, 0, length);<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            VSIFree(escapedString);<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">            <span style="color:blue">return</span>
escapedBytes;<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        }<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        [<span style="color:#2b91af">DllImport</span>(<span style="color:#a31515">"gdal18.dll"</span>, EntryPoint = <span style="color:#a31515">"CPLUnescapeString"</span>, CallingConvention =
<span style="color:#2b91af">CallingConvention</span>.Cdecl)]<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        <span style="color:blue">private</span> <span style="color:blue">static</span> <span style="color:blue">extern</span> <span style="color:#2b91af">IntPtr</span> CPLUnescapeString(<span style="color:blue">string</span>
input, <span style="color:blue">ref</span> <span style="color:blue">int</span>
length, <span style="color:blue">int</span> scheme);<u></u><u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas"><u></u> <u></u></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        [<span style="color:#2b91af">DllImport</span>(<span style="color:#a31515">"gdal18.dll"</span>, EntryPoint = <span style="color:#a31515">"VSIFree"</span>, CallingConvention = <span style="color:#2b91af">CallingConvention</span>.Cdecl)]<u></u><u></u></span></p>


<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas">        <span style="color:blue">private</span> <span style="color:blue">static</span> <span style="color:blue">extern</span> <span style="color:blue">void</span> VSIFree(<span style="color:#2b91af">IntPtr</span>
input);<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Yehiyam<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>

<table dir="ltr"><tbody><tr><td></td></tr></tbody></table><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">

<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
<a href="mailto:gdal-dev-bounces@lists.osgeo.org" target="_blank">gdal-dev-bounces@lists.osgeo.org</a> [mailto:<a href="mailto:gdal-dev-bounces@lists.osgeo.org" target="_blank">gdal-dev-bounces@lists.osgeo.org</a>] <b>On
Behalf Of </b>xavier lhomme<br>
<b>Sent:</b> Wednesday, June 19, 2013 11:50 PM<br>
<b>To:</b> gdal-dev<br>
<b>Subject:</b> [gdal-dev] Extract CGM from a NITF file<u></u><u></u></span></p>

</div><div><div class="h5">

<p class="MsoNormal"><u></u> <u></u></p>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Hi </span><u></u><u></u></p>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
I'm trying to extract CGM files from a NITF but the CGM are corrupt. <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
First I Unescape the CGM Data and I obtain something like<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
 "\0,\vCreated CGM \"\0 f\0 ÿÿ\0 ...<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
Then write the text file. <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
I compared this string with a CGM obtained from NITRO NITF
(nitro_extract_cgm.exe).<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
The new CGM file start with  <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
  "\0,\vCreated CGM \"\0 f\0 </span><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">��</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">\0<u></u><u></u></span></p>


</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> I
succeed to read this CGM file with a CGM viewer. <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">One
of the difference come from caracter like ÿ (from GDAL) </span><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">�</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> from NITRO<u></u><u></u></span></p>


</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Then
It's probably something I missed in the Escaping/Unescaping function <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Because
UnescapeScring wasn't exposed in C# I wrote a function : <u></u><u></u></span></p>

</div>

<div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">static
public string UnescapeString(string pszInput)<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
      {<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
           string pszOutput="";  
 <u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
          int iIn = 0;<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
          for (iIn = 0; iIn<pszInput.Length; iIn++)<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
          {<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              if (pszInput[iIn] == '\\')<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              {<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                  iIn++;<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                  if
(pszInput[iIn] == 'n')<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                     
pszOutput += '\n';<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                  else if
(pszInput[iIn] == '0')<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                     
pszOutput += '\0';<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                  else<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                     
pszOutput += pszInput[iIn];<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              }<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              else<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              {<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
                  pszOutput +=
pszInput[iIn];<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
              }<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
          }<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
          return pszOutput;<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> 
      }<u></u><u></u></span></p>

</div>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><u></u> <u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">thanks
in advance!<u></u><u></u></span></p>

</div>

<div>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Best
regards <u></u><u></u></span></p>

</div>

</div>

</div></div></div>

________________________________________<br>
This message (including any attachments) issued by RAFAEL- ADVANCED DEFENSE SYSTEMS LTD. (hereinafter "RAFAEL") contains confidential information intended for a specific individual and purpose, may constitute information that is privileged or confidential or otherwise protected from disclosure. If you are not the intended recipient, you should contact us immediately and thereafter delete this message from your system. You are hereby notified that any disclosure, copying, dissemination, distribution or forwarding of this message, or the taking of any action based on it, is strictly prohibited. If you have received this e-mail in error, please notify us immediately by e-mail mailto:<a href="mailto:lawraf@rafael.co.il" target="_blank">lawraf@rafael.co.il</a> and completely delete or destroy any and all electronic or other copies of the original message and any attachments thereof.
</div>



</blockquote></div><br></div>