<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic double precision using IPixelBlock3 and setPixelData in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/double-precision-using-ipixelblock3-and/m-p/236706#M6121</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to to write a double[][] array to a IPixelBlock3 instance using Java. Here is an abstract of my source.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;IRasterWorkspace2 workspace = new IRasterWorkspace2Proxy(new RasterWorkspaceFactory().openFromFile(folder, 0)); try { &amp;nbsp;&amp;nbsp;&amp;nbsp; double[][] data = cache.get(key); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int height = data[0].length; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int width = data.length; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IUnknownCoordinateSystem sr = new UnknownCoordinateSystem();&amp;nbsp;&amp;nbsp;&amp;nbsp; IPoint origin = new Point();&amp;nbsp; origin.putCoords(12.5, 12.5); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterDataset rasterDataset = workspace.createRasterDataset(filename, "GRID", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; origin, width, height, 25, 25, 1, rstPixelType.PT_DOUBLE, sr, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterBandCollection rasterBands = new IRasterBandCollectionProxy(rasterDataset); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterBand rasterBand;&amp;nbsp; IRasterProps rasterProps;&amp;nbsp; rasterBand = rasterBands.item(0);&amp;nbsp; rasterProps = new IRasterPropsProxy(rasterBand);&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rasterProps.setNoDataValue(255);&amp;nbsp;&amp;nbsp; IRaster raster = rasterDataset.createDefaultRaster();&amp;nbsp; IPnt blocksize = new Pnt();&amp;nbsp; blocksize.setCoords(width, height);&amp;nbsp; IPixelBlock3 pixelblock = new IPixelBlock3Proxy(raster.createPixelBlock &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (blocksize)); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pixelblock.setPixelData(0, data);&amp;nbsp;&amp;nbsp;&amp;nbsp; IPnt upperLeft = new Pnt();&amp;nbsp; upperLeft.setCoords(0, 0);&amp;nbsp;&amp;nbsp; IRasterEdit rasterEdit = new IRasterEditProxy(raster);&amp;nbsp; rasterEdit.write(upperLeft, new IPixelBlockProxy(pixelblock));&amp;nbsp; Cleaner.release(rasterEdit); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnknownHostException e) {&amp;nbsp; throw new IOException(e.getMessage()); } catch (IOException e) {&amp;nbsp; throw e; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using this code, I'm getting the following exception:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;Exception in thread "main" AutomationException: 0x80070057 - This spatial reference object cannot be defined from the available information. in '"esri.ProjectedCoordinateSystem"'&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.nativeVtblInvokeNative(Native Method)&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source)&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source)&amp;nbsp; at com.esri.arcgis.interop.Dispatch.vtblInvoke(Unknown Source)&amp;nbsp; at com.esri.arcgis.datasourcesraster.IPixelBlock3Proxy.setPixelData(Unknown Source)&amp;nbsp; at ILUMOE.writer.RasterWorkspaceWriter.write(RasterWorkspaceWriter.java:94)&amp;nbsp; at ILUMOE.LoopThroughMatrix.oneTimeStep(LoopThroughMatrix.java:177)&amp;nbsp; at ILUMOE.ILUMOEControl.main(ILUMOEControl.java:77)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I change the double[][] to a int[][] and using the PT_UCHAR (8-bit integer) it works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does someone has any idea how to store double precision values / points?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 Feb 2013 07:50:29 GMT</pubDate>
    <dc:creator>PasitheeJupiter</dc:creator>
    <dc:date>2013-02-28T07:50:29Z</dc:date>
    <item>
      <title>double precision using IPixelBlock3 and setPixelData</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/double-precision-using-ipixelblock3-and/m-p/236706#M6121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi all&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to to write a double[][] array to a IPixelBlock3 instance using Java. Here is an abstract of my source.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;IRasterWorkspace2 workspace = new IRasterWorkspace2Proxy(new RasterWorkspaceFactory().openFromFile(folder, 0)); try { &amp;nbsp;&amp;nbsp;&amp;nbsp; double[][] data = cache.get(key); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int height = data[0].length; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int width = data.length; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IUnknownCoordinateSystem sr = new UnknownCoordinateSystem();&amp;nbsp;&amp;nbsp;&amp;nbsp; IPoint origin = new Point();&amp;nbsp; origin.putCoords(12.5, 12.5); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterDataset rasterDataset = workspace.createRasterDataset(filename, "GRID", &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; origin, width, height, 25, 25, 1, rstPixelType.PT_DOUBLE, sr, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterBandCollection rasterBands = new IRasterBandCollectionProxy(rasterDataset); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRasterBand rasterBand;&amp;nbsp; IRasterProps rasterProps;&amp;nbsp; rasterBand = rasterBands.item(0);&amp;nbsp; rasterProps = new IRasterPropsProxy(rasterBand);&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rasterProps.setNoDataValue(255);&amp;nbsp;&amp;nbsp; IRaster raster = rasterDataset.createDefaultRaster();&amp;nbsp; IPnt blocksize = new Pnt();&amp;nbsp; blocksize.setCoords(width, height);&amp;nbsp; IPixelBlock3 pixelblock = new IPixelBlock3Proxy(raster.createPixelBlock &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (blocksize)); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pixelblock.setPixelData(0, data);&amp;nbsp;&amp;nbsp;&amp;nbsp; IPnt upperLeft = new Pnt();&amp;nbsp; upperLeft.setCoords(0, 0);&amp;nbsp;&amp;nbsp; IRasterEdit rasterEdit = new IRasterEditProxy(raster);&amp;nbsp; rasterEdit.write(upperLeft, new IPixelBlockProxy(pixelblock));&amp;nbsp; Cleaner.release(rasterEdit); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (UnknownHostException e) {&amp;nbsp; throw new IOException(e.getMessage()); } catch (IOException e) {&amp;nbsp; throw e; }&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using this code, I'm getting the following exception:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;Exception in thread "main" AutomationException: 0x80070057 - This spatial reference object cannot be defined from the available information. in '"esri.ProjectedCoordinateSystem"'&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.nativeVtblInvokeNative(Native Method)&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source)&amp;nbsp; at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source)&amp;nbsp; at com.esri.arcgis.interop.Dispatch.vtblInvoke(Unknown Source)&amp;nbsp; at com.esri.arcgis.datasourcesraster.IPixelBlock3Proxy.setPixelData(Unknown Source)&amp;nbsp; at ILUMOE.writer.RasterWorkspaceWriter.write(RasterWorkspaceWriter.java:94)&amp;nbsp; at ILUMOE.LoopThroughMatrix.oneTimeStep(LoopThroughMatrix.java:177)&amp;nbsp; at ILUMOE.ILUMOEControl.main(ILUMOEControl.java:77)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I change the double[][] to a int[][] and using the PT_UCHAR (8-bit integer) it works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does someone has any idea how to store double precision values / points?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks a lot&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Feb 2013 07:50:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/double-precision-using-ipixelblock3-and/m-p/236706#M6121</guid>
      <dc:creator>PasitheeJupiter</dc:creator>
      <dc:date>2013-02-28T07:50:29Z</dc:date>
    </item>
    <item>
      <title>Re: double precision using IPixelBlock3 and setPixelData</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/double-precision-using-ipixelblock3-and/m-p/236707#M6122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found a solution as follow:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;IRaster raster = rasterDataset.createDefaultRaster();&amp;nbsp; IPnt blocksize = new DblPnt(); blocksize.setCoords(col_count, row_count);&amp;nbsp; IPixelBlock3 pixelblock = (IPixelBlock3) raster.createPixelBlock(blocksize); float[][] test = (float[][]) pixelblock.getPixelData(0);&amp;nbsp; for(int y = 0; y &amp;lt; data.length; y++) { &amp;nbsp;&amp;nbsp;&amp;nbsp; for(int x = 0; x &amp;lt; data&lt;Y&gt;.length; x++) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; test&lt;X&gt;&lt;Y&gt; = new Double(data&lt;Y&gt;&lt;X&gt;).floatValue(); &amp;nbsp;&amp;nbsp;&amp;nbsp; } }&amp;nbsp; pixelblock.setPixelData(0, test);&amp;nbsp; IPnt upperLeft = new DblPnt(); upperLeft.setCoords(0.0, 0.0);&amp;nbsp; IRasterEdit rasterEdit = new IRasterEditProxy(raster); rasterEdit.write(upperLeft, new IPixelBlockProxy(pixelblock)); Cleaner.release(rasterEdit);&lt;/X&gt;&lt;/Y&gt;&lt;/Y&gt;&lt;/X&gt;&lt;/Y&gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Important is to use &lt;/SPAN&gt;&lt;STRONG&gt;DblPnt&lt;/STRONG&gt;&lt;SPAN&gt; instead of &lt;/SPAN&gt;&lt;STRONG&gt;Pnt&lt;/STRONG&gt;&lt;SPAN&gt; and to work with the array given by the &lt;/SPAN&gt;&lt;STRONG&gt;IPixelBlock3&lt;/STRONG&gt;&lt;SPAN&gt; as follow&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;float[][] test = (float[][]) pixelblock.getPixelData(0);&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Mar 2013 13:25:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/double-precision-using-ipixelblock3-and/m-p/236707#M6122</guid>
      <dc:creator>PasitheeJupiter</dc:creator>
      <dc:date>2013-03-08T13:25:09Z</dc:date>
    </item>
  </channel>
</rss>

