|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object insensa.optionfilechanger.AbstractOptionFileChanger insensa.optionfilechanger.CVariableBreaks
public class CVariableBreaks
Field Summary | |
---|---|
private java.lang.String |
description
|
private java.util.List<ClassificationRange> |
rangeList
|
static java.lang.String |
VARIABLE_BREAKS
|
Fields inherited from class insensa.optionfilechanger.AbstractOptionFileChanger |
---|
errorMessage, id, oldFileName, oldFilePath, oldRasterFile, processStatus, used, workerStatus, XML_ATTR_ID, XML_ATTR_OLD_NAME, XML_ATTR_OLD_PATH, XML_ATTR_USED, XML_ELEMENT_SOURCEFILE |
Constructor Summary | |
---|---|
CVariableBreaks()
|
Method Summary | |
---|---|
java.util.List<java.lang.String> |
getInfoDependencies()
|
org.jdom.Element |
getOptionElement()
Creates a new Element object that contains all
Information that should be saved in a configuration file. |
java.lang.String |
getOptionName()
Returns the name of the OptionFileChanger. |
java.util.List<ClassificationRange> |
getRangeList()
|
int |
getUsableCount()
|
void |
setOptionAttributes(org.jdom.Element eOption)
Sets all attributes that are saved in the configuration file. |
void |
setRangeList(java.util.List<ClassificationRange> rangeList)
|
void |
write()
This method will be executed from the ThreadPool There are several steps that must be followed: Get actual file . |
Methods inherited from class insensa.optionfilechanger.AbstractOptionFileChanger |
---|
checkApproval, getActualFile, getData, getErrorMessage, getId, getOldFileRelativeFilePath, getTemporaryFileName, isPublic, isUsed, run, saveRasterFile, setId, setOldRasterFile, setWorkerStatus, solveDependencies, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private java.lang.String description
public static final java.lang.String VARIABLE_BREAKS
private java.util.List<ClassificationRange> rangeList
Constructor Detail |
---|
public CVariableBreaks()
Method Detail |
---|
public java.util.List<java.lang.String> getInfoDependencies()
getInfoDependencies
in interface OptionFileChanger
getInfoDependencies
in class AbstractOptionFileChanger
AbstractOptionFileChanger.getInfoDependencies()
public org.jdom.Element getOptionElement()
OptionFileChanger
Element
object that contains all
Information that should be saved in a configuration file.extensions.xml
filegetOptionName
correctly,
you can use this function to get the name.
Element optionElement = new Element(this.getOptionName());
There are TWO attributes which should ALWAYS be saved, the status of the
execution (Therefore the same boolean expression that should be used in
the method isUsed
) and the id of the current optionFileChanger.
getOptionElement
in interface OptionFileChanger
getOptionElement
in class AbstractOptionFileChanger
Element
with all contents that should be saved
in the Configuration File AbstractOptionFileChanger
.used
is the
boolean expression
optionElement.setAttribute("used",Boolean.toString(used));
Besides the used state, you can save what ever you want and it is
possible to use the complex methods that jdom gives you.
For example: creating subElements (insensa.optionfilechanger.OptionFileChanger.setInfos
and
it can be fatal to use wrong keys
private final string XML_ATTR_USED = "used";
OptionFileChanger.getOptionElement()
public java.lang.String getOptionName()
OptionFileChanger
extensions.xml
or in EOption
OptionFileChanger.getOptionName()
public java.util.List<ClassificationRange> getRangeList()
public int getUsableCount()
OptionFileChanger.getUsableCount()
public void setOptionAttributes(org.jdom.Element eOption) throws java.io.IOException
OptionFileChanger
getOptionElement
.
setOptionAttributes
in interface OptionFileChanger
setOptionAttributes
in class AbstractOptionFileChanger
eOption
- the jdom.Element
which holds the attributes
java.io.IOException
- eOption
holds all information that was saved.
Attribute attrUsed = element.getAttribute(XML_ATTR_USED);
Attribute attrID = element.getAttribute(XML_ATTR_ID);
if(attrUsed==null || attrID==null)
throw new IOException("one ore more necessary attributes cannot be found");
try
{
used=attrUsed.getBooleanValue();
id=attrID.getIntegerValue();
}catch (DataConversionException e)
{
throw new IOException(e);
}
OptionFileChanger.setOptionAttributes(org.jdom.Element)
public void setRangeList(java.util.List<ClassificationRange> rangeList)
rangeList
- public void write() throws java.io.IOException, org.jdom.JDOMException, CRasterFileException
OptionFileChanger
java.io.IOException
org.jdom.JDOMException
CRasterFileException
- AbstractOptionFileChanger.getActualFile()
AbstractOptionFileChanger.solveDependencies(CRasterFileInformation)
CRasterFileInformation actualRasterFile = getActualRasterFile()
In the next step it is important to be sure that all
dependencies previously defined in
getInfoDependencies
are available. the easiest way is
to use the method
AbstractOptionFileChanger.solveDependencies(CRasterFileInformation)
solveDependencies(actualRasterFile);
Lets assume we need the InfoReader minMaxValues.
CMinMaxValues minMaxValues = (CMinMaxValues)actualRasterFile.getInfoReader(EInfo.minMaxValue.toString());
if(minMaxValues==null)
throw new IOException("Can't solve minMaxValues")
If a WorkerStatus was defined we can tell it that the
progress began.
if(workerStatus!=null)
{
workerStatus.setProgressName("Starting replace zero");
workerStatus.startProcess();
}
Next we need to create a new temporary file as a copy of the
old file with a new name
Now we can get Excess to the gdal functions to create the data.String tmpName = getTemporaryFileName(actualRasterFile); CRasterFileInformation tmpRasterFile = new CRasterFileInformation(tmpName,actualRasterFile,false,false,false); int dataType = actualRasterFile.getBand().getDataType(); tmpRasterFile.createNewFile(actualRasterFile, dataType, actualRasterFile.getNoDataValue());
seeCRasterFileInformation#CRasterFileInformation(String, CRasterFileInformation, boolean, boolean, boolean)
andCRasterFile.createNewFile(insensa.CRasterFile, int, double)
for more information
Band band = actualRasterFile.getBand();
Dataset tmpDataset = tmpRasterFile.getDataset();
int xSize = band.GetXSize();
int ySize = band.getYSize();
float steps = 100.0F/ySize;
float[] fData= new float[xSize];
float readData;
for(int i=0;i < ySize;i++)
{
band.ReadRaster(0,i,xSize,1,fData);
for(int j=0;j < fData.length;j++)
{
readData=fData[j];
if(readData==actualRasterFile.getNoDataValue())
{
}
else
{
if(readData <=0.0f)
fData[j]=0.5f;
}
}
processStatus+=steps;
if(workerStatus!=null)
workerStatus.refreshPercentage(processStatus);
tmpDataset.GetRasterBand(1).WriteRaster(0,i,xSize,1,fData);
}
tmpDataset.FlushCache();
band.FlushCache();
tmpDataset=null;
band=null;
At least it is necessary to save the temporary file and set
the execution status:
saveRasterFile(tmpRasterFile, actualRasterFile);
used=true;
OptionFileChanger.write()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |