Principle component Analysis in SNAP

Hi all,
When I use Principle component analysis in SNAP, the result is including components (PC1, PC2, PC3, PC4) and some files such as error, response and flag. What do they mean ? When I analyse PCA in Envi, there is no files like this. Anyone can explain?
Thank you.

Unfortunately it is a bit of a mess with the PCA. There are two implementations of it. And they are not accessible from everywhere. Sometimes it’s the one, sometimes the other.
But if your result contains the bands response, error and flags I know which one you have used

Contains a flag which marks the pixels which where covered by the ROI mask you can specify.
The membership error for a sample. The error is computed by projecting the sample into eigenspace then projecting it back into sample space
The dot product of each basis vector against the sample. Can be used as a measure for membership in the training sample set. High values correspond to a better fit.

The other PCA can be found if you use the Graph Builder.
However, we need to clean up the mess and document the PCA.
Actually it is already known since a while. We have it in our issue tracker
(SNAP-393, SNAP-692).


Thank you very much for explaining. Marpet


Could you maybe explain again what are the bands “response” and “error” in a way understandable for a remote sensing newbie? :slight_smile: Also, is it good to have all zeros in the “error” band?

I have also not much knowledge of this matter.
Maybe Wikipedia helps a bit?

Hello everyone,

I am using a time series of ladnsat data (from 1990 up to present) to perform land cover classification.
My graph i created in SNAP executes the following steps.

read image-> GLCM-> PCA-> RandomForest-> write image

I am applying the same steps in all 7 images. Everything goes well, apart from the landsat scene acquired in 1990. WHen i run the graph, i get the following error message.

Error: More data needed to compute the desired number of components

The full error message is the following:

INFO: org.hsqldb.persist.Logger: dataFileCache open start .90% done. org.esa.snap.core.gpf.OperatorException: More data needed to compute the desired number of components at org.esa.snap.core.gpf.graph.GraphProcessor$GPFImagingListener.errorOccurred( at at at at at com.bc.ceres.glevel.MultiLevelImage.getData( at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile( at org.esa.snap.core.gpf.internal.OperatorContext.getSourceTile( at org.esa.snap.core.gpf.internal.OperatorImage.computeRect( at at at at at Caused by: java.lang.IllegalArgumentException: More data needed to compute the desired number of components at org.esa.snap.cluster.PrincipalComponentAnalysis.computeBasis( at org.esa.snap.cluster.PrincipalComponentAnalysisOp.initPca( at org.esa.snap.cluster.PrincipalComponentAnalysisOp.doExecute( at org.esa.snap.core.gpf.internal.OperatorContext.executeOperator( at org.esa.snap.core.gpf.internal.OperatorImage.computeRect( at at ... 11 more

This never happened to me before. I do not quite understand what it means by more data needed to compute the desired number of components. The number of component i am using is six. Even if i reduced or increased the number of components, i get the same error for this specif scene only.

Did anyone else came across with this error message?


The same issue when performing PCA analysis occurred to me as well. I have not figured out what the problem is. Someone else might have the answer

Hi Marpet. Would you recomend to use other softwares instead of SNAP becouse of the abscence of PCA documentation?

No, I wouldn’t. As far as I know, it works quite well as long as you know what to do.