Thursday 18 June 2015

How to load a NetCDF-file into QGIS using Python?


I have a CF-conform NetCDF-file which can be loaded into Quantum GIS (Version 1.8) by using the "Add Raster Layer"-button and subsequently choosing the file and the raster layers of interest. This works without problems. However, when trying to load the same file by following these steps from the python cookbook, the layer remains invalid. I tried it using the console:


>>> fileName = "/path/to/file/myfile.nc"
>>> fileInfo = QtCore.QFileInfo(fileName)
>>> baseName = fileInfo.baseName()

>>> rlayer = QgsRasterLayer(fileName, baseName)
>>> rlayer.isValid()
False

When trying to add the layer to the map registry, it doesn't show up:


>>> QgsMapLayerRegistry.instance().addMapLayer(rlayer)


I tried the same procedure with a jpeg with world file and it works.


The cookbook mentions that GDAL might not support some formats. I don't know how to check this in QGIS, but since it works manually, I don't think that this is the problem.



Maybe, I have to specify the raster layer of interest somewhere in the code?


Any help is highly appreciated.



Answer



Thanks to gene mentioning the netcdfbrowser plugin (see the addLayer()-method in netcdfbrowserdialog.py) I managed to get it working. In case of NetCDF-files the file name is not sufficient to load a raster. We also need to include the variable of interest. The following works:


>>> uri='NETCDF:"/path/to/file/myfile.nc":myvariable'
>>> rlayer = QgsRasterLayer(uri,'mylayername')
>>> rlayer.isValid()
True
>>> QgsMapLayerRegistry.instance().addMapLayer(rlayer)



The layer shows up.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...