Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I have a GeoTIFF raster in ArcGIS, which can be downloaded from the following two links:

  1. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tfw

  2. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tif

If you load these into ArcGIS you will see large uniform areas. Clicking on these areas with the Info tool shows the pixel value to be No Data. However, when you choose to display No Data values as transparent (or as any colour) in the Symbology preferences for the layer, the No Data values do not follow that rule.

Interestingly, the No Data values outside of the main area of the image do follow the rule (set the colour to red to see that), but the ones inside the image don't.

I have really struggled to try and fix this problem - and can't work out how to do it at all. Does anyone have any ideas?

share|improve this question
add comment

3 Answers

up vote 2 down vote accepted

I downloaded the file and converted it to a numpy array and when I loop over the values in the array I can see that I get -3.40282347e+38 and NaN as nodata values. Maybe you could reclassify these to values to one or the other so all nodata values are the same. you could use the reclassfy tool, arcpy.sa.setnull or Im sure numpy has some fancy functions that could du this if you convert the image to a numpyarray. Gdal translate could also be usefull if you want to go down the open source path. Hope that helps

share|improve this answer
    
Do you have any idea how I can reclassify these values? I can't seem to get ArcGIS to recognise anything for NaN, and it doesn't seem to deal with the very low value (basically NaN it seems - as that is the range of floats in Arc) either. –  robintw Jul 17 '12 at 15:26
    
If it was me I would convert each image to a numpy array, loop over the array converting all the nodata values to -9999 or whatever and then convey the array back to an image. I sure there is a smarter way of doing it but I haven't worked with numpy that much. –  dango Jul 17 '12 at 17:13
    
if you decide to use the method I suggested above you might want to look at using the python math.isnan() function to identify NaN values. –  dango Jul 18 '12 at 6:37
add comment

There's definitely something very funky going on with that file/data.

You're right in that ArcGIS shows two different types of NoData even though the attributes both show the same thing. QGIS does this too. I have absolutely no idea whats happening in the data (but my guess would be that there are two different "noData" values being used behind the scenes, one may be "null" the other "-9999" for instance) but would be interested to know, maybe someone else can enlighten us.

However, there are a couple of possible workarounds:

Export the data - If you export the data being sure to "use renderer" it will start working correctly. If you don't tick the use-renderer your new file will have the same issues. On the downside this converts it to 8 bit data (0-255). Some other tool may be able to re-render it while keeping the data as 32bit floats.

Use Classified - The Classified symbology method seems to display both NoData types properly (i.e.e as the same thing) so use that if possible and you don't want to alter the data. Stretched exhibits your reported bug and "Unique Values" just doesn't show anything.

(Using ArcGIS 9.3.1)

share|improve this answer
    
Thanks for the response - I'm glad it's not just me that thinks this is weird. Unfortunately the classified symbology won't be suitable for what I need to do, but I'll do the exporting using a renderer at the moment. The frustrating thing is that this happens for all files that I get from the MODIS satellite using the MODIS online processing system. I think the issue may well be two different types of NoData - I think in this case they may be "null" and NaN, but I don't know. –  robintw Jul 17 '12 at 12:57
add comment

Had the same problem with 32 bit ESRI grids. The 16 bit ones worked fine and NoData was invisible but would show up black for the 32bit ones. Fixed it by exporting individually and changing the nodata value to -32768 as opposed to the -2147483647 the 32bit ones normally have.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.