<?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 Re: How  do I query a voxel layer data value from give  a coordinate? in ArcGIS Pro SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1546079#M12150</link>
    <description>&lt;P&gt;Thank you!&amp;nbsp; But this way will be slow for large voxel data for conversing the data type. I think reading the raw netCDF file by a cdf library in C# maybe faster&lt;/P&gt;</description>
    <pubDate>Mon, 07 Oct 2024 09:52:55 GMT</pubDate>
    <dc:creator>YetaoYang</dc:creator>
    <dc:date>2024-10-07T09:52:55Z</dc:date>
    <item>
      <title>How  do I query a voxel layer data value from give  a coordinate?</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1544089#M12140</link>
      <description>&lt;P&gt;I have a voxel layer (from netCDF file) in local scene. I want to query the data value of&amp;nbsp; the voxel layer by a give coordinate (x,y,z). I check the arcgis pro SDK and found that I access the voxellayer and voxelvome and the statistics of the data value such as maxvalue and minvalue:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;//Get the first voxel layer in the TOC&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;voxelLayer&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; MapView&lt;SPAN class=""&gt;.&lt;/SPAN&gt;Active&lt;SPAN class=""&gt;.&lt;/SPAN&gt;Map&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetLayersAsFlattenedList&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;OfType&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;VoxelLayer&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;FirstOrDefault&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;voxelLayer&lt;/SPAN&gt; &lt;SPAN class=""&gt;==&lt;/SPAN&gt; &lt;SPAN class=""&gt;null&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 QueuedTask&lt;SPAN class=""&gt;.&lt;/SPAN&gt;Run&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&amp;gt;&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;//access the volume&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;volume&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; voxelLayer&lt;SPAN class=""&gt;.&lt;/SPAN&gt;SelectedVariableProfile&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;vol_size&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; volume&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetVolumeSize&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt; &lt;SPAN class=""&gt;//(double X, double Y, double Z)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;//TODO - use the dimensions&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;//vol_size.X, vol_size.Y, vol_size.Z&lt;/SPAN&gt;
    ..&lt;SPAN class=""&gt;.&lt;BR /&gt;&lt;/SPAN&gt;and also can get the statistics of the data value by:&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;/var voxelLayer = ... ;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;//Must be on the QueuedTask.Run()&lt;/SPAN&gt;

 &lt;SPAN class=""&gt;//get the selected variable profile&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;variable&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; voxelLayer&lt;SPAN class=""&gt;.&lt;/SPAN&gt;SelectedVariableProfile&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;//Must be continuous to have a stretch renderer&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;DataType &lt;SPAN class=""&gt;!=&lt;/SPAN&gt; VoxelVariableDataType&lt;SPAN class=""&gt;.&lt;/SPAN&gt;Continuous&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
   &lt;SPAN class=""&gt;return&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

 &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;renderer&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;Renderer &lt;SPAN class=""&gt;as&lt;/SPAN&gt; CIMVoxelStretchRenderer&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

 &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;color_min&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; renderer&lt;SPAN class=""&gt;.&lt;/SPAN&gt;ColorRangeMin&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;color_max&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; renderer&lt;SPAN class=""&gt;.&lt;/SPAN&gt;ColorRangeMax&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

 &lt;SPAN class=""&gt;//increase color range by 10% of the current difference&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;var&lt;/SPAN&gt; &lt;SPAN class=""&gt;dif&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;color_max&lt;/SPAN&gt; &lt;SPAN class=""&gt;-&lt;/SPAN&gt; &lt;SPAN class=""&gt;color_min&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt; &lt;SPAN class=""&gt;0.05&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;color_min&lt;/SPAN&gt; &lt;SPAN class=""&gt;-=&lt;/SPAN&gt; &lt;SPAN class=""&gt;dif&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;color_max&lt;/SPAN&gt; &lt;SPAN class=""&gt;+=&lt;/SPAN&gt; &lt;SPAN class=""&gt;dif&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

 &lt;SPAN class=""&gt;//make sure we our color range does not exceed the current &lt;/SPAN&gt;
 &lt;SPAN class=""&gt;//renderer data range&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;color_min&lt;/SPAN&gt; &lt;SPAN class=""&gt;&amp;lt;&lt;/SPAN&gt; variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetVariableStatistics&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;MinimumValue&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;color_min&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetVariableStatistics&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;MinimumValue&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
 &lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;color_max&lt;/SPAN&gt; &lt;SPAN class=""&gt;&amp;gt;&lt;/SPAN&gt; variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetVariableStatistics&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;MaximumValue&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
    &lt;SPAN class=""&gt;color_max&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; variable&lt;SPAN class=""&gt;.&lt;/SPAN&gt;&lt;SPAN class=""&gt;GetVariableStatistics&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;.&lt;/SPAN&gt;MaximumValue&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;but I can not find a way to get the exact data value for a given coordinats (x,y,z)?&lt;/P&gt;&lt;P&gt;Anybody can kind help me?&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 01 Oct 2024 03:52:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1544089#M12140</guid>
      <dc:creator>YetaoYang</dc:creator>
      <dc:date>2024-10-01T03:52:35Z</dc:date>
    </item>
    <item>
      <title>Re: How  do I query a voxel layer data value from give  a coordinate?</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1544613#M12141</link>
      <description>&lt;P&gt;From my opinion you need to make raster layer from NetCDF file using &lt;A href="https://pro.arcgis.com/en/pro-app/latest/tool-reference/multidimension/make-netcdf-raster-layer.htm" target="_self"&gt;geoprocessing&lt;/A&gt;, then read value from raster layer.&lt;/P&gt;</description>
      <pubDate>Wed, 02 Oct 2024 05:16:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1544613#M12141</guid>
      <dc:creator>GKmieliauskas</dc:creator>
      <dc:date>2024-10-02T05:16:15Z</dc:date>
    </item>
    <item>
      <title>Re: How  do I query a voxel layer data value from give  a coordinate?</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1546079#M12150</link>
      <description>&lt;P&gt;Thank you!&amp;nbsp; But this way will be slow for large voxel data for conversing the data type. I think reading the raw netCDF file by a cdf library in C# maybe faster&lt;/P&gt;</description>
      <pubDate>Mon, 07 Oct 2024 09:52:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/how-do-i-query-a-voxel-layer-data-value-from-give/m-p/1546079#M12150</guid>
      <dc:creator>YetaoYang</dc:creator>
      <dc:date>2024-10-07T09:52:55Z</dc:date>
    </item>
  </channel>
</rss>

