Point to Raster rounds large numbers wrongly

1156
5
Jump to solution
10-30-2018 09:37 AM
GiacomoFavaron
New Contributor III

I noticed that the Point to Raster tool is not respecting the original point values when these are in over the hundred thousands.

If it is in the 10k it rounds the numbers are close but not exactly the same. In this example the original point value has 2 decimal points while the raster value has 6 and it is not exactly the same number:

Point value 24946.34
Pixel value 24946.339844

If instead the the point values get larger, the larger will be the discrepancy in the pixel values. Also the pixel value will be rounded to the unit and no the original decimal point of the Point Value. Examples:

Point value 7148409430.99
Pixel value 7148409344.000000

Point value 6155669928.95
Pixel value 6155670016.000000

Point value 46218249.2442
Pixel value 46218248.000000

The Point data is on a perfect 0.1 decimal degree grid and the raster has the same resolution so that only one point falls within each raster cell. Selecting the cell alignment type to Sum, Mean or any other did not cause any change in the raster values output of the tool.

Can anyone replicate this behavior?

0 Kudos
1 Solution

Accepted Solutions
DanPatterson_Retired
MVP Emeritus

The rasters may not be 64 bit is really the point

Raster file formats—ArcGIS Pro | ArcGIS Desktop 

for example esri grids are 32-bit signed integer or 32-bit floating point

You can examine your case against the list.

And you can't 'upscale' to a higher bit type and expect more than what you already have.

View solution in original post

5 Replies
DanPatterson_Retired
MVP Emeritus

could be that the numbers aren't 64 bit.  here is what happens in numpy when floats (aka doubles) are of a lower type.

For the lower numbers …. 24946.339844  rounded to 24946.0 for both 64 and 32 bit

a = np.round(np.array([6155669928.95], np.float64))  # ---- 64 bit numbers

a[0]  # ----- rounded... looks good

6155669929.0

a = np.round(np.array([6155669928.95], np.float32))  # ---- now try 32 bit

a[0]  # ---- rounded, not so good

6155670000.0‍‍‍‍‍‍‍‍‍‍‍
0 Kudos
GiacomoFavaron
New Contributor III

It could be. For completeness of information I am on Windows 10 64 bit and I have tried to run the tool as background  and foreground processing but I had the same results.

I haven't tried directly in python.

0 Kudos
DanPatterson_Retired
MVP Emeritus

The rasters may not be 64 bit is really the point

Raster file formats—ArcGIS Pro | ArcGIS Desktop 

for example esri grids are 32-bit signed integer or 32-bit floating point

You can examine your case against the list.

And you can't 'upscale' to a higher bit type and expect more than what you already have.

GiacomoFavaron
New Contributor III

Yes, you are correct.

I wasn't specifying the raster file format and the default is ESRI Grid, but if I specify the format as .tif the rounding is correct.

Thank you Dan!

0 Kudos
DanPatterson_Retired
MVP Emeritus

No problem Giacomo, you might want to mark the correct answer so this is closed

0 Kudos