Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/.directory
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/.directory	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/.directory	(revision 43876)
@@ -0,0 +1,4 @@
+[Dolphin]
+Timestamp=2018,6,29,17,39,39
+Version=3
+ViewMode=1
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCLRFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCLRFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCLRFile.java	(revision 43876)
@@ -0,0 +1,111 @@
+package org.gvsig.basicformats.impl;
+
+import java.awt.Color;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.basicformats.CLRFile;
+import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
+import org.gvsig.raster.lib.legend.api.RasterLegendManager;
+import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
+import org.gvsig.raster.lib.legend.api.colortable.colortableclass.ColorTableClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DefaultCLRFile implements CLRFile {
+
+    private static final Logger logger = LoggerFactory.getLogger(DefaultCLRFile.class);
+
+    private File source;
+    private ColorTable colorTable;
+
+    public DefaultCLRFile() {
+        this.source = null;
+        this.colorTable = null;
+    }
+
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath()) + "." + FILE_EXTENSION);
+        return f;
+    }
+
+    @Override
+    public File getFile() {
+        return source;
+    }
+
+    @Override
+    public ColorTable getColorTable() {
+        return this.colorTable;
+    }
+
+    @Override
+    public void setColorTable(ColorTable colorTable) {
+        this.colorTable = colorTable;
+    }
+
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                RasterLegendManager legendManager = RasterLegendLocator.getRasterLegendManager();
+                List<ColorTableClass> colors = new ArrayList<>();
+                List<String> lines = FileUtils.readLines(f);
+                if (lines != null) {
+                    this.source = f.getAbsoluteFile();
+                    int lineno = 1;
+                    double interpolation = 50.0;
+                    for (String line : lines) {
+                        line = line.trim();
+                        if (!Character.isDigit(line.charAt(0))) {
+                            continue;
+                        }
+                        try {
+                            String[] words = StringUtils.split(line);
+                            if (words.length < 4) {
+                                continue;
+                            }
+                            int value = Integer.parseInt(words[0]);
+                            int r = Integer.parseInt(words[1]);
+                            int g = Integer.parseInt(words[2]);
+                            int b = Integer.parseInt(words[3]);
+                            Color color = new Color(r, g, b);
+
+                            ColorTableClass colorTableClass = legendManager.createColorTableClass(
+                                    String.valueOf(value), value, interpolation, color);
+
+                            colors.add(colorTableClass);
+                        } catch (Exception e) {
+                            logger.warn("Can't parse line '" + line
+                                    + "' (lineno=+" + lineno
+                                    + ", file=" + f.getAbsoluteFile()
+                                    + ").", e);
+
+                        }
+                    }
+                }
+                if( !colors.isEmpty() ) {
+                    String colorTableName = FilenameUtils.getBaseName(f.getName());
+                    this.colorTable = legendManager.createColorTable(colorTableName, colors, true);
+                }
+            } catch (IOException e) {
+                logger.warn("Couldn't read " + FILE_EXTENSION + " file (" + f.getAbsoluteFile() + ")", e);
+                throw e;
+            }
+        }
+
+    }
+
+    @Override
+    public void write(File file) throws IOException {
+        File f = this.getFile(file);
+        // TODO: falta implementar guardar la CLR
+    }
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultWLDFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultWLDFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultWLDFile.java	(revision 43876)
@@ -0,0 +1,186 @@
+package org.gvsig.basicformats.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.gvsig.basicformats.WLDFile;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DefaultWLDFile implements WLDFile {
+    
+    private static final Logger logger = LoggerFactory.getLogger(DefaultWLDFile.class);
+    
+        
+    private File source;
+    
+    private double pixelSizeX;
+    private double rotationAxisY;
+    private double rotationAxisX;
+    private double pixelSizeY;
+    private double upperLeftPixelCenterCoordX;
+    private double upperLeftPixelCenterCoordY;
+
+    public DefaultWLDFile() {
+        this.source = null;
+    }
+    
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath())+"."+FILE_EXTENSION);
+        return f;
+    }
+    
+    @Override
+    public File getFile() {
+        return source;
+    }
+
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                List<String> lines = FileUtils.readLines(f);
+                if (lines!=null ) {
+                    this.source = f.getAbsoluteFile();
+                    int lineno = 0;
+                    for (String line : lines) {
+                        line = line.trim();
+                        char ch = line.charAt(0);
+                        if( lineno>5 || Character.isLetter(ch) || ch==';' || ch=='#' ) {
+                            continue;
+                        }
+                        try {
+                            double value = Double.parseDouble(line);
+                            switch(lineno) {
+                                case 0:
+                                    this.pixelSizeX=value;
+                                    break;
+                                case 1:
+                                    this.rotationAxisY = value;
+                                    break;
+                                case 2:
+                                    this.rotationAxisX = value;
+                                    break;
+                                case 3:
+                                    this.pixelSizeY = value;
+                                    break;
+                                case 4:
+                                    this.upperLeftPixelCenterCoordX = value;
+                                    break;
+                                case 5:
+                                    this.upperLeftPixelCenterCoordY = value;
+                                    break;
+                            }
+                            lineno++;
+                        } catch(NumberFormatException e) {
+                            
+                        }
+                    }
+                }
+
+            } catch (IOException e) {
+                logger.warn("Couldn't read "+FILE_EXTENSION+" file ("+f.getAbsolutePath()+").",e);
+                throw e;
+            }
+        }
+    }
+
+    @Override
+    public Envelope getEnvelope(int rows, int columns) {
+        Envelope envelope = null;
+        if (0.0 != getRotationAxisX() || 0.0 != getRotationAxisY()) {
+            logger.warn("Rotation in wld file not implemented yet. It will be ignored");
+        }
+
+        double leftMostX = 0;
+        double upperMostY = 0;
+        double height = 0;
+        double width = 0;
+        try {
+            leftMostX = getUpperLeftPixelCenterCoordX() - (getPixelSizeX() * 0.5);
+            upperMostY = getUpperLeftPixelCenterCoordY() - (getPixelSizeY() * 0.5);
+            height=rows*getPixelSizeY();
+            width=columns*getPixelSizeX();
+
+            envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                Math.min(leftMostX,leftMostX + width),
+                Math.min(upperMostY,upperMostY + height),
+                Math.max(leftMostX,leftMostX + width),
+                Math.max(upperMostY,upperMostY + height),
+                Geometry.SUBTYPES.GEOM2D);
+        } catch (Exception e) {
+            logger.warn(
+                "Failed to create envelope from wld file with coords: minx:"+leftMostX+
+                ", miny:"+upperMostY+", maxX: "+leftMostX + width+", maxY: "+upperMostY + height, e);
+        }
+        return envelope;        
+    }
+    
+    @Override
+    public void write(File file) {
+        // TODO: Falta implementar el write del WLDFile
+        File f = this.getFile(file);
+
+    }
+    
+    @Override
+    public void setValue(Envelope envelope, int rows, int columns) {
+        // TODO: Falta implementar el setValue del WLDFile
+    }
+
+    /**
+     * @return the pixelSizeX
+     */
+    @Override
+    public double getPixelSizeX() {
+        return pixelSizeX;
+    }
+
+    /**
+     * @return the rotationAxisY
+     */
+    @Override
+    public double getRotationAxisY() {
+        return rotationAxisY;
+    }
+
+    /**
+     * @return the rotationAxisX
+     */
+    @Override
+    public double getRotationAxisX() {
+        return rotationAxisX;
+    }
+
+    /**
+     * @return the pixelSizeY
+     */
+    @Override
+    public double getPixelSizeY() {
+        return pixelSizeY;
+    }
+
+    /**
+     * @return the upperLeftPixelCenterCoordX
+     */
+    @Override
+    public double getUpperLeftPixelCenterCoordX() {
+        return upperLeftPixelCenterCoordX;
+    }
+
+    /**
+     * @return the upperLeftPixelCenterCoordY
+     */
+    @Override
+    public double getUpperLeftPixelCenterCoordY() {
+        return upperLeftPixelCenterCoordY;
+    }
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCPGFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCPGFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultCPGFile.java	(revision 43876)
@@ -0,0 +1,225 @@
+package org.gvsig.basicformats.impl;
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.basicformats.CPGFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DefaultCPGFile implements CPGFile {
+
+    private static final Logger logger = LoggerFactory.getLogger(DefaultPRJFile.class);
+
+
+    private File source;
+    private String charsetName = null;
+
+    /**
+     * Define the valid code pages (equivalent to MSDOS code pages). 
+     * This codes are used on the byte 29 of the DBF header to define the DBF
+     * codepage.
+     *
+     * The equivalences of these charsets using Java NIO charset names are
+     * defined on the {@link #charsetNames} array (so 0x01 is
+     * equivalent to IBM437, 0x02 to IBM850, etc)
+     *
+     * See some other equivalences in:
+     * https://github.com/infused/dbf/blob/master/docs/supported_encodings.csv
+     * https://github.com/olemb/dbfread/blob/master/dbfread/codepages.py
+     * https://joinup.ec.europa.eu/svn/gvsig-desktop/trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/dbf/DbfEncodings.java
+     */
+    private static final short[] codePages = {
+        0x01, 0x02, 0x03, 0x04,
+        0x08, 0x09, 0x0a, 0x0b,
+        0x0d, 0x0e, 0x0f, 0x10,
+        0x11, 0x12, 0x13, 0x14,
+        0x15, 0x16, 0x17, 0x18,
+        0x19, 0x1a, 0x1b, 0x1c,
+        0x1d, 0x1f, 0x22, 0x23,
+        0x24, 0x25, 0x26, 0x37,
+        0x40, 0x4d, 0x4e, 0x4f,
+        0x50, 0x57, 0x58, 0x59,
+        0x64, 0x65, 0x66, 0x67,
+        0x68, 0x69, 0x6a, 0x6b,
+        0x6c, 0x78, 0x79, 0x7a,
+        0x7b, 0x7c, 0x7d, 0x7d,
+        0x86, 0x87, 0x88, 0xc8,
+        0xc9, 0xca, 0xcb, 0xcc};
+
+    /**
+     * Equivalent Java charset names to the code pages defined in
+     * {@link #codePages}, using Java NIO Charset names (which differ
+     * from JAVA IO names, see
+     * https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html)
+     */
+    private static final String[] charsetNames = new String[]{
+        "IBM437", "IBM850", "windows-1252", "x-MacRoman",
+        "IBM865", "IBM437", "IBM850", "IBM437",
+        "IBM437", "IBM850", "IBM437", "IBM850",
+        "IBM437", "IBM850", "x-IBM943", "IBM850",
+        "IBM437", "IBM850", "IBM865", "IBM437",
+        "IBM437", "IBM850", "IBM437", "IBM863",
+        "IBM850", "IBM852", "IBM852", "IBM852",
+        "IBM860", "IBM850", "IBM866", "IBM850",
+        "IBM852", "x-mswin-936", "x-IBM949", "IBM950",
+        "x-IBM874", "windows-1252", "windows-1252", "windows-1252",
+        "IBM852", "IBM866", "IBM865", "IBM861",
+        // 0x68 and 0x69 are unofficial "Codepage 895 Kamenicky (Czech) MS-DOS" and "Codepage 620  Mazovia (Polish) MS-DOS",
+        // but there is no Java equivalent
+        // so we use CP437 which is the closest charset for the latin characters part
+        "IBM437", "IBM437", "x-IBM737", "IBM857",
+        "IBM863", "x-IBM950", "x-IBM949", "x-mswin-936",
+        "x-IBM942", "x-IBM874", "windows-1255", "windows-1256",
+        "x-IBM737", "IBM852", "IBM857", "windows-1250",
+        "windows-1251", "windows-1254", "windows-1253", "windows-1257"};
+
+    public DefaultCPGFile() {
+        this.charsetName = null;
+        this.source = null;
+    }
+
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath()) + "." + FILE_EXTENSION);
+        return f;
+    }
+
+    @Override
+    public File getFile() {
+        return source;
+    }
+
+    @Override
+    public String getCharsetName() {
+        return this.charsetName;
+    }
+
+    @Override
+    public void setCharsetName(String charsetName) {
+        this.charsetName = charsetName;
+    }
+
+    @Override
+    public String toCharsetName(String codePageName) {
+        if (codePageName.equals("UTF8")) {
+            return "UTF-8";
+        }
+        if (codePageName.equals("SJIS")) {
+            return "Shift_JIS";
+        }
+
+        if (StringUtils.isNumeric(codePageName)) {
+            if (codePageName.startsWith("8859") && codePageName.length() > 4) {
+                return "ISO-8859-" + codePageName.substring(4);
+            }
+            if (codePageName.startsWith("125") && codePageName.length() == 4) {
+                return "windows-" + codePageName;
+            }
+            if (codePageName.length() == 3) {
+                return "IBM-" + codePageName;
+            }
+            for (int i = 0; i < charsetNames.length; i++) {
+                if (charsetNames[i].contains(codePageName)) {
+                    return codePageName;
+                }
+            }
+        }
+        if (codePageName.equals("65001")) {
+            return "UTF-8";
+        }
+        return codePageName;
+    }
+
+    /**
+     * Gets the Java NIO charset name equivalent to the provided code page.
+     * Gets null if the provided code page is not recognised
+     * as a valid code
+     *
+     * @param codePage
+     * @return
+     */
+    @Override
+    public String toCharsetName(int codePage) {
+        if (codePage != 0) {
+            for (int i = 0; i < codePages.length; i++) {
+                if (codePages[i] == codePage) {
+                    return charsetNames[i];
+                }
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public String toCPGName(String charsetName) {
+        if (charsetName.startsWith("windows-")
+                || charsetName.startsWith("ISO-8859")
+                || charsetName.startsWith("IBM-")
+                || charsetName.startsWith("x-IBM")
+                || charsetName.startsWith("x-mswin-")) {
+            return charsetName.replaceAll("[^\\d]", "");
+        }
+        if (charsetName.equals("Shift_JIS")) {
+            return "SJIS";
+        }
+        // For the rest of the charsets, we'll directly write the Java NIO Charset
+        // Probably they will only be recognized by gvSIG, but it's better than nothing
+        return charsetName;
+    }
+
+    /**
+     * Returns the code page corresponding to the
+     * provided charset name
+     *
+     * @param charsetName
+     * @return The code page, or 0x00 if no equivalent code page was found for
+     * the provided charsetName
+     */
+    @Override
+    public int toCPG(String charsetName) {
+        for (int i = 0; i < charsetNames.length; i++) {
+            if (charsetNames[i].equals(charsetName)) {
+                return codePages[i];
+            }
+        }
+        // default
+        return 0x00;
+    }
+
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                String theContents = FileUtils.readFileToString(f);
+                theContents = StringUtils.trim(theContents);
+                if (StringUtils.isNotEmpty(theContents)) {
+                    String theCharset = toCharsetName(theContents);
+                    this.charsetName = theCharset;
+                    this.source = f.getAbsoluteFile();
+                }
+            } catch (IOException e) {
+                logger.warn("Couldn't read " + FILE_EXTENSION + " file (" + f.getAbsolutePath() + ").", e);
+                throw e;
+            }
+        }
+    }
+
+    @Override
+    public void write(File file) throws IOException {
+        File f = this.getFile(file);
+        try {
+            String export = toCPGName(this.charsetName) + "\n";
+            FileUtils.writeStringToFile(f, export, "ISO-8859-1");
+            this.source = f;
+        } catch (Exception e) {
+            logger.warn("Couldn't write " + FILE_EXTENSION + " file (" + f.getAbsolutePath() + ").", e);
+            throw e;
+        }
+    }
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultPRJFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultPRJFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultPRJFile.java	(revision 43876)
@@ -0,0 +1,85 @@
+
+package org.gvsig.basicformats.impl;
+
+
+import java.io.File;
+import java.io.IOException;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.cresques.cts.ICRSFactory;
+import org.cresques.cts.IProjection;
+import org.gvsig.basicformats.PRJFile;
+import org.gvsig.fmap.crs.CRSFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DefaultPRJFile implements PRJFile {
+            
+    private static final Logger logger = LoggerFactory.getLogger(DefaultPRJFile.class);
+    
+        
+    private File source;
+    private IProjection crs;
+    
+    public DefaultPRJFile() {
+        this.source = null;
+        this.crs = null;        
+    }
+
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath())+"."+FILE_EXTENSION);
+        return f;
+    }
+    
+    @Override
+    public File getFile() {
+        return source;
+    }
+    
+    @Override
+    public IProjection getCRS() {
+        return this.crs;
+    }
+    
+    @Override
+    public void setCRS(IProjection crs) {
+        this.crs = crs;
+    }
+    
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                String theContents = FileUtils.readFileToString(f);
+                if (StringUtils.isNotEmpty(theContents)){
+                    IProjection theCrs=CRSFactory.getCRSFactory().get(ICRSFactory.FORMAT_WKT_ESRI, theContents);
+                    this.crs = theCrs;
+                    this.source = f.getAbsoluteFile();
+                }
+            } catch (IOException e) {
+                logger.warn("Couldn't read "+FILE_EXTENSION+" file ("+f.getAbsolutePath()+").",e);
+                throw e;
+            }
+        }
+            
+    }
+    
+    @Override
+    public void write(File file) throws IOException {
+        File f = this.getFile(file);
+        try {
+            String export = crs.export(ICRSFactory.FORMAT_WKT_ESRI);
+            if(export!=null){
+                FileUtils.writeStringToFile(f, export);
+                this.source = f;
+            }
+        } catch (Exception e) {
+            logger.warn("Couldn't write "+FILE_EXTENSION+" file ("+f.getAbsolutePath()+").",e);
+            throw e;
+        }
+    }
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultHDRFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultHDRFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultHDRFile.java	(revision 43876)
@@ -0,0 +1,598 @@
+package org.gvsig.basicformats.impl;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.ByteOrder;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.basicformats.HDRFile;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.raster.lib.buffer.api.BufferManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DefaultHDRFile implements HDRFile {
+
+    // http://resources.esri.com/help/9.3/arcgisdesktop/com/gp_toolref/spatial_analyst_tools/esri_ascii_raster_format.htm
+    private static final Logger logger = LoggerFactory.getLogger(DefaultHDRFile.class);
+
+    private File source;
+    private String comments;
+
+    private int nrows = NONE;
+    private int ncols = NONE;
+    private int nbands = 1;
+    private int nbits = 8;
+    private String pixeltype;
+    private String byteorder_word;
+    private ByteOrder byteorder = ByteOrder.nativeOrder();
+    private String layout = LAYOUT_BIL;
+    private int skipbytes = 0;
+    private double ulxmax = Double.NaN;
+    private double ulymax = Double.NaN;
+    private double xdim = Double.NaN;
+    private double ydim = Double.NaN;
+    private int bandrowbytes = NONE;
+    private int totalrowbytes = NONE;
+    private int bandgapbytes = 0;
+    private boolean valid = false;
+    private double nodata_value = Double.NaN;
+
+    // X coordinate of the origin (by center or lower left corner of the cell).
+    private double xllcorner = Double.NaN;
+
+    // Y coordinate of the origin (by center or lower left corner of the cell).
+    private double yllcorner = Double.NaN;
+
+    private int cellsize = NONE;
+
+    public DefaultHDRFile() {
+        this.source = null;
+    }
+
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath()) + "." + FILE_EXTENSION);
+        return f;
+    }
+
+    @Override
+    public File getFile() {
+        return source;
+    }
+
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                List<String> lines = FileUtils.readLines(f);
+                if (lines != null) {
+                    this.source = f.getAbsoluteFile();
+                    int lineno = 1;
+                    for (String line : lines) {
+                        String[] words = StringUtils.split(line.trim().toLowerCase());
+                        try {
+                            switch (words[0]) {
+                                case "nrows":
+                                    this.nrows = Integer.parseInt(words[1]);
+                                    break;
+                                case "ncols":
+                                    this.ncols = Integer.parseInt(words[1]);
+                                    break;
+                                case "nbands":
+                                    this.nbands = Integer.parseInt(words[1]);
+                                    break;
+                                case "nbits":
+                                    this.nbits = Integer.parseInt(words[1]);
+                                    break;
+                                case "pixeltype":
+                                    this.pixeltype = words[1];
+                                    break;
+                                case "byteorder":
+                                    this.byteorder_word = words[1];
+                                    break;
+                                case "layout":
+                                    this.layout = words[1];
+                                    break;
+                                case "skipbytes":
+                                    this.skipbytes = Integer.parseInt(words[1]);
+                                    break;
+                                case "nodata_value":
+                                    this.nodata_value = Double.parseDouble(words[1]);
+                                    break;
+                                case "cellsize":
+                                    this.cellsize = Integer.parseInt(words[1]);
+                                    break;
+                                case "xllcorner":
+                                case "xllcenter":
+                                    this.xllcorner = Double.parseDouble(words[1]);
+                                    break;
+                                case "yllcorner":
+                                case "yllcenter":
+                                    this.yllcorner = Double.parseDouble(words[1]);
+                                    break;
+                                case "ulxmax":
+                                    this.ulxmax = Double.parseDouble(words[1]);
+                                    break;
+                                case "ulymax":
+                                    this.ulymax = Double.parseDouble(words[1]);
+                                    break;
+                                case "xdim":
+                                    this.xdim = Double.parseDouble(words[1]);
+                                    break;
+                                case "ydim":
+                                    this.ydim = Double.parseDouble(words[1]);
+                                    break;
+                                case "bandrowbytes":
+                                    this.bandrowbytes = Integer.parseInt(words[1]);
+                                    break;
+                                case "totalrowbytes":
+                                    this.totalrowbytes = Integer.parseInt(words[1]);
+                                    break;
+                                case "bandgapbytes":
+                                    this.bandgapbytes = Integer.parseInt(words[1]);
+                                    break;
+                            }
+                        } catch (NumberFormatException e) {
+                            logger.warn("Can't parse keyword '" + words[0]
+                                    + "' (value='" + words[1]
+                                    + "', lineno=+" + lineno
+                                    + ", file=" + f.getAbsoluteFile()
+                                    + ").", e);
+                        }
+                        lineno++;
+                    }
+                    this.fixValues();
+                }
+
+            } catch (IOException e) {
+                logger.warn("Couldn't read " + FILE_EXTENSION + " file (" + f.getAbsoluteFile() + ")", e);
+                throw e;
+            } catch (Exception e) {
+                String msg = "Couldn't read " + FILE_EXTENSION + " file (" + f.getAbsoluteFile() + ")";
+                logger.warn(msg, e);
+                throw new IOException(msg, e);
+            }
+        }
+    }
+
+    private void fixValues() {
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
+        boolean valid = true;
+
+        if (this.pixeltype != null) {
+            switch (this.pixeltype) {
+                case "signedint":
+                    this.nbits = 32;
+                    break;
+                case "byte_unsigned":
+                    this.nbits = 8;
+                    break;
+            }
+        }
+
+        switch (this.getNbits()) {
+            case 1:
+            case 4:
+                logger.warn("nbits keyword has a non supported value of " + this.getNbits() + " (" + this.source.getAbsolutePath() + ").");
+                valid = false;
+                break;
+            case 8:
+            case 16:
+            case 32:
+            case 64:
+                break;
+            default:
+                logger.warn("nbits keyword has an invalid value of " + this.getNbits() + " (" + this.source.getAbsolutePath() + ").");
+                this.nbits = 1;
+                valid = false;
+                break;
+        }
+
+        switch (this.getLayout()) {
+            case LAYOUT_BIL:
+            case LAYOUT_BIP:
+            case LAYOUT_BSQ:
+                break;
+            default:
+                logger.warn("layout keyword has an invalid value of '" + this.getLayout() + "' (" + this.source.getAbsolutePath() + ").");
+                this.layout = LAYOUT_BIL;
+                valid = false;
+                break;
+        }
+
+        if( StringUtils.isEmpty(this.byteorder_word) ) {
+            this.byteorder = ByteOrder.nativeOrder();
+            if( this.byteorder == ByteOrder.BIG_ENDIAN ) {
+                this.byteorder_word = "msbfirst";
+            } else {
+                this.byteorder_word = "lsbfirst";
+            }
+        } else {
+            switch(this.byteorder_word) {
+                case "lsbfirst":
+                case "little_endian":
+                case "littleendian":
+                case "intel":
+                case "i":
+                    this.byteorder = ByteOrder.LITTLE_ENDIAN;
+                    break;
+                case "motorola":
+                case "m":
+                case "msbfirst":
+                case "big_endian":
+                case "bigendian":
+                    this.byteorder = ByteOrder.BIG_ENDIAN;
+                    break;
+                default:
+                    logger.warn("byteorder keyword has an invalid value of '" + this.byteorder_word + "' (" + this.source.getAbsolutePath() + ").");
+                    this.byteorder = ByteOrder.nativeOrder();
+            }
+        }
+        if (this.getNrows() == NONE || this.getNcols() == NONE) {
+            logger.warn("nrows/ncols keywords has an invalid value of '" + this.getNrows() + "/" + this.getNcols() + "' (" + this.source.getAbsolutePath() + ").");
+            valid = false;
+        }
+        if (this.getUlymax() == NONE) {
+            this.ulymax = this.getNrows() - 1;
+        }
+        if (this.getBandrowbytes() == NONE) {
+            this.bandrowbytes = (this.getNcols() * this.getNbits()) / 8;
+        }
+        switch (this.getLayout()) {
+            case LAYOUT_BIL:
+                if (this.getTotalrowbytes() == NONE) {
+                    this.totalrowbytes = this.getNbands() * this.getBandrowbytes();
+                }
+                this.bandgapbytes = 0;
+                break;
+            case LAYOUT_BIP:
+                if (this.getTotalrowbytes() == NONE) {
+                    this.totalrowbytes = (this.getNcols() * this.getNbands() * this.getNbits()) / 8;
+                }
+                this.bandgapbytes = 0;
+                break;
+            case LAYOUT_BSQ:
+                if (this.getTotalrowbytes() == NONE) {
+                    this.totalrowbytes = 0;
+                }
+                if (this.getBandgapbytes() == NONE) {
+                    this.bandgapbytes = 0;
+                }
+                break;
+        }
+        this.valid = valid;
+    }
+
+    @Override
+    public int getDataType() {
+        if (this.pixeltype != null) {
+            switch (this.pixeltype) {
+                case "signedint":
+                    return BufferManager.TYPE_INT;
+                case "byte_unsigned":
+                    return BufferManager.TYPE_BYTE;
+            }
+        }
+        switch (this.getNbits()) {
+            case 1:
+            case 4:
+            default:
+                return BufferManager.TYPE_UNDEFINED;
+            case 8:
+                return BufferManager.TYPE_BYTE;
+            case 16:
+                return BufferManager.TYPE_USHORT;
+            case 32:
+                return BufferManager.TYPE_INT;
+            case 64:
+                return BufferManager.TYPE_DOUBLE;
+        }
+    }
+
+    @Override
+    public void write(File file) throws IOException {
+        File f = this.getFile(file);
+        StringBuilder builder = new StringBuilder();
+        builder.append("; ").append(this.comments).append("\n");
+        builder.append("nrows ").append(this.nrows).append("\n");
+        builder.append("ncols ").append(this.ncols).append("\n");
+        builder.append("nbands ").append(this.nbands).append("\n");
+        builder.append("nbits ").append(this.nbits).append("\n");
+        builder.append("layout ").append(LAYOUT_BSQ).append("\n");
+        builder.append("byteorder ").append(this.byteorder_word).append("\n");
+        builder.append("ulxmax ").append(this.ulxmax).append("\n");
+        builder.append("ulymax ").append(this.ulymax).append("\n");
+        builder.append("ydim ").append(this.ydim).append("\n");
+        builder.append("xdim ").append(this.xdim).append("\n");
+        
+        FileUtils.write(file, builder.toString());
+    }
+    
+    @Override
+    public void setByteOrder(ByteOrder order) {
+        this.byteorder = order;
+        if( order == ByteOrder.BIG_ENDIAN ) {
+            this.byteorder_word = "msbfirst";
+        } else {
+            this.byteorder_word = "lsbfirst";
+        }
+    }
+    
+    @Override
+    public void setNBands(int nbands) {
+        this.nbands = nbands;
+    }
+    
+    @Override
+    public void setDataType(int dataType) {
+        switch(dataType) {
+            case BufferManager.TYPE_BYTE:
+                this.nbits = 8;
+                break;
+            case BufferManager.TYPE_USHORT:
+                this.nbits = 16;
+                break;
+            case BufferManager.TYPE_INT:
+                this.nbits = 32;
+                break;
+            case BufferManager.TYPE_DOUBLE:
+                this.nbits = 64;
+                break;
+            default:
+                throw new IllegalArgumentException("The data type "+dataType +" is not supported");
+        }
+        
+    }
+    
+    @Override
+    public void setDimensions(int nrows, int ncols, Envelope envelope) {
+        this.ncols = ncols;
+        this.nrows = nrows;
+
+        Point min = envelope.getLowerCorner();
+        Point max = envelope.getUpperCorner();
+        
+        this.ulxmax = min.getX();
+        this.ulymax = max.getY();
+        this.ydim = (min.getY() - max.getY()) / this.nrows;
+        this.xdim = (max.getX() - min.getX()) / this.ncols;
+    }
+    
+    @Override
+    public Envelope getEnvelope() {
+        Envelope envelope = null;
+        try {
+            if (!Double.isNaN(this.xllcorner)
+                    && !Double.isNaN(this.yllcorner)
+                    && this.cellsize > 0) {
+                envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                        this.xllcorner,
+                        this.yllcorner,
+                        this.xllcorner + (this.ncols * this.cellsize),
+                        this.yllcorner + (this.nrows * this.cellsize),
+                        Geometry.SUBTYPES.GEOM2D);
+            }
+            if (envelope == null && !Double.isNaN(this.ulxmax)
+                    && !Double.isNaN(this.ulymax)
+                    && !Double.isNaN(this.xdim)
+                    && !Double.isNaN(this.ydim)) {
+                envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                        this.ulxmax,
+                        this.ulymax - (this.nrows * this.ydim),
+                        this.ulxmax + (this.ncols * this.xdim),
+                        this.ulymax,
+                        Geometry.SUBTYPES.GEOM2D);
+            }
+            if (envelope == null && !Double.isNaN(this.xdim)
+                    && !Double.isNaN(this.ydim)) {
+                envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                        0,
+                        0,
+                        this.ncols * this.xdim,
+                        this.nrows * this.ydim,
+                        Geometry.SUBTYPES.GEOM2D);
+            }
+            if (envelope == null && this.cellsize > 0) {
+                envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                        0,
+                        0,
+                        this.ncols * this.cellsize,
+                        this.nrows * this.cellsize,
+                        Geometry.SUBTYPES.GEOM2D);
+            }
+            if (envelope == null) {
+                envelope = GeometryLocator.getGeometryManager().createEnvelope(
+                        0,
+                        0,
+                        this.ncols,
+                        this.nrows,
+                        Geometry.SUBTYPES.GEOM2D);
+            }
+        } catch (Exception ex) {
+            logger.debug("Can't calculate envelope.", ex);
+        }
+        return envelope;
+    }
+
+    /**
+     * @return the nrows
+     */
+    @Override
+    public int getNrows() {
+        return nrows;
+    }
+
+    /**
+     * @return the ncols
+     */
+    @Override
+    public int getNcols() {
+        return ncols;
+    }
+
+    /**
+     * @return the nbands
+     */
+    @Override
+    public int getNbands() {
+        return nbands;
+    }
+
+    /**
+     * @return the nbits
+     */
+    @Override
+    public int getNbits() {
+        return nbits;
+    }
+
+    /**
+     * @return the byteorder
+     */
+    @Override
+    public ByteOrder getByteorder() {
+        return byteorder;
+    }
+
+    /**
+     * @return the layout
+     */
+    @Override
+    public String getLayout() {
+        return layout;
+    }
+
+    /**
+     * @return the skipbytes
+     */
+    @Override
+    public int getSkipbytes() {
+        return skipbytes;
+    }
+
+    /**
+     * @return the ulxmax
+     */
+    @Override
+    public double getUlxmax() {
+        return ulxmax;
+    }
+
+    /**
+     * @return the ulymax
+     */
+    @Override
+    public double getUlymax() {
+        return ulymax;
+    }
+
+    /**
+     * @return the xdim
+     */
+    @Override
+    public double getXdim() {
+        return xdim;
+    }
+
+    /**
+     * @return the ydim
+     */
+    @Override
+    public double getYdim() {
+        return ydim;
+    }
+
+    /**
+     * @return the bandrowbytes
+     */
+    @Override
+    public int getBandrowbytes() {
+        return bandrowbytes;
+    }
+
+    /**
+     * @return the totalrowbytes
+     */
+    @Override
+    public int getTotalrowbytes() {
+        return totalrowbytes;
+    }
+
+    /**
+     * @return the bandgapbytes
+     */
+    @Override
+    public int getBandgapbytes() {
+        return bandgapbytes;
+    }
+
+    /**
+     * @return the isValid
+     */
+    @Override
+    public boolean isValid() {
+        return valid;
+    }
+
+    /**
+     * @return the comments
+     */
+    @Override
+    public String getComments() {
+        return comments;
+    }
+
+    /**
+     * @param comments the comments to set
+     */
+    @Override
+    public void setComments(String comments) {
+        this.comments = comments;
+    }
+
+    /**
+     * @return the nodata_value
+     */
+    @Override
+    public double getNodata_value() {
+        return nodata_value;
+    }
+
+    /**
+     * @return the xllcorner
+     */
+    @Override
+    public double getXllcorner() {
+        return xllcorner;
+    }
+
+    /**
+     * @return the yllcorner
+     */
+    @Override
+    public double getYllcorner() {
+        return yllcorner;
+    }
+
+    /**
+     * @return the cellsize
+     */
+    @Override
+    public int getCellsize() {
+        return cellsize;
+    }
+
+    @Override
+    public int getBandSize() {
+        return (this.nrows * this.ncols * this.nbits) + this.bandgapbytes;
+    }
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultSTXFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultSTXFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/impl/DefaultSTXFile.java	(revision 43876)
@@ -0,0 +1,250 @@
+
+package org.gvsig.basicformats.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.basicformats.STXFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DefaultSTXFile implements STXFile {
+
+    private static final Logger logger = LoggerFactory.getLogger(DefaultSTXFile.class);
+
+
+    private File source;
+    private List<STXBand> bands;
+
+    public static class DefaultSTXBand implements STXBand {
+
+        private int band;
+        private double minimum;
+        private double maximum;
+        private double mean; // Optional
+        private double std_deviation; // Optional
+        private double linear_stretch_min; // Optional
+        private double linear_stretch_max; // Optional
+
+        private boolean valid = false;
+
+        public DefaultSTXBand() {
+
+        }
+
+        public DefaultSTXBand(
+            int band,
+            double minimum,
+            double maximum,
+            double mean,
+            double std_deviation,
+            double linear_stretch_min,
+            double linear_stretch_max
+            ) {
+            this();
+            this.band = band;
+            this.minimum = minimum;
+            this.maximum = maximum;
+            this.mean = mean;
+            this.std_deviation = std_deviation;
+            this.linear_stretch_min = linear_stretch_min;
+            this.linear_stretch_max = linear_stretch_max;
+        }
+
+        @SuppressWarnings("OverridableMethodCallInConstructor")
+        public DefaultSTXBand(String line) {
+            this();
+            this.parse(line);
+        }
+
+        @Override
+        public void parse(String line) {
+            valid = false;
+            String[] words = StringUtils.split(line.trim().toLowerCase());
+            if( words.length < 7 ) {
+                throw new IllegalArgumentException("At least 7 parameters are needed ("+line+").");
+            }
+            this.band = Integer.parseInt(words[0]);
+            this.minimum = Double.parseDouble(words[1]);
+            this.maximum = Double.parseDouble(words[2]);
+            if( "#".equals(words[3]) ) {
+                this.mean = Double.NaN;
+            } else {
+                this.mean = Double.parseDouble(words[3]);
+            }
+            if( "#".equals(words[4]) ) {
+                this.std_deviation = Double.NaN;
+            } else {
+                this.std_deviation = Double.parseDouble(words[4]);
+            }
+            if( "#".equals(words[5]) ) {
+                this.linear_stretch_min = Double.NaN;
+            } else {
+                this.linear_stretch_min = Double.parseDouble(words[5]);
+            }
+            if( "#".equals(words[6]) ) {
+                this.linear_stretch_max = Double.NaN;
+            } else {
+                this.linear_stretch_max = Double.parseDouble(words[6]);
+            }
+            valid = true;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder();
+            builder.append(this.band).append(" ");
+            builder.append(this.minimum).append(" ");
+            builder.append(this.maximum).append(" ");
+            if( Double.isNaN(this.mean) ) {
+                builder.append("# ");
+            } else {
+                builder.append(this.mean).append(" ");
+            }
+            if( Double.isNaN(this.std_deviation) ) {
+                builder.append("# ");
+            } else {
+                builder.append(this.std_deviation).append(" ");
+            }
+            if( Double.isNaN(this.linear_stretch_min) ) {
+                builder.append("# ");
+            } else {
+                builder.append(this.linear_stretch_min).append(" ");
+            }
+            if( Double.isNaN(this.linear_stretch_max) ) {
+                builder.append("# ");
+            } else {
+                builder.append(this.linear_stretch_max).append(" ");
+            }
+            return builder.toString();
+        }
+
+        @Override
+        public int getBand() {
+            return band;
+        }
+
+        @Override
+        public double getMinimum() {
+            return minimum;
+        }
+
+        @Override
+        public double getMaximum() {
+            return maximum;
+        }
+
+        @Override
+        public double getMean() {
+            return mean;
+        }
+
+        @Override
+        public double getStdDeviation() {
+            return std_deviation;
+        }
+
+        @Override
+        public double getLinearStretchMin() {
+            return linear_stretch_min;
+        }
+
+        @Override
+        public double getLinearStretchMax() {
+            return linear_stretch_max;
+        }
+
+        @Override
+        public boolean isValid() {
+            return valid;
+        }
+    }
+
+   public DefaultSTXFile() {
+        this.source = null;
+        this.bands = new ArrayList<>();
+    }
+
+    @Override
+    public File getFile(File file) {
+        File f = new File(FilenameUtils.removeExtension(file.getAbsolutePath())+"."+FILE_EXTENSION);
+        return f;
+    }
+
+    @Override
+    public File getFile() {
+        return source;
+    }
+
+    @Override
+    public void read(File file) throws IOException {
+        File f = this.getFile(file);
+        if (f.exists()) {
+            try {
+                this.bands = new ArrayList<>();
+                List<String> lines = FileUtils.readLines(f);
+                if (lines != null) {
+                    this.source = f.getAbsoluteFile();
+                    int lineno = 1;
+                    for (String line : lines) {
+                        try {
+                            DefaultSTXBand band = new DefaultSTXBand(line.trim());
+                            this.bands.add(band);
+                        } catch(IllegalArgumentException e) {
+                            logger.warn("Can't parse line '" + line
+                                    + "' (lineno=+" + lineno
+                                    + ", file=" + f.getAbsoluteFile()
+                                    + ").", e);
+
+                        }
+                    }
+                }
+                this.bands = Collections.unmodifiableList(this.bands);
+            } catch (IOException e) {
+                logger.warn("Couldn't read "+FILE_EXTENSION+" file (" + f.getAbsoluteFile() + ")", e);
+                throw e;
+            }
+        }
+    }
+
+    @Override
+    public List<STXBand> getBands() {
+        return this.bands;
+    }
+
+    @Override
+    public void clear() {
+        this.bands = new ArrayList<>();
+    }
+
+    @Override
+    public void addBand(
+            int band,
+            double minimum,
+            double maximum,
+            double mean,
+            double std_deviation,
+            double linear_stretch_min,
+            double linear_stretch_max
+        ) {
+        DefaultSTXBand b = new DefaultSTXBand(band, minimum, maximum, mean, std_deviation, linear_stretch_min, linear_stretch_max);
+        this.bands.add(b);
+    }
+
+    @Override
+    public void write(File file) throws IOException {
+        File f = this.getFile(file);
+        List<String> lines = new ArrayList<>();
+        for (STXBand band : this.bands) {
+            lines.add(band.toString());
+        }
+        FileUtils.writeLines(f, lines);
+        this.source = f;
+    }
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/WLDFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/WLDFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/WLDFile.java	(revision 43876)
@@ -0,0 +1,45 @@
+
+package org.gvsig.basicformats;
+
+import org.gvsig.fmap.geom.primitive.Envelope;
+
+
+public interface WLDFile extends FormatFile {
+
+    String FILE_EXTENSION = "wld";
+
+    Envelope getEnvelope(int rows, int columns);
+
+    void setValue(Envelope envelope, int rows, int columns);
+
+    /**
+     * @return the pixelSizeX
+     */
+    double getPixelSizeX();
+
+    /**
+     * @return the pixelSizeY
+     */
+    double getPixelSizeY();
+
+    /**
+     * @return the rotationAxisX
+     */
+    double getRotationAxisX();
+
+    /**
+     * @return the rotationAxisY
+     */
+    double getRotationAxisY();
+
+    /**
+     * @return the upperLeftPixelCenterCoordX
+     */
+    double getUpperLeftPixelCenterCoordX();
+
+    /**
+     * @return the upperLeftPixelCenterCoordY
+     */
+    double getUpperLeftPixelCenterCoordY();
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatFile.java	(revision 43876)
@@ -0,0 +1,17 @@
+
+package org.gvsig.basicformats;
+
+import java.io.File;
+import java.io.IOException;
+
+
+public interface FormatFile {
+ 
+    public File getFile(File file);
+
+    public File getFile();
+
+    public void read(File file) throws IOException ;
+
+    public void write(File file) throws IOException ;       
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CPGFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CPGFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CPGFile.java	(revision 43876)
@@ -0,0 +1,36 @@
+
+package org.gvsig.basicformats;
+
+public interface CPGFile extends FormatFile {
+
+    public String FILE_EXTENSION = "cpg";
+
+    public String getCharsetName();
+
+    public void setCharsetName(String charsetName);
+
+    /**
+     * Returns the code page corresponding to the
+     * provided charset name
+     *
+     * @param charsetName
+     * @return The code page, or 0x00 if no equivalent code page was found for
+     * the provided charsetName
+     */
+    public int toCPG(String charsetName);
+
+    public String toCPGName(String charsetName);
+
+    public String toCharsetName(String codePageName);
+
+    /**
+     * Gets the Java NIO charset name equivalent to the provided code page.
+     * Gets null if the provided code page is not recognised
+     * as a valid code
+     *
+     * @param codePage
+     * @return
+     */
+    public String toCharsetName(int codePage);
+    
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatsFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatsFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/FormatsFile.java	(revision 43876)
@@ -0,0 +1,99 @@
+
+package org.gvsig.basicformats;
+
+import java.io.File;
+import java.io.IOException;
+import org.gvsig.basicformats.impl.DefaultCLRFile;
+import org.gvsig.basicformats.impl.DefaultCPGFile;
+import org.gvsig.basicformats.impl.DefaultHDRFile;
+import org.gvsig.basicformats.impl.DefaultPRJFile;
+import org.gvsig.basicformats.impl.DefaultSTXFile;
+import org.gvsig.basicformats.impl.DefaultWLDFile;
+
+public class FormatsFile {
+    
+    public static CPGFile createCFGFile() {
+        return new DefaultCPGFile();
+    }
+
+    public static CPGFile getCFGFile(File file)  {
+        try {
+            DefaultCPGFile format = new DefaultCPGFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+    public static HDRFile createHDRFile() {
+        return new DefaultHDRFile();
+    }
+
+    public static HDRFile getHDRFile(File file)  {
+        try {
+            DefaultHDRFile format = new DefaultHDRFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+    public static PRJFile createPRJFile() {
+        return new DefaultPRJFile();
+    }
+
+    public static PRJFile getPRJFile(File file)  {
+        try {
+            DefaultPRJFile format = new DefaultPRJFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+    public static STXFile createSTXFile() {
+        return new DefaultSTXFile();
+    }
+
+    public static STXFile getSTXFile(File file)  {
+        try {
+            DefaultSTXFile format = new DefaultSTXFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+    public static WLDFile createWLDFile() {
+        return new DefaultWLDFile();
+    }
+
+    public static WLDFile getWLDFile(File file) {
+        try {
+            DefaultWLDFile format = new DefaultWLDFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+    public static CLRFile createCLRFile() {
+        return new DefaultCLRFile();
+    }
+
+    public static CLRFile getCLRFile(File file) {
+        try {
+            DefaultCLRFile format = new DefaultCLRFile();
+            format.read(file);
+            return format;
+        } catch (IOException ex) {
+            return null;
+        }
+    }
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/PRJFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/PRJFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/PRJFile.java	(revision 43876)
@@ -0,0 +1,15 @@
+
+package org.gvsig.basicformats;
+
+import org.cresques.cts.IProjection;
+
+
+public interface PRJFile extends FormatFile {
+
+    public String FILE_EXTENSION = "prj";
+    
+    public IProjection getCRS();
+
+    public void setCRS(IProjection crs);
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/HDRFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/HDRFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/HDRFile.java	(revision 43876)
@@ -0,0 +1,136 @@
+
+package org.gvsig.basicformats;
+
+import java.nio.ByteOrder;
+import org.gvsig.fmap.geom.primitive.Envelope;
+
+
+public interface HDRFile extends FormatFile {
+
+    public String FILE_EXTENSION = "hdr";
+    public String LAYOUT_BIL = "bil";
+    public String LAYOUT_BIP = "bip";
+    public String LAYOUT_BSQ = "bsq";
+    
+    public int NONE = -1;
+
+    public Envelope getEnvelope();
+    
+    public int getDataType();
+    
+    /**
+     * @return the bandgapbytes
+     */
+    public int getBandgapbytes();
+
+    /**
+     * @return the bandrowbytes
+     */
+    public int getBandrowbytes();
+
+    /**
+     * @return the byteorder
+     */
+    public ByteOrder getByteorder();
+
+    /**
+     * @return the comments
+     */
+    public String getComments();
+
+    /**
+     * @return the layout
+     */
+    public String getLayout();
+
+    /**
+     * @return the nbands
+     */
+    public int getNbands();
+
+    /**
+     * @return the nbits
+     */
+    public int getNbits();
+
+    /**
+     * @return the ncols
+     */
+    public int getNcols();
+
+    /**
+     * @return the nrows
+     */
+    public int getNrows();
+
+    /**
+     * @return the skipbytes
+     */
+    public int getSkipbytes();
+
+    /**
+     * @return the totalrowbytes
+     */
+    public int getTotalrowbytes();
+
+    /**
+     * @return the ulxmax
+     */
+    public double getUlxmax();
+
+    /**
+     * @return the ulymax
+     */
+    public double getUlymax();
+
+    /**
+     * @return the xdim
+     */
+    public double getXdim();
+
+    /**
+     * @return the ydim
+     */
+    public double getYdim();
+
+    /**
+     * @return the isValid
+     */
+    public boolean isValid();
+
+    /**
+     * @param comments the comments to set
+     */
+    public void setComments(String comments);
+
+    public int getBandSize();
+
+    /**
+     * @return the cellsize
+     */
+    public int getCellsize();
+
+    /**
+     * @return the nodata_value
+     */
+    public double getNodata_value();
+
+    /**
+     * @return the xllcorner
+     */
+    public double getXllcorner();
+
+    /**
+     * @return the yllcorner
+     */
+    public double getYllcorner();
+
+    public void setDataType(int dataType);
+
+    public void setDimensions(int nrows, int ncols, Envelope envelope);
+
+    public void setNBands(int nbands);
+    
+    public void setByteOrder(ByteOrder order);
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/STXFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/STXFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/STXFile.java	(revision 43876)
@@ -0,0 +1,39 @@
+package org.gvsig.basicformats;
+
+import java.util.List;
+
+public interface STXFile extends FormatFile {
+
+    public interface STXBand {
+        
+        public void parse(String line);
+
+        @Override
+        public String toString();
+        
+        public int getBand();
+        
+        public double getMinimum();
+        
+        public double getMaximum();
+        
+        public double getMean();
+        
+        public double getStdDeviation();
+        
+        public double getLinearStretchMin();
+        
+        public double getLinearStretchMax();
+
+        public boolean isValid();
+    }
+    
+    public String FILE_EXTENSION = "stx";
+
+    public void addBand(int band, double minimum, double maximum, double mean, double std_deviation, double linear_stretch_min, double linear_stretch_max);
+
+    public void clear();
+
+    public List<STXBand> getBands();
+   
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CLRFile.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CLRFile.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/java/org/gvsig/basicformats/CLRFile.java	(revision 43876)
@@ -0,0 +1,19 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.gvsig.basicformats;
+
+import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
+
+
+public interface CLRFile extends FormatFile {
+
+    public String FILE_EXTENSION = "clr";
+    
+    ColorTable getColorTable();
+
+    void setColorTable(ColorTable colorTable);
+    
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/resources/.directory
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/resources/.directory	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/src/main/resources/.directory	(revision 43876)
@@ -0,0 +1,4 @@
+[Dolphin]
+Timestamp=2018,6,29,17,39,59
+Version=3
+ViewMode=1
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/pom.xml
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/pom.xml	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats/pom.xml	(revision 43876)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.gvsig.basicformats</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+    <description></description>
+
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.desktop.compat.cdc</artifactId>
+        <version>3.0.0-SNAPSHOT</version>
+    </parent>
+            
+    <dependencies>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.tools.lib</artifactId>
+            <scope>compile</scope>  
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+            <type>jar</type>
+        </dependency>
+    </dependencies>
+
+</project>

Property changes on: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.basicformats
___________________________________________________________________
Added: svn:ignore
   + target


Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoveragerStoreParameters.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoveragerStoreParameters.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoveragerStoreParameters.java	(revision 43876)
@@ -1,29 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-package org.gvsig.fmap.dal.raster;
-
-
-public interface CoveragerStoreParameters {
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSelection.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSelection.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSelection.java	(revision 43876)
@@ -1,29 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-
-package org.gvsig.fmap.dal.raster;
-
-public interface CoverageSelection extends CoverageSet {
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSet.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSet.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageSet.java	(revision 43876)
@@ -1,31 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-
-package org.gvsig.fmap.dal.raster;
-
-import org.gvsig.fmap.dal.DataSet;
-
-public interface CoverageSet extends DataSet {
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageStore.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageStore.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/CoverageStore.java	(revision 43876)
@@ -1,31 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-package org.gvsig.fmap.dal.raster;
-
-import org.gvsig.fmap.dal.DataStore;
-
-public interface CoverageStore extends DataStore {
-	
-}
-
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandDescriptor.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandDescriptor.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandDescriptor.java	(revision 43876)
@@ -0,0 +1,124 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+import java.util.Iterator;
+
+import org.gvsig.raster.lib.buffer.api.BufferManager;
+import org.gvsig.raster.lib.buffer.api.NoData;
+import org.gvsig.tools.dispose.Disposable;
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * This class describes the available {@link BandAttributeDescriptor} of a band.
+ *
+ * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
+ *
+ */
+public interface BandDescriptor extends Iterable<BandAttributeDescriptor>, Persistent, Cloneable, Disposable {
+
+    /**
+     * Gets the store that the band belongs.
+     * @return
+     */
+    public RasterStore getStore();
+
+    /**
+     * Gets band of this descriptor.
+     *
+     * @return Band
+     */
+    public int getBand();
+
+    /**
+     * Gets the {@link BandAttributeDescriptor} by index.
+     *
+     * @param index
+     *            Index of {@link BandAttributeDescriptor}
+     * @return BandAttributeDescriptor The {@link BandAttributeDescriptor}
+     *         located at index. If there are not
+     *         {@link BandAttributeDescriptor} at index, null will be returned.
+     */
+    public BandAttributeDescriptor get(int index);
+
+    /**
+     * Gets the {@link BandAttributeDescriptor} by name.
+     *
+     * @param name
+     *            Name of {@link BandAttributeDescriptor}
+     * @return BandAttributeDescriptor The {@link BandAttributeDescriptor}
+     *         located at index. If there are not
+     *         {@link BandAttributeDescriptor} whit the name, null will be returned.
+     */
+    public BandAttributeDescriptor get(String name);
+
+    /**
+     * Number of {@link BandAttributeDescriptor}.
+     *
+     * @return size Number of band attribute descriptor.
+     */
+    public int size();
+
+    /**
+     * @return Returns an iterator over the elements in this list in proper
+     *         sequence.
+     */
+    public Iterator<BandAttributeDescriptor> iterator();
+
+    /**
+     * @return
+     */
+    public NoData getNoData();
+
+    /**
+     * @param noData
+     */
+    public void setNoData(NoData noData);
+
+
+    /**
+     * Gets the dataType.
+     *
+     * The possible data types are defined in {@link BufferManager}.
+     *
+     * The data type of the band can't be changed after being created.
+     *
+     * @return the data type
+     */
+    public int getDataType();
+
+    /**
+     * @return
+     */
+    public String getName();
+
+    /**
+     * @return
+     */
+    public String getDescription();
+
+
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterCache.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterCache.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterCache.java	(revision 43876)
@@ -0,0 +1,34 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.fmap.dal.raster;
+
+import org.gvsig.fmap.dal.DataCache;
+
+
+/**
+ * @author fdiaz
+ *
+ */
+public interface RasterCache extends DataCache{
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStoreNotification.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStoreNotification.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStoreNotification.java	(revision 43876)
@@ -0,0 +1,47 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.fmap.dal.raster;
+
+import org.gvsig.fmap.dal.DataStoreNotification;
+
+/**
+ * Notificacions for RasterStore
+ * @author dmartinezizquierdo
+ *
+ */
+public interface RasterStoreNotification extends DataStoreNotification{
+
+    /** Fired before refreshing the store */
+    public static final String BEFORE_REFRESH = "before_Refresh_DataStore";
+
+    /** Fired before refreshing the store */
+    public static final String AFTER_REFRESH = "after_Refresh_DataStore";
+
+    /** Fired when dataset changed */
+    public static final String DATASET_CHANGED = "dataset_changed";
+
+    /** Fired when store provider changed */
+    public static final String STORE_PROVIDER_CHANGED = "store_provider_changed";
+
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterQuery.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterQuery.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterQuery.java	(revision 43876)
@@ -0,0 +1,89 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+import java.util.List;
+
+import org.gvsig.fmap.dal.DataQuery;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.tools.lang.Cloneable;
+
+
+/**
+ * Dataquery for Rasters
+ * @author dmartinezizquierdo
+ *
+ */
+public interface RasterQuery extends DataQuery, Cloneable {
+
+    /**
+     * Get added band queries to this {@link RasterQuery}
+     *
+     * @return A unmodifiable list with added band queries.
+     */
+    public List<BandQuery> getBands();
+
+    /**
+     * Adds {@link BandQuery} to this raster query
+     *
+     * @param query
+     *            Query to be added
+     */
+    public void addBand(BandQuery query);
+
+    /**
+     * Clears all add band queries
+     */
+    public void clearBands();
+
+    /**
+     * Returns a clip from the raster
+     * @return Envelope
+     */
+    public Envelope getClip();
+
+    /**
+     * Sets the envelope to clip from the raster
+     * @param clip
+     * @return RasterQuery
+     */
+    public RasterQuery setClip(Envelope clip);
+
+    /**
+     * Returns the pixel size requested
+     * @return Envelope
+     */
+    public double getPixelSize();
+
+    /**
+     * Sets the pixelSize to be used in the raster
+     * @param pixelSize
+     * @return RasterQuery
+     */
+    public RasterQuery setPixelSize(double pixelSize);
+
+    public RasterQuery clone() throws CloneNotSupportedException;
+
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandAttributeDescriptor.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandAttributeDescriptor.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandAttributeDescriptor.java	(revision 43876)
@@ -0,0 +1,74 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+import java.util.List;
+
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * This class describes an attribute of band. This attribute is defined by a
+ * name, description and a list with the available values.
+ *
+ * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
+ *
+ */
+public interface BandAttributeDescriptor extends Persistent, Cloneable {
+
+    /**
+     * Gets band of this attribute descriptor
+     *
+     * @return band Attribute descriptor band
+     */
+    public int getBand();
+
+    /**
+     * Name of attribute
+     *
+     * @return Attribute name
+     */
+    public String getName();
+
+    /**
+     * Description of attribute
+     *
+     * @return Attribute description
+     */
+    public String getDescription();
+
+    public Object getValue();
+
+    /**
+     * Available values of this attribute band
+     *
+     * @return values A list with attribute band values
+     */
+    public List<Object> getAvailableValues();
+
+    /**
+     * String units of the levels
+     */
+    public String getUnits();
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandQuery.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandQuery.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/BandQuery.java	(revision 43876)
@@ -0,0 +1,74 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.persistence.Persistent;
+
+/**
+ * Band query to filter raster band values by {@link BandAttributeDescriptor}
+ * values described by the {@link BandDescriptor}.
+ * 
+ * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
+ *
+ */
+public interface BandQuery extends Persistent, Cloneable {
+
+    /**
+     * Band of this query band.
+     * 
+     * @return Band Band of this query band
+     */
+    public int getBand();
+
+    /**
+     * Gets {@link BandDescriptor} of this query.
+     * 
+     * @return descriptor Descriptor of this band
+     */
+    public BandDescriptor getDescriptor();
+
+    /**
+     * Sets filter raster band value. This value has to be accepted by the
+     * {@link BandAttributeDescriptor} with the name received as parameter.
+     * 
+     * @param name
+     *            Name of {@link BandAttributeDescriptor} to check if value is
+     *            accepted by it.
+     * @param value
+     *            Value to apply filter.
+     */
+    public void setValue(String name, Object value);
+
+    /**
+     * Gets the defined filter value of {@link BandAttributeDescriptor} with the
+     * name received as parameter.
+     * 
+     * @param name
+     *            Name of {@link BandAttributeDescriptor}
+     * @return value Value defined
+     */
+    public Object getValue(String name);
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/NewRasterStoreParameters.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/NewRasterStoreParameters.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/NewRasterStoreParameters.java	(revision 43876)
@@ -0,0 +1,23 @@
+package org.gvsig.fmap.dal.raster;
+
+import org.gvsig.fmap.dal.NewDataStoreParameters;
+import org.gvsig.raster.lib.buffer.api.Buffer;
+
+/**
+ * Interface for parameters to create a new raster store
+ *
+ */
+public interface NewRasterStoreParameters extends NewDataStoreParameters {
+
+    /**
+     * Gets the buffer to be created
+     * @return Buffer
+     */
+    public Buffer getBuffer();
+
+    /**
+     * Sets the buffer to be created
+     * @param buffer
+     */
+    public void setBuffer(Buffer buffer);
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterSet.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterSet.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterSet.java	(revision 43876)
@@ -0,0 +1,47 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+import org.gvsig.fmap.dal.DataSet;
+import org.gvsig.raster.lib.buffer.api.Buffer;
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.tools.visitor.Visitor;
+
+/**
+ * Access to raster data
+ * @author dmartinezizquierdo
+ *
+ */
+public interface RasterSet extends Buffer, DataSet {
+
+    /**
+     * Visits raster kernels from a raster
+     * @param visitor
+     * @param firstValueIndex
+     * @throws BaseException
+     */
+    void accept(Visitor visitor, long firstValueIndex) throws BaseException;
+
+    boolean isEmpty();
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStore.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStore.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterStore.java	(revision 43876)
@@ -0,0 +1,191 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.fmap.dal.raster;
+
+import java.util.List;
+
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.DataStoreParameters;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.exception.InitializeException;
+import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.raster.lib.buffer.api.BandInfo;
+import org.gvsig.raster.lib.buffer.api.BufferDimensions;
+import org.gvsig.tools.dynobject.DynObject;
+import org.gvsig.tools.lang.Cloneable;
+import org.gvsig.tools.locator.LocatorException;
+import org.gvsig.tools.observer.Observer;
+
+/**
+ * Store for rasters
+ * @author dmartinezizquierdo
+ *
+ */
+public interface RasterStore extends DataStore, Cloneable{
+
+    /**
+     * May provide a dynamic method to get the legend
+     */
+    final public static String DYNMETHOD_GETLEGEND_NAME = "getLegend";
+
+    /**
+     * May provide a dynamic method to get the Color Interpretation
+     */
+    final public static String DYNMETHOD_GETCOLORINTERPRETATION_NAME = "getColorInterpretation";
+
+    /**
+     * May provide a dynamic method to get the Color Table
+     */
+    final public static String DYNMETHOD_GETCOLORTABLE_NAME = "getColorTable";
+    /**
+     * Returns this store's parameters.
+     *
+     * @return
+     *         {@link DataStoreParameters} containing this store's parameters
+     */
+    public DataStoreParameters getParameters();
+
+    /**
+     * Returns all available data in the store
+     * @return RasterSet
+     * @throws DataException
+     */
+    RasterSet getRasterSet() throws DataException;
+
+    /**
+     * Returns a subset of data taking into account the properties and
+     * restrictions of the RasterQuery.
+     * @param rasterQuery
+     * @param RasterQuery
+     * @return RasterSet
+     * @throws DataException
+     */
+    RasterSet getRasterSet(RasterQuery rasterQuery) throws DataException;
+
+    /**
+     * Returns a new {@link RasterQuery} associated to this store.
+     * @return RasterQuery
+     */
+    RasterQuery createRasterQuery();
+
+    /**
+     * Returns the envelope associated to this store buffer
+     * @return Envelope
+     * @throws DataException
+     * @throws CreateEnvelopeException
+     * @throws LocatorException
+     */
+    Envelope getEnvelope() throws DataException, LocatorException, CreateEnvelopeException;
+
+    /**
+     * Creates a {@link BandQuery} from band received as parameter.
+     *
+     * @param band
+     *            Band to create BandQuery
+     * @return BandQuery
+     */
+    public BandQuery createBandQuery(int band);
+
+    /**
+     * Gets {@link BandsDescriptor} of band received as parameter. If band does
+     * not have {@link BandDescriptor}, this method will return an
+     * empty {@link BandsDescriptor}.
+     *
+     * @param band
+     *            Band to get its {@link BandsDescriptor}
+     * @return BandDescriptor
+     */
+    public BandDescriptor getBandDescriptor(int band);
+
+    /**
+     * Gets number of total bands
+     *
+     * @return Number of bands
+     */
+    public int getBands();
+
+    public List<BandDescriptor> getBandDescriptors();
+
+    /**
+     * @return
+     */
+    public RasterCache getCache();
+
+    /**
+     * Add a band from other store.
+     * If the store is the same of main store will return a IllegalAttributeException
+     *
+     * @param store
+     * @param band
+     * @throws DataException
+     */
+    public void addBand(RasterStore store, int band) throws DataException;
+
+    /**
+     * Add a list of bands from other store.
+     * If the store is the same of main store will return a IllegalAttributeException
+     *
+     * @param store
+     * @param bands
+     * @throws DataException
+     */
+    public void addBands(RasterStore store, List<Integer> bands) throws DataException;
+
+    /**
+     * Remove a band.
+     * If band belongs to main store, will return a IllegalAttributeException
+     *
+     * @param band
+     */
+    public void removeBand(int band);
+
+    /**
+     * Remove any band that does not belong to itself.
+     */
+    public void clearAdditionalBands();
+
+    /**
+     * Return true if the band is own. If the band is from additional store, return false.
+     *
+     * @param band
+     * @return
+     */
+    public boolean isOwnBand(int band);
+
+    /**
+     * Return the buffer dimensions of the complete store.
+     * @return
+     * @throws InitializeException
+     */
+    public BufferDimensions getDimensions() throws InitializeException;
+
+    public boolean isTiled();
+
+    void getRasterSet(Observer observer) throws DataException;
+
+    void getRasterSet(RasterQuery dataQuery, Observer observer) throws DataException;
+
+
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterKernel.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterKernel.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/RasterKernel.java	(revision 43876)
@@ -0,0 +1,63 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+
+package org.gvsig.fmap.dal.raster;
+
+/**
+ * Info given by the raster in a selected row and column
+ * @author dmartinezizquierdo
+ *
+ */
+public interface RasterKernel   {
+
+    /**
+     * Number of bands from the raster
+     * @return int
+     */
+    public int getBandCount();
+
+    /**
+     * Raster row which is being informed
+     * @return row
+     */
+    public int getRow();
+
+    /**
+     * Raster column which is being informed
+     * @return column
+     */
+    public int getColumn();
+
+    /**
+     * Values of the bands in the row and column given
+     * @return Object[]
+     */
+    public Object[] getValue();
+
+    /**
+     * A 3x3 matrix around the row and column given with the values of the bands
+     * @return Object[][][]
+     */
+    public Object[][][] getValues();
+
+}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterQueryCloneException.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterQueryCloneException.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterQueryCloneException.java	(revision 43876)
@@ -0,0 +1,55 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.fmap.dal.raster.exceptions;
+
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+
+
+/**
+ * Exception thrown when an error is produced while cloning a
+ * {@link RasterQuery}.
+ *
+ */
+public class RasterQueryCloneException extends DataException {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -5083976241813494957L;
+
+    private final static String MESSAGE_FORMAT =
+            "Error cloning a RasterQuery";
+    private final static String MESSAGE_KEY = "_RasterQueryCloneException";
+
+    /**
+     * Creates a new {@link RasterQueryCloneException}.
+     *
+     * @param cause
+     *            the original cause of the exception
+     */
+    public RasterQueryCloneException(Throwable cause) {
+        super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
+    }
+
+}
\ No newline at end of file
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterSetInitializeException.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterSetInitializeException.java	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/raster/exceptions/RasterSetInitializeException.java	(revision 43876)
@@ -0,0 +1,54 @@
+/* gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright © 2007-2016 gvSIG Association
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.fmap.dal.raster.exceptions;
+
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+
+
+/**
+ * Exception thrown when an error is produced while creating or initializing a
+ * {@link FeatureSet}.
+ *
+ */
+public class RasterSetInitializeException extends DataException {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -2549348802998322067L;
+    private final static String MESSAGE_FORMAT =
+            "Error initializing a RasterSet";
+    private final static String MESSAGE_KEY = "_RasterSetInitializeException";
+
+    /**
+     * Creates a new {@link RasterSetInitializeException}.
+     *
+     * @param cause
+     *            the original cause of the exception
+     */
+    public RasterSetInitializeException(Throwable cause) {
+        super(MESSAGE_FORMAT, cause, MESSAGE_KEY, serialVersionUID);
+    }
+
+}
\ No newline at end of file
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractCoverageStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractCoverageStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractCoverageStoreProvider.java	(revision 43876)
@@ -1,226 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-package org.gvsig.fmap.dal.raster.spi;
-
-import org.gvsig.fmap.dal.DALLocator;
-import org.gvsig.fmap.dal.DataServerExplorer;
-import org.gvsig.fmap.dal.DataStoreParameters;
-import org.gvsig.fmap.dal.exception.CloseException;
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.exception.OpenException;
-import org.gvsig.fmap.dal.exception.ReadException;
-import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.CoverageSelection;
-import org.gvsig.fmap.dal.resource.spi.ResourceManagerProviderServices;
-import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
-import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
-import org.gvsig.fmap.geom.primitive.Envelope;
-import org.gvsig.tools.dispose.impl.AbstractDisposable;
-import org.gvsig.tools.dynobject.DelegatedDynObject;
-import org.gvsig.tools.dynobject.DynClass;
-import org.gvsig.tools.dynobject.DynObject;
-import org.gvsig.tools.dynobject.DynObject_v2;
-import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
-import org.gvsig.tools.dynobject.exception.DynMethodException;
-import org.gvsig.tools.exception.BaseException;
-
-
-/**
- * @author jmvivo
- *
- */
-public abstract class AbstractCoverageStoreProvider extends AbstractDisposable
-		implements CoverageStoreProvider {
-	protected CoverageStoreProviderServices store;
-	protected DelegatedDynObject metadata;
-	protected DataStoreParameters parameters;
-
-
-	protected AbstractCoverageStoreProvider(DataStoreParameters params,
-			DataStoreProviderServices storeServices, DynObject metadata) {
-		init(params, storeServices, metadata);
-	}
-
-	protected AbstractCoverageStoreProvider(DataStoreParameters params,
-			DataStoreProviderServices storeServices) {
-		init(params, storeServices, null);
-	}
-	
-	protected AbstractCoverageStoreProvider() {
-	}
-	
-	protected void init(DataStoreParameters params,
-			DataStoreProviderServices storeServices, DynObject metadata) {
-		this.store = (CoverageStoreProviderServices) storeServices;
-		this.metadata = (DelegatedDynObject) metadata;
-		this.parameters = params;
-	}
-	
-	/**
-	 * Gets the DataStoreParameters
-	 * @return DataStoreParameters
-	 */
-	public DataStoreParameters getDataStoreParameters() {
-		return parameters;
-	}
-
-	/**
-	 * Set metada container if this not set at construction time and only in one
-	 * time. In other case an Exception will be throw
-	 *
-	 * @param metadata
-	 */
-	protected void setMetadata(DynObject metadata) {
-		if (this.metadata != null) {
-			// FIXME Exception
-			throw new IllegalStateException();
-		}
-		this.metadata = (DelegatedDynObject) metadata;
-	}
-
-	protected ResourceProvider createResource(String type, Object[] params)
-			throws InitializeException {
-		ResourceManagerProviderServices manager = (ResourceManagerProviderServices) DALLocator
-				.getResourceManager();
-		ResourceProvider resource = manager.createAddResource(type, params);
-		return resource;
-	}
-
-	public CoverageStoreProviderServices getStoreServices() {
-		return this.store;
-	}
-
-	public String getClassName() {
-		return this.getClass().getName();
-	}
-
-	public boolean allowWrite() {
-		return false;
-	}
-
-	public CoverageSelection createCoverageSelection() throws DataException {
-		return this.store.createDefaultCoverageSelection();
-	}
-
-	public void refresh() throws OpenException {
-		// Do nothing by default
-	}
-
-	public void close() throws CloseException {
-		// Do nothing by default
-	}
-
-	protected void doDispose() throws BaseException {
-		this.metadata = null;
-		this.store = null;
-		this.parameters = null;
-	}
-
-	public Envelope getEnvelope() throws DataException {
-		return null;
-	}
-
-	public abstract DataServerExplorer getExplorer() throws ReadException,
-			ValidateDataParametersException;
-
-	public void delegate(DynObject dynObject) {
-		if (this.metadata == null) {
-			return;
-		}
-		this.metadata.delegate(dynObject);
-	}
-
-	public DynClass getDynClass() {
-		if (this.metadata == null) {
-			return null;
-		}
-		return this.metadata.getDynClass();
-	}
-
-	public Object getDynValue(String name) throws DynFieldNotFoundException {
-		if (this.metadata == null) {
-			return null;
-		}
-		// TODO this.open??
-		return this.metadata.getDynValue(name);
-	}
-
-	public boolean hasDynValue(String name) {
-		if (this.metadata == null) {
-			return false;
-		}
-		// TODO this.open??
-		return this.metadata.hasDynValue(name);
-	}
-
-    @Override
-    public boolean hasDynMethod(String name) {
-        if( metadata instanceof DynObject_v2 ) {
-            return ((DynObject_v2)this.metadata).hasDynMethod(name);
-        }
-        return false;
-    }
-
-	public void implement(DynClass dynClass) {
-		if (this.metadata == null) {
-			return;
-		}
-		this.metadata.implement(dynClass);
-
-	}
-
-	public Object invokeDynMethod(int code, Object[] args)
-			throws DynMethodException {
-		if (this.metadata == null) {
-			return null;
-		}
-		// TODO this.open??
-		return this.metadata.invokeDynMethod(this, code, args);
-	}
-
-	public Object invokeDynMethod(String name, Object[] args)
-			throws DynMethodException {
-		if (this.metadata == null) {
-			return null;
-		}
-		// TODO this.open??
-		return this.metadata.invokeDynMethod(this, name, args);
-	}
-
-	public void setDynValue(String name, Object value)
-			throws DynFieldNotFoundException {
-		if (this.metadata == null) {
-			return;
-		}
-		// TODO this.open??
-		this.metadata.setDynValue(name, value);
-	}
-
-	public void clear() {
-		if (metadata != null) {
-			metadata.clear();
-		}
-	}
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProviderServices.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProviderServices.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProviderServices.java	(revision 43876)
@@ -1,53 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-
-package org.gvsig.fmap.dal.raster.spi;
-
-import org.gvsig.fmap.dal.DataManager;
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.CoverageSelection;
-import org.gvsig.fmap.dal.raster.CoverageStore;
-import org.gvsig.fmap.dal.resource.Resource;
-import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
-import org.gvsig.tools.undo.command.Command;
-
-public interface CoverageStoreProviderServices extends
-		DataStoreProviderServices, CoverageStore {
-	public void notifyChange(String notification);
-
-	public void notifyChange(String notification, Resource resource);
-
-	public void notifyChange(String notification, Command command);
-
-	public CoverageSelection createDefaultCoverageSelection()
-			throws DataException;
-
-	public DataManager getManager();
-
-	public CoverageStoreProvider getProvider();
-
-	public CoverageStore getCoverageStore();
-
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/CoverageStoreProvider.java	(revision 43876)
@@ -1,36 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-
-package org.gvsig.fmap.dal.raster.spi;
-
-import org.gvsig.fmap.dal.spi.DataStoreProvider;
-
-public interface CoverageStoreProvider extends DataStoreProvider {
-	public String getProviderName();
-
-	public CoverageStoreProviderServices getStoreServices();
-
-	public boolean allowWrite();
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractRasterStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractRasterStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractRasterStoreProvider.java	(revision 43876)
@@ -36,10 +36,10 @@
 import org.gvsig.fmap.dal.exception.CloseException;
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.OpenException;
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandQuery;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.resource.ResourceManager;
 import org.gvsig.fmap.dal.resource.spi.ResourceManagerProviderServices;
 import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterCacheStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterCacheStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterCacheStoreProvider.java	(revision 43876)
@@ -25,9 +25,9 @@
 import org.cresques.cts.IProjection;
 
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterCache;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterCache;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 
 
 /**
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProviderServices.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProviderServices.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProviderServices.java	(revision 43876)
@@ -25,9 +25,9 @@
 import java.util.List;
 
 import org.gvsig.fmap.dal.DataManager;
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.resource.Resource;
 import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
 import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/BandDescriptorServices.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/BandDescriptorServices.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/BandDescriptorServices.java	(revision 43876)
@@ -1,7 +1,7 @@
 package org.gvsig.fmap.dal.raster.spi;
 
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 
 
 public interface BandDescriptorServices extends BandDescriptor {
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractAwtRasterStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractAwtRasterStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/AbstractAwtRasterStoreProvider.java	(revision 43876)
@@ -16,8 +16,8 @@
 import org.gvsig.fmap.dal.DataStoreParameters;
 import org.gvsig.fmap.dal.exception.CloseException;
 import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.api.BandQuery;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.BandQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.raster.spi.AbstractOpenRasterStoreParameters;
 import org.gvsig.fmap.dal.raster.spi.AbstractRasterStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.BandDescriptorServices;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/raster/spi/RasterStoreProvider.java	(revision 43876)
@@ -26,9 +26,9 @@
 
 import org.gvsig.fmap.dal.DataStoreParameters;
 import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.spi.DataStoreProvider;
 import org.gvsig.raster.lib.buffer.api.BandInfo;
 import org.gvsig.raster.lib.buffer.api.Buffer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/.directory
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/.directory	(revision 0)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/.directory	(revision 43876)
@@ -0,0 +1,4 @@
+[Dolphin]
+Timestamp=2018,6,19,10,5,57
+Version=3
+ViewMode=1
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQLibrary.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQLibrary.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQLibrary.java	(revision 43876)
@@ -94,8 +94,7 @@
                     new BSQFileSystemServerProviderFactory(
                             NAME,
                             DESCRIPTION,
-                            FILE_EXTENSIONS,
-                            true
+                            FILE_EXTENSIONS
                     )
             );
         } catch (Exception e) {
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/AbstractFileRasterStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/AbstractFileRasterStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/AbstractFileRasterStoreProvider.java	(revision 43876)
@@ -8,6 +8,10 @@
 import java.util.Map;
 import org.apache.commons.io.FilenameUtils;
 import org.cresques.cts.IProjection;
+import org.gvsig.basicformats.FormatsFile;
+import org.gvsig.basicformats.PRJFile;
+import org.gvsig.basicformats.STXFile;
+import org.gvsig.basicformats.WLDFile;
 import org.gvsig.fmap.dal.DALLocator;
 import org.gvsig.fmap.dal.DataManager;
 import org.gvsig.fmap.dal.DataServerExplorer;
@@ -19,14 +23,9 @@
 import org.gvsig.fmap.dal.exception.OpenException;
 import org.gvsig.fmap.dal.exception.ReadException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.fileutils.CLRFile;
-import org.gvsig.fmap.dal.fileutils.PRJFile;
-import org.gvsig.fmap.dal.fileutils.STXFile;
-import org.gvsig.fmap.dal.fileutils.WLDFile;
-import org.gvsig.fmap.dal.fileutils.spi.UtilsFile;
 import org.gvsig.fmap.dal.raster.OpenRasterStoreParameters;
-import org.gvsig.fmap.dal.raster.api.BandQuery;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.BandQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.raster.spi.AbstractAwtRasterStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.AbstractRasterStoreProvider;
 import org.gvsig.fmap.dal.resource.file.FileResource;
@@ -97,9 +96,9 @@
                 new NullPointerException(this.storeProviderName +" file is null"));
         }
 
-        this.wldFile = UtilsFile.createWLDFile(this.getFile());
-        this.prjFile = UtilsFile.createPRJFile(this.getFile());
-        this.stxFile = UtilsFile.createSTXFile(this.getFile());
+        this.wldFile = FormatsFile.getWLDFile(this.getFile());
+        this.prjFile = FormatsFile.getPRJFile(this.getFile());
+        this.stxFile = FormatsFile.getSTXFile(this.getFile());
         // this.clrFile = UtilsFile.createCLRFile(this.getFile());
 
         this.projection = (IProjection) params.getDynValue(DataStore.METADATA_CRS);
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProvider.java	(revision 43876)
@@ -22,42 +22,44 @@
  */
 package org.gvsig.fmap.dal.file.bsq;
 
+import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.ByteOrder;
 import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.gvsig.basicformats.FormatsFile;
+import org.gvsig.basicformats.HDRFile;
 
 import org.gvsig.fmap.dal.DataServerExplorer;
 import org.gvsig.fmap.dal.NewDataStoreParameters;
 import org.gvsig.fmap.dal.exception.CreateException;
 import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.impl.AbstractFilesystemServerExplorerProvider;
+import org.gvsig.raster.lib.buffer.api.Band;
+import org.gvsig.raster.lib.buffer.api.Buffer;
+import org.gvsig.raster.lib.buffer.api.BufferDimensions;
+import org.gvsig.raster.lib.buffer.api.BufferManager;
 
 public class BSQFileSystemServerProvider extends AbstractFilesystemServerExplorerProvider {
 
     protected String[] fileExtensions;
-    protected boolean canCreate;
 
     public BSQFileSystemServerProvider(
-            String name, 
-            String description, 
+            String name,
+            String description,
             String[] fileExtensions
-        ) {
-        this(name, description, fileExtensions, false);
-    }
-    
-    public BSQFileSystemServerProvider(
-            String name, 
-            String description, 
-            String[] fileExtensions,
-            boolean canCreate
-        ) {
+    ) {
         super(name, description);
         this.fileExtensions = fileExtensions;
-        this.canCreate = canCreate;
     }
-    
+
     @Override
     public boolean canCreate() {
-        return canCreate;
+        return true;
     }
 
     @Override
@@ -67,9 +69,81 @@
 
     @Override
     public void create(NewDataStoreParameters parameters, boolean overwrite) throws CreateException {
-        throw new UnsupportedOperationException();
+        FileOutputStream fos = null;
+        try {
+            Buffer buffer = ((NewRasterStoreParameters) parameters).getBuffer();
+            if (!buffer.areAllBandsOfTheSameType()) {
+                throw new IllegalArgumentException("The BSQ format does not support bands of different types.");
+            }
+            BufferDimensions dimensions = buffer.getDimensions();
+            File file = ((FilesystemStoreParameters) parameters).getFile();
+            fos = new FileOutputStream(file);
+            DataOutputStream dos = new DataOutputStream(fos);
+            HDRFile hdr = FormatsFile.createHDRFile();
+            hdr.setDataType(buffer.getBandTypes()[0]);
+            hdr.setNBands(buffer.getBandCount());
+            hdr.setByteOrder(ByteOrder.nativeOrder());
+            hdr.setDimensions(
+                    dimensions.getRows(),
+                    dimensions.getColumns(),
+                    dimensions.getEnvelope()
+            );
+            for (int nband = 0; nband < buffer.getBandCount(); nband++) {
+                writeBand(dos, buffer.getBand(nband));
+            }
+            hdr.write(file);
+        } catch (Exception ex) {
+            throw new CreateException(this.getName(), ex);
+        } finally {
+            IOUtils.closeQuietly(fos);
+        }
     }
-        
+
+    void writeBand(DataOutputStream dos, Band band) throws IOException {
+        int dataType = band.getDataType();
+        Object rowBuffer = band.createRowBuffer();
+        for (int row = 0; row < band.getRows(); row++) {
+            band.fetchRow(row, rowBuffer);
+            switch (dataType) {
+                case BufferManager.TYPE_BYTE:
+                    byte[] byteBuffer = (byte[]) rowBuffer;
+                    for (int n = 0; n < byteBuffer.length; n++) {
+                        dos.writeByte(byteBuffer[n]);
+                    }
+                    break;
+                case BufferManager.TYPE_SHORT:
+                case BufferManager.TYPE_USHORT:
+                    short[] shortBuffer = (short[]) rowBuffer;
+                    for (int n = 0; n < shortBuffer.length; n++) {
+                        dos.writeShort(shortBuffer[n]);
+                    }
+                    break;
+                case BufferManager.TYPE_INT:
+                    int[] intBuffer = (int[]) rowBuffer;
+                    for (int n = 0; n < intBuffer.length; n++) {
+                        dos.writeInt(intBuffer[n]);
+                    }
+                    break;
+                case BufferManager.TYPE_FLOAT:
+                    float[] floatBuffer = (float[]) rowBuffer;
+                    for (int n = 0; n < floatBuffer.length; n++) {
+                        dos.writeFloat(floatBuffer[n]);
+                    }
+                    break;
+
+                case BufferManager.TYPE_DOUBLE:
+                    double[] doubleBuffer = (double[]) rowBuffer;
+                    for (int n = 0; n < doubleBuffer.length; n++) {
+                        dos.writeDouble(doubleBuffer[n]);
+                    }
+                    break;
+
+                default:
+                    throw new IllegalArgumentException("Data Type " + dataType + " not supported.");
+            }
+        }
+    }
+
     @Override
     public int getMode() {
         return DataServerExplorer.MODE_RASTER;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQStoreProvider.java	(revision 43876)
@@ -24,10 +24,10 @@
 
 import java.io.IOException;
 import java.util.ArrayList;
+import org.gvsig.basicformats.FormatsFile;
+import org.gvsig.basicformats.HDRFile;
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.OpenException;
-import org.gvsig.fmap.dal.fileutils.HDRFile;
-import org.gvsig.fmap.dal.fileutils.spi.UtilsFile;
 import org.gvsig.fmap.dal.raster.OpenRasterStoreParameters;
 import org.gvsig.fmap.dal.raster.spi.BandDescriptorServices;
 import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
@@ -37,14 +37,13 @@
 
     // https://www.qgistutorials.com/en/docs/open_bil_bip_bsq_files.html
     // http://glcf.umd.edu/data/landcover/data.shtml
-    
     protected HDRFile hdrFile;
 
     @SuppressWarnings("OverridableMethodCallInConstructor")
     public BSQStoreProvider(
             String name,
             String description,
-            OpenRasterStoreParameters params, 
+            OpenRasterStoreParameters params,
             DataStoreProviderServices storeServices) throws InitializeException {
         super(
                 name,
@@ -72,20 +71,21 @@
         this.autoOpen();
         return this.hdrFile.getNcols();
     }
-    
+
     @Override
     protected void doDispose() throws BaseException {
         super.doDispose();
         this.hdrFile = null;
     }
-    
+
     @Override
     public void open() throws OpenException {
-        if ( this.hdrFile!=null ) {
+        if (this.hdrFile != null) {
             return;
         }
-        HDRFile theHDRFile = UtilsFile.createHDRFile(this.getFile());
-        if (!theHDRFile.isValid()) {
+        HDRFile theHDRFile;
+        theHDRFile = FormatsFile.getHDRFile(this.getFile());
+        if (theHDRFile == null || !theHDRFile.isValid()) {
             throw new OpenException(this.getProviderName(), null);
         }
         this.hdrFile = theHDRFile;
@@ -104,18 +104,19 @@
                 bandDescriptor.setDataType(dataType);
                 bandDescriptor.setName(String.valueOf(nband));
                 try {
-                    bandDescriptor.setDescription(this.getName()+ "- band "+nband);
+                    bandDescriptor.setDescription(this.getName() + "- band " + nband);
                 } catch (Exception e) {
-                    bandDescriptor.setDescription("band "+nband);
+                    bandDescriptor.setDescription("band " + nband);
                 }
                 bandDescriptor.add("X size", this.hdrFile.getNcols());
-                bandDescriptor.add("Y size", this.hdrFile.getNrows());                
+                bandDescriptor.add("Y size", this.hdrFile.getNrows());
                 BSQBandPageManager pageManager = new BSQBandPageManager(
                         getFile(),
                         nband * this.hdrFile.getBandSize(),
                         this.hdrFile.getNrows(),
                         this.hdrFile.getNcols(),
-                        dataType
+                        dataType,
+                        this.hdrFile.getByteorder()
                 );
                 this.pageManagers.add(pageManager);
             }
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQBandPageManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQBandPageManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQBandPageManager.java	(revision 43876)
@@ -6,6 +6,7 @@
 import java.io.RandomAccessFile;
 import java.nio.Buffer;
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.DoubleBuffer;
 import java.nio.FloatBuffer;
 import java.nio.IntBuffer;
@@ -26,6 +27,7 @@
     private final int dataType;
     private final File file;
     private final long startpos;
+    private final ByteOrder byteOrder;
 
     /**
      * @param file
@@ -33,14 +35,16 @@
      * @param rows
      * @param columns
      * @param dataType
+     * @param byteOrder
      * @throws IOException
      */
-    public BSQBandPageManager(File file, long startpos, int rows, int columns, int dataType) throws IOException {
+    public BSQBandPageManager(File file, long startpos, int rows, int columns, int dataType, ByteOrder  byteOrder) throws IOException {
         this.rows = rows;
         this.columns = columns;
         this.dataType = dataType;
         this.file = file;
         this.startpos = startpos;
+        this.byteOrder = byteOrder;
 
         this.raf = new RandomAccessFile(this.file, "r");
         // BufferManager bufferManager = BufferLocator.getBufferManager();
@@ -55,37 +59,39 @@
         raf.seek(pos);
         BufferManager bufferManager = BufferLocator.getBufferManager();
         int dataTypeSize = bufferManager.getDataTypeSize(dataType);
-        byte[] byteArray = new byte[buffer.capacity() * dataTypeSize];
-        raf.read(byteArray);
+        int elements = buffer.capacity();
+        
+        ByteBuffer byteBuffer = ByteBuffer.allocate(elements * dataTypeSize);
+        byteBuffer.order(this.byteOrder);
+        raf.read(byteBuffer.array());
+
         buffer.rewind();
+        byteBuffer.rewind();
 
         switch (dataType) {
         case BufferManager.TYPE_BYTE:
-            //FIXME: Elegir cual de las dos siguientes maneras de hacerlo es la idónea
-
-            ((ByteBuffer) buffer).put(byteArray, 0, byteArray.length);
-//            System.arraycopy(byteArray, 0, ((ByteBuffer) buffer).array(), 0, byteArray.length);
+            ((ByteBuffer) buffer).put(byteBuffer);
             break;
         case BufferManager.TYPE_SHORT:
         case BufferManager.TYPE_USHORT:
-            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
-                ((ShortBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
+            for( int element =0 ; element<elements ; element++ ) {
+                ((ShortBuffer) buffer).put(byteBuffer.getShort());
             }
             break;
         case BufferManager.TYPE_INT:
-            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
-                ((IntBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
+            for( int element =0 ; element<elements ; element++ ) {
+                ((IntBuffer) buffer).put(byteBuffer.getInt());
             }
             break;
         case BufferManager.TYPE_FLOAT:
-            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
-                ((FloatBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
+            for( int element=0 ; element<elements ; element++ ) {
+                ((FloatBuffer) buffer).put(byteBuffer.getFloat());
             }
             break;
 
         case BufferManager.TYPE_DOUBLE:
-            for( int cell =0 ; cell<byteArray.length ; cell++ ) {
-                ((DoubleBuffer) buffer).put((int)(cell/dataTypeSize), byteArray[cell]);
+            for( int element=0 ; element<elements ; element++ ) {
+                ((DoubleBuffer) buffer).put(byteBuffer.getDouble());
             }
             break;
 
@@ -97,37 +103,6 @@
     @Override
     public void save(Buffer buffer, int row, int rows, int dataType) throws IOException {
 
-        long pos = row*this.columns + this.startpos;
-        raf.seek(pos);
-
-        BufferManager bufferManager = BufferLocator.getBufferManager();
-        ByteBuffer byteBuffer = ByteBuffer.allocate(buffer.capacity() * bufferManager.getDataTypeSize(dataType));
-        switch (dataType) {
-        case BufferManager.TYPE_BYTE:
-            byteBuffer.put(((ByteBuffer)buffer).array());
-            break;
-        case BufferManager.TYPE_SHORT:
-        case BufferManager.TYPE_USHORT:
-            ShortBuffer byteAsShortBuffer = byteBuffer.asShortBuffer();
-            byteAsShortBuffer.put((short[]) buffer.array());
-            break;
-        case BufferManager.TYPE_INT:
-            IntBuffer byteAsIntBuffer = byteBuffer.asIntBuffer();
-            byteAsIntBuffer.put((int[]) buffer.array());
-            break;
-        case BufferManager.TYPE_FLOAT:
-            FloatBuffer byteAsFloatBuffer = byteBuffer.asFloatBuffer();
-            byteAsFloatBuffer.put((float[]) buffer.array());
-            break;
-        case BufferManager.TYPE_DOUBLE:
-            DoubleBuffer byteAsDoubleBuffer = byteBuffer.asDoubleBuffer();
-            byteAsDoubleBuffer.put((double[]) buffer.array());
-            break;
-        default:
-            throw new IllegalArgumentException("Data Type " + dataType + " not supported.");
-        }
-        raf.write(byteBuffer.array());
-
     }
 
     @Override
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProviderFactory.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProviderFactory.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/src/main/java/org/gvsig/fmap/dal/file/bsq/BSQFileSystemServerProviderFactory.java	(revision 43876)
@@ -32,25 +32,14 @@
 public class BSQFileSystemServerProviderFactory extends AbstractFilesystemServerExplorerProviderFactory {
 
     protected String[] fileExtensions;
-    protected boolean canCreate;
 
     public BSQFileSystemServerProviderFactory(
             String name, 
             String description, 
             String[] fileExtensions
         ) {
-        this(name, description, fileExtensions, false);
-    }
-
-    public BSQFileSystemServerProviderFactory(
-            String name, 
-            String description, 
-            String[] fileExtensions,
-            boolean canCreate
-        ) {
         super(name, description);
         this.fileExtensions = fileExtensions;
-        this.canCreate = canCreate;
     }
 
     @Override
@@ -58,8 +47,7 @@
         return new BSQFileSystemServerProvider(
                 this.getName(),
                 this.getDescription(),
-                this.fileExtensions,
-                this.canCreate
+                this.fileExtensions
         );
     }
 
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/pom.xml
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/pom.xml	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.bsq/pom.xml	(revision 43876)
@@ -31,5 +31,10 @@
             <artifactId>org.gvsig.fmap.mapcontext.api</artifactId>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.basicformats</artifactId>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/ImageIOFileSystemServerProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/ImageIOFileSystemServerProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/ImageIOFileSystemServerProvider.java	(revision 43876)
@@ -42,7 +42,7 @@
 import org.gvsig.fmap.dal.NewDataStoreParameters;
 import org.gvsig.fmap.dal.exception.CreateException;
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.impl.AbstractFilesystemServerExplorerProvider;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderServices;

Property changes on: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio
___________________________________________________________________
Added: svn:ignore
   + .directory


Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/DefaultCoverageStoreFactory.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/DefaultCoverageStoreFactory.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/DefaultCoverageStoreFactory.java	(revision 43876)
@@ -1,43 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-package org.gvsig.fmap.dal.raster;
-
-import org.gvsig.fmap.dal.DataParameters;
-import org.gvsig.fmap.dal.DataStore;
-import org.gvsig.fmap.dal.DataStoreFactory;
-import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.impl.DefaultCoverageStore;
-
-public class DefaultCoverageStoreFactory implements DataStoreFactory {
-
-    public void setParameters(DataParameters parameters) {
-        // Do Nothing
-        
-    }
-
-    public DataStore createStore() throws InitializeException {
-        return new DefaultCoverageStore();
-    }
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStoreNotification.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStoreNotification.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStoreNotification.java	(revision 43876)
@@ -1,54 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-
-package org.gvsig.fmap.dal.raster.impl;
-
-import org.gvsig.fmap.dal.DataStore;
-import org.gvsig.fmap.dal.DataStoreNotification;
-import org.gvsig.tools.undo.command.Command;
-
-public class DefaultCoverageStoreNotification implements DataStoreNotification {
-
-	public DefaultCoverageStoreNotification(
-			DefaultCoverageStore defaultCoverageStore, String notification,
-			Command command) {
-		// TODO Auto-generated constructor stub
-	}
-
-	public DefaultCoverageStoreNotification(
-			DefaultCoverageStore defaultCoverageStore, String notification) {
-		// TODO Auto-generated constructor stub
-	}
-
-	public DataStore getSource() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String getType() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStore.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStore.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultCoverageStore.java	(revision 43876)
@@ -1,532 +0,0 @@
-/**
- * gvSIG. Desktop Geographic Information System.
- *
- * Copyright (C) 2007-2013 gvSIG Association.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA  02110-1301, USA.
- *
- * For any additional information, do not hesitate to contact us
- * at info AT gvsig.com, or visit our website www.gvsig.com.
- */
-package org.gvsig.fmap.dal.raster.impl;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.gvsig.fmap.dal.DataCache;
-import org.gvsig.fmap.dal.DataManager;
-import org.gvsig.fmap.dal.DataQuery;
-import org.gvsig.fmap.dal.DataServerExplorer;
-import org.gvsig.fmap.dal.DataSet;
-import org.gvsig.fmap.dal.DataStore;
-import org.gvsig.fmap.dal.DataStoreNotification;
-import org.gvsig.fmap.dal.DataStoreParameters;
-import org.gvsig.fmap.dal.DataStoreProviderFactory;
-import org.gvsig.fmap.dal.exception.CloseException;
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.exception.OpenException;
-import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
-import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStoreNotification;
-import org.gvsig.fmap.dal.impl.DefaultDataManager;
-import org.gvsig.fmap.dal.raster.CoverageSelection;
-import org.gvsig.fmap.dal.raster.CoverageStore;
-import org.gvsig.fmap.dal.raster.spi.CoverageStoreProvider;
-import org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices;
-import org.gvsig.fmap.dal.resource.Resource;
-import org.gvsig.fmap.dal.spi.DataStoreInitializer;
-import org.gvsig.fmap.dal.spi.DataStoreProvider;
-import org.gvsig.metadata.MetadataLocator;
-import org.gvsig.timesupport.Interval;
-import org.gvsig.timesupport.RelativeInterval;
-import org.gvsig.tools.ToolsLocator;
-import org.gvsig.tools.dispose.impl.AbstractDisposable;
-import org.gvsig.tools.dynobject.DelegatedDynObject;
-import org.gvsig.tools.dynobject.DynClass;
-import org.gvsig.tools.dynobject.DynObject;
-import org.gvsig.tools.dynobject.DynObjectManager;
-import org.gvsig.tools.dynobject.DynObject_v2;
-import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
-import org.gvsig.tools.dynobject.exception.DynMethodException;
-import org.gvsig.tools.exception.BaseException;
-import org.gvsig.tools.observer.Observer;
-import org.gvsig.tools.observer.impl.DelegateWeakReferencingObservable;
-import org.gvsig.tools.persistence.PersistentState;
-import org.gvsig.tools.persistence.exception.PersistenceException;
-import org.gvsig.tools.undo.command.Command;
-import org.gvsig.tools.visitor.Visitor;
-
-/**
- * @author jmvivo
- *
- */
-public class DefaultCoverageStore extends AbstractDisposable implements
-		CoverageStore, CoverageStoreProviderServices, DataStoreInitializer {
-
-//	final static private Logger logger = LoggerFactory
-//			.getLogger(DefaultFeatureStore.class);
-
-	private DataStoreParameters parameters = null;
-	private CoverageSelection selection;
-
-//	private long versionOfUpdate = 0;
-
-	private DefaultDataManager dataManager = null;
-
-	private CoverageStoreProvider provider = null;
-
-	private DelegatedDynObject metadata;
-
-	private DelegateWeakReferencingObservable delegateObservable = new DelegateWeakReferencingObservable(
-			this);
-
-	public DefaultCoverageStore() {
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see
-	 * org.gvsig.fmap.dal.impl.DataStoreImplementation#intializePhase1(org.gvsig
-	 * .fmap.dal.impl.DefaultDataManager,
-	 * org.gvsig.fmap.dal.DataStoreParameters)
-	 */
-	public void intializePhase1(DataManager dataManager,
-			DataStoreParameters parameters) throws InitializeException {
-		DynObjectManager dynManager = ToolsLocator.getDynObjectManager();
-
-		this.metadata = (DelegatedDynObject) dynManager
-				.createDynObject(
-						MetadataLocator.getMetadataManager().getDefinition(DataStore.SPATIAL_METADATA_DEFINITION_NAME)
-				);
-		this.dataManager = (DefaultDataManager)dataManager;
-		this.parameters = parameters;
-
-	}
-
-
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see
-	 * org.gvsig.fmap.dal.impl.DataStoreImplementation#intializePhase2(org.gvsig
-	 * .fmap.dal.spi.DataStoreProvider)
-	 */
-	public void intializePhase2(DataStoreProvider provider)
-			throws InitializeException {
-
-		this.provider = (CoverageStoreProvider) provider;
-		this.delegate((DynObject) provider);
-
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#createSelection()
-	 */
-	public DataSet createSelection() throws DataException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getChildren()
-	 */
-	public Iterator getChildren() {
-		return this.provider.getChilds();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getDataSet()
-	 */
-	public DataSet getDataSet() throws DataException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.fmap.dal.DataQuery)
-	 */
-	public DataSet getDataSet(DataQuery dataQuery) throws DataException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void accept(Visitor visitor) throws BaseException {
-		// TODO Auto-generated method stub
-	}
-
-	public void accept(Visitor visitor, DataQuery dataQuery)
-			throws BaseException {
-		// TODO Auto-generated method stub
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.tools.observer.Observer)
-	 */
-	public void getDataSet(Observer observer) throws DataException {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.fmap.dal.DataQuery, org.gvsig.tools.observer.Observer)
-	 */
-	public void getDataSet(DataQuery dataQuery, Observer observer)
-			throws DataException {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getExplorer()
-	 */
-	public DataServerExplorer getExplorer() throws DataException,
-			ValidateDataParametersException {
-		return provider.getExplorer();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getParameters()
-	 */
-	public DataStoreParameters getParameters() {
-		return this.parameters;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#getSelection()
-	 */
-	public DataSet getSelection() throws DataException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#refresh()
-	 */
-	public void refresh() throws DataException {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.DataStore#setSelection(org.gvsig.fmap.dal.DataSet)
-	 */
-	public void setSelection(DataSet selection) throws DataException {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.ComplexObservable#beginComplexNotification()
-	 */
-	public void beginComplexNotification() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.ComplexObservable#disableNotifications()
-	 */
-	public void disableNotifications() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.ComplexObservable#enableNotifications()
-	 */
-	public void enableNotifications() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.ComplexObservable#endComplexNotification()
-	 */
-	public void endComplexNotification() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.Observable#addObserver(org.gvsig.tools.observer.Observer)
-	 */
-	public void addObserver(Observer o) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.Observable#deleteObserver(org.gvsig.tools.observer.Observer)
-	 */
-	public void deleteObserver(Observer o) {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.observer.Observable#deleteObservers()
-	 */
-	public void deleteObservers() {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.persistence.Persistent#getState()
-	 */
-	public PersistentState getState() throws PersistenceException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.persistence.Persistent#loadState(org.gvsig.tools.persistence.PersistentState)
-	 */
-	public void saveToState(PersistentState state) throws PersistenceException {
-		// TODO Auto-generated method stub
-
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.tools.persistence.Persistent#setState(org.gvsig.tools.persistence.PersistentState)
-	 */
-	public void loadFromState(PersistentState state) throws PersistenceException {
-		// TODO Auto-generated method stub
-
-	}
-
-	//
-	// ====================================================================
-	// Metadata related methods
-	//
-
-	public Object getMetadataID() {
-		return this.provider.getSourceId();
-	}
-
-	public void delegate(DynObject dynObject) {
-		this.metadata.delegate(dynObject);
-	}
-
-	public DynClass getDynClass() {
-		return this.metadata.getDynClass();
-	}
-
-	public Object getDynValue(String name) throws DynFieldNotFoundException {
-		return this.metadata.getDynValue(name);
-	}
-
-	public boolean hasDynValue(String name) {
-		return this.metadata.hasDynValue(name);
-	}
-
-    @Override
-    public boolean hasDynMethod(String name) {
-        return ((DynObject_v2)this.metadata).hasDynMethod(name);
-    }
-
-	public void implement(DynClass dynClass) {
-		this.metadata.implement(dynClass);
-	}
-
-	public Object invokeDynMethod(String name, Object[] args)
-			throws DynMethodException {
-		return this.metadata.invokeDynMethod(this, name, args);
-	}
-
-	public Object invokeDynMethod(int code, Object[] args)
-			throws DynMethodException {
-		return this.metadata.invokeDynMethod(this, code, args);
-	}
-
-	public void setDynValue(String name, Object value)
-			throws DynFieldNotFoundException {
-		this.metadata.setDynValue(name, value);
-
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.gvsig.metadata.Metadata#getMetadataChildren()
-	 */
-	public Set getMetadataChildren() {
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see org.gvsig.metadata.Metadata#getMetadataName()
-	 */
-	public String getMetadataName() {
-		return this.provider.getProviderName();
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#createDefaultCoverageSelection()
-	 */
-	public CoverageSelection createDefaultCoverageSelection()
-			throws DataException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getManager()
-	 */
-	public DataManager getManager() {
-		return this.dataManager;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getProvider()
-	 */
-	public CoverageStoreProvider getProvider() {
-		return this.provider;
-	}
-
-	public void notifyChange(String notification) {
-		delegateObservable
-				.notifyObservers(new DefaultCoverageStoreNotification(
-				this, notification));
-
-	}
-
-
-	public void notifyChange(String notification, Command command) {
-		delegateObservable
-				.notifyObservers(new DefaultCoverageStoreNotification(
-				this, notification, command));
-	}
-
-
-	/*
-	 * (non-Javadoc)
-	 *
-	 * @see
-	 * org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices#notifyChange
-	 * (java.lang.String, org.gvsig.fmap.dal.resource.Resource)
-	 */
-	public void notifyChange(String notification, Resource resource) {
-		delegateObservable.notifyObservers(new DefaultFeatureStoreNotification(
-				this, FeatureStoreNotification.RESOURCE_CHANGED));
-	}
-
-	public void open() throws OpenException {
-		// TODO: Se puede hacer un open estando en edicion ?
-		this.notifyChange(DataStoreNotification.BEFORE_OPEN);
-		this.provider.open();
-		this.notifyChange(DataStoreNotification.AFTER_OPEN);
-	}
-
-	public void close() throws CloseException {
-		// TODO: Se puede hacer un close estando en edicion ?
-		this.notifyChange(DataStoreNotification.BEFORE_CLOSE);
-		this.provider.close();
-		this.notifyChange(DataStoreNotification.AFTER_CLOSE);
-	}
-
-	protected void doDispose() throws BaseException {
-		this.notifyChange(DataStoreNotification.BEFORE_DISPOSE);
-		this.provider.dispose();
-		if (this.selection != null) {
-			this.selection.dispose();
-			this.selection = null;
-		}
-
-		this.parameters = null;
-		this.notifyChange(DataStoreNotification.AFTER_DISPOSE);
-		this.delegateObservable.deleteObservers();
-		this.delegateObservable = null;
-	}
-
-	public boolean allowWrite() {
-		return this.provider.allowWrite();
-	}
-
-	public DataQuery createQuery() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public DataStore getStore() {
-		return this;
-	}
-
-	public CoverageStore getCoverageStore() {
-		return this;
-	}
-
-	public void clear() {
-		if (metadata != null) {
-			metadata.clear();
-		}
-	}
-
-	public String getProviderName() {
-		return this.provider.getProviderName();
-	}
-
-	public String getName() {
-		return this.provider.getName();
-	}
-
-	public String getFullName() {
-		return this.provider.getFullName();
-	}
-
-    public Interval getInterval() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public Collection getTimes() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    public Collection getTimes(Interval interval) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public void useCache(String providerName, DynObject parameters) throws DataException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public DataStoreProviderFactory getProviderFactory() {
-        DataStoreProviderFactory factory = dataManager.getStoreProviderFactory(parameters.getDataStoreName());
-        return factory;
-    }
-
-    @Override
-    public DataCache getCache() {
-        // TODO Auto-generated method stub
-        return null;
-    }
-}
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandAttributeDescriptor.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandAttributeDescriptor.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandAttributeDescriptor.java	(revision 43876)
@@ -27,7 +27,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
 import org.gvsig.tools.ToolsLocator;
 import org.gvsig.tools.dynobject.DynStruct;
 import org.gvsig.tools.lang.Cloneable;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandQuery.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandQuery.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandQuery.java	(revision 43876)
@@ -26,8 +26,8 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandQuery;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandQuery;
 import org.gvsig.raster.lib.buffer.api.BufferLocator;
 import org.gvsig.tools.ToolsLocator;
 import org.gvsig.tools.dynobject.DynStruct;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterSet.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterSet.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterSet.java	(revision 43876)
@@ -32,10 +32,10 @@
 
 import org.gvsig.fmap.dal.DataStore;
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.dal.raster.api.exceptions.RasterSetInitializeException;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
+import org.gvsig.fmap.dal.raster.exceptions.RasterSetInitializeException;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.geom.Geometry.SUBTYPES;
 import org.gvsig.fmap.geom.GeometryLocator;
@@ -155,6 +155,14 @@
     }
 
     @Override
+    public boolean areAllBandsOfTheSameType() {
+        if (this.buffer != null) {
+            return this.buffer.areAllBandsOfTheSameType();
+        }
+        return true;
+    }
+
+    @Override
     public Envelope getEnvelope() throws LocatorException, CreateEnvelopeException {
         if (this.buffer != null) {
             return this.buffer.getEnvelope();
@@ -388,6 +396,7 @@
         }
     }
 
+    @Override
     public final void dispose() {
         synchronized (lock) {
             // Check if we have already been disposed, and don't do it again
@@ -407,6 +416,7 @@
     /**
      * Internal implementation for the {@link #dispose()} method.
      *
+     * @throws org.gvsig.tools.exception.BaseException
      * @see #dispose()
      */
     public void doDispose() throws BaseException {
@@ -422,6 +432,7 @@
         super.finalize();
     }
 
+    @Override
     public BufferedImage getBufferedImage() {
         if (this.buffer != null) {
             return buffer.getBufferedImage();
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStore.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStore.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStore.java	(revision 43876)
@@ -53,15 +53,15 @@
 import org.gvsig.fmap.dal.feature.exception.PersistenceStoreAlreadyLoadedException;
 import org.gvsig.fmap.dal.impl.DefaultDataManager;
 import org.gvsig.fmap.dal.raster.RasterStoreProviderFactory;
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandQuery;
-import org.gvsig.fmap.dal.raster.api.RasterCache;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.dal.raster.api.RasterStoreNotification;
-import org.gvsig.fmap.dal.raster.api.exceptions.RasterQueryCloneException;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandQuery;
+import org.gvsig.fmap.dal.raster.RasterCache;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStoreNotification;
+import org.gvsig.fmap.dal.raster.exceptions.RasterQueryCloneException;
 import org.gvsig.fmap.dal.raster.impl.exceptions.AddingBandsException;
 import org.gvsig.fmap.dal.raster.spi.RasterCacheStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterKernel.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterKernel.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterKernel.java	(revision 43876)
@@ -22,7 +22,7 @@
  */
 package org.gvsig.fmap.dal.raster.impl;
 
-import org.gvsig.fmap.dal.raster.api.RasterKernel;
+import org.gvsig.fmap.dal.raster.RasterKernel;
 import org.gvsig.raster.lib.buffer.api.Buffer;
 
 /**
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandDescriptor.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandDescriptor.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultBandDescriptor.java	(revision 43876)
@@ -27,9 +27,9 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.raster.spi.BandDescriptorServices;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProviderServices;
 import org.gvsig.raster.lib.buffer.api.NoData;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStoreNotification.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStoreNotification.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterStoreNotification.java	(revision 43876)
@@ -23,7 +23,7 @@
 package org.gvsig.fmap.dal.raster.impl;
 
 import org.gvsig.fmap.dal.DataStore;
-import org.gvsig.fmap.dal.raster.api.RasterStoreNotification;
+import org.gvsig.fmap.dal.raster.RasterStoreNotification;
 
 /**
  * Implements RasterNofication
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterQuery.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterQuery.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterQuery.java	(revision 43876)
@@ -30,8 +30,8 @@
 import java.util.Map.Entry;
 import java.util.Set;
 
-import org.gvsig.fmap.dal.raster.api.BandQuery;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.BandQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.geom.primitive.Envelope;
 import org.gvsig.tools.ToolsLocator;
 import org.gvsig.tools.dynobject.DynStruct;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultDataManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultDataManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultDataManager.java	(revision 43876)
@@ -52,7 +52,6 @@
 import org.gvsig.fmap.dal.feature.spi.index.FeatureIndexProviderServices;
 import org.gvsig.fmap.dal.raster.impl.RasterStoreFactory;
 import org.gvsig.fmap.dal.raster.impl.RasterStoreOldFactory;
-import org.gvsig.fmap.dal.raster.spi.CoverageStoreProvider;
 import org.gvsig.fmap.dal.spi.DALSPILocator;
 import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
 import org.gvsig.fmap.dal.spi.DataStoreProvider;
@@ -203,13 +202,6 @@
                     + " must implement org.gvsig.fmap.dal.DataStoreParameters");
         }
 
-        if (CoverageStoreProvider.class.isAssignableFrom(storeProviderClass)) {
-            // Envuelve al proveedor en una factoria por defecto.
-            this.registerStoreProviderFactory(new DataStoreProviderToCoverageProviderFactoryWrapper(
-                    name, "", storeProviderClass, parametersClass));
-            return;
-        }
-
         if (FeatureStoreProvider.class.isAssignableFrom(storeProviderClass)) {
             // Envuelve al proveedor en una factoria por defecto.
             this.registerStoreProviderFactory(new DataStoreProviderToFeatureStoreProviderFactoryWrapper(
@@ -837,10 +829,8 @@
                 throw new ProviderNotRegisteredException(name);
             }
             return featureCacheProviderFactory.createCacheProvider(parameters);
-        } catch (InstantiationException e) {
+        } catch (InstantiationException | IllegalAccessException e) {
             throw new InitializeException(e);
-        } catch (IllegalAccessException e) {
-            throw new InitializeException(e);
         }
     }
 
@@ -873,10 +863,8 @@
                 throw new ProviderNotRegisteredException(name);
             }
             return featureCacheProviderFactory.createParameters();
-        } catch (InstantiationException e) {
+        } catch (InstantiationException | IllegalAccessException e) {
             throw new InitializeException(e);
-        } catch (IllegalAccessException e) {
-            throw new InitializeException(e);
         }
     }
 
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/FileTileCacheStructImage.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/FileTileCacheStructImage.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/FileTileCacheStructImage.java	(revision 43876)
@@ -64,10 +64,10 @@
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.ServerExplorerAddException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerManager;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderFactory;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/TileCacheStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/TileCacheStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/TileCacheStoreProvider.java	(revision 43876)
@@ -37,7 +37,7 @@
 import org.gvsig.fmap.dal.FileHelper;
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProviderServices;
 import org.gvsig.fmap.dal.resource.file.FileResource;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStoreProvider.java	(revision 43876)
@@ -41,7 +41,7 @@
 import org.gvsig.fmap.dal.exception.OpenException;
 import org.gvsig.fmap.dal.exception.ReadException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.raster.spi.AbstractRasterStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.RasterCacheStoreProvider;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStructImage.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStructImage.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/AbstractTileCacheStructImage.java	(revision 43876)
@@ -10,8 +10,8 @@
 
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
 import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileStructImage.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileStructImage.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileStructImage.java	(revision 43876)
@@ -32,7 +32,7 @@
 
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterQuery;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
 import org.gvsig.fmap.geom.Geometry.SUBTYPES;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileCacheStoreProvider.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileCacheStoreProvider.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.tilecache/org.gvsig.fmap.dal.tilecache.raster/src/main/java/org/gvsig/raster/tilecache/provider/MemoryTileCacheStoreProvider.java	(revision 43876)
@@ -30,8 +30,8 @@
 import org.gvsig.fmap.dal.FileHelper;
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.raster.spi.RasterStoreProvider;
 import org.gvsig.fmap.dal.resource.spi.ResourceConsumer;
 import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/raster/lib/legend/api/RasterLegend.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/raster/lib/legend/api/RasterLegend.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/raster/lib/legend/api/RasterLegend.java	(revision 43876)
@@ -4,8 +4,8 @@
 import java.util.List;
 
 import org.gvsig.fmap.dal.DataStore;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.ViewPort;
 import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
 import org.gvsig.raster.lib.buffer.api.Buffer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/MapContextManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/MapContextManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/MapContextManager.java	(revision 43876)
@@ -36,7 +36,7 @@
 
 import org.gvsig.fmap.dal.DataStore;
 import org.gvsig.fmap.dal.DataStoreParameters;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.layers.LayerInformationBuilder;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/raster/api/RasterLayer.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/raster/api/RasterLayer.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/raster/api/RasterLayer.java	(revision 43876)
@@ -22,8 +22,8 @@
  */
 package org.gvsig.fmap.mapcontext.raster.api;
 
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.exceptions.LegendLayerException;
 import org.gvsig.fmap.mapcontext.layers.operations.InfoByPoint;
 import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/impl/DefaultMapContextManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/impl/DefaultMapContextManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.api/src/main/java/org/gvsig/fmap/mapcontext/impl/DefaultMapContextManager.java	(revision 43876)
@@ -48,8 +48,8 @@
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.feature.FeatureStore;
 import org.gvsig.fmap.dal.feature.FeatureType;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.MapContext;
 import org.gvsig.fmap.mapcontext.MapContextDrawer;
 import org.gvsig.fmap.mapcontext.MapContextException;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/MapContextRasterLibrary.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/MapContextRasterLibrary.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/MapContextRasterLibrary.java	(revision 43876)
@@ -27,7 +27,7 @@
 
 import org.gvsig.compat.CompatLibrary;
 import org.gvsig.fmap.dal.DALLibrary;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.MapContextLibrary;
 import org.gvsig.fmap.mapcontext.MapContextLocator;
 import org.gvsig.fmap.mapcontext.MapContextManager;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayer.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayer.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayer.java	(revision 43876)
@@ -43,12 +43,12 @@
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.ReadException;
-import org.gvsig.fmap.dal.raster.api.BandAttributeDescriptor;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.dal.raster.api.RasterStoreNotification;
+import org.gvsig.fmap.dal.raster.BandAttributeDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStoreNotification;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
 import org.gvsig.fmap.geom.Geometry.SUBTYPES;
 import org.gvsig.fmap.geom.GeometryLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.mapcontext/org.gvsig.fmap.mapcontext.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java	(revision 43876)
@@ -9,7 +9,7 @@
 import java.util.List;
 
 import org.cresques.cts.ICoordTrans;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/pom.xml
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/pom.xml	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.compat.cdc/pom.xml	(revision 43876)
@@ -26,6 +26,7 @@
         <module>org.gvsig.fmap.dal</module>
         <module>org.gvsig.fmap.mapcontext</module>
         <module>org.gvsig.metadata.basic</module>
+        <module>org.gvsig.basicformats</module>
     </modules>
 
     <description>This project group the gvSIG libraries that haven java 1.4 compatibility.</description>
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ClipExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ClipExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ClipExtension.java	(revision 43876)
@@ -17,7 +17,7 @@
 import org.gvsig.app.ApplicationManager;
 import org.gvsig.app.project.documents.view.ViewDocument;
 import org.gvsig.app.project.documents.view.gui.IView;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.layers.FLayers;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ZoomToRasterLayerResolutionExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ZoomToRasterLayerResolutionExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ZoomToRasterLayerResolutionExtension.java	(revision 43876)
@@ -21,7 +21,7 @@
 import org.gvsig.app.project.documents.view.gui.IView;
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.ReadException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
 import org.gvsig.fmap.geom.Geometry.SUBTYPES;
 import org.gvsig.fmap.geom.GeometryLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/SaveRasterLayerExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/SaveRasterLayerExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/SaveRasterLayerExtension.java	(revision 43876)
@@ -13,7 +13,7 @@
 import org.gvsig.app.project.documents.view.ViewDocument;
 import org.gvsig.app.project.documents.view.gui.IView;
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.layers.FLayers;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/HistogramExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/HistogramExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/HistogramExtension.java	(revision 43876)
@@ -25,9 +25,9 @@
 import org.gvsig.app.project.documents.view.gui.IView;
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.ReadException;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.geom.Geometry;
 import org.gvsig.fmap.geom.primitive.Envelope;
 import org.gvsig.fmap.mapcontext.ViewPort;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ConvertRasterLayerTypeExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ConvertRasterLayerTypeExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/ConvertRasterLayerTypeExtension.java	(revision 43876)
@@ -21,7 +21,7 @@
 import org.gvsig.app.project.documents.view.ViewDocument;
 import org.gvsig.app.project.documents.view.gui.IView;
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.layers.FLayers;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/AssignProjectionExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/AssignProjectionExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.mainplugin/src/main/java/org/gvsig/raster/tools/app/mainplugin/AssignProjectionExtension.java	(revision 43876)
@@ -20,7 +20,7 @@
 import org.gvsig.app.project.documents.view.ViewDocument;
 import org.gvsig.app.project.documents.view.gui.IView;
 import org.gvsig.fmap.dal.DataStoreParameters;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.layers.FLayers;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/AddTestRasterLayerExtension.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/AddTestRasterLayerExtension.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/AddTestRasterLayerExtension.java	(revision 43876)
@@ -30,8 +30,8 @@
 import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
 import org.gvsig.fmap.dal.raster.RasterStoreProviderFactory;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
 import org.gvsig.fmap.dal.spi.DALSPILocator;
 import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/colortable/ColorTablePagePanelController.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/colortable/ColorTablePagePanelController.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.plugin/org.gvsig.raster.app/org.gvsig.raster.app.mainplugin/src/main/java/org/gvsig/raster/app/mainplugin/colortable/ColorTablePagePanelController.java	(revision 43876)
@@ -50,9 +50,9 @@
 import org.gvsig.andami.PluginServices;
 import org.gvsig.andami.PluginsLocator;
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
 import org.gvsig.fmap.mapcontext.raster.swing.MapContextRasterSwingLocator;
Index: branches/org.gvsig.desktop-2018a/pom.xml
===================================================================
--- branches/org.gvsig.desktop-2018a/pom.xml	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/pom.xml	(revision 43876)
@@ -980,6 +980,11 @@
             </dependency>
             <dependency>
                 <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.basicformats</artifactId>
+                <version>3.0.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
                 <artifactId>org.gvsig.fmap.control</artifactId>
                 <version>3.0.0-SNAPSHOT</version>
             </dependency>
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/export/DefaultExportRasterPanel.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/export/DefaultExportRasterPanel.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/export/DefaultExportRasterPanel.java	(revision 43876)
@@ -1,7 +1,5 @@
 package org.gvsig.fmap.mapcontext.raster.swing.impl.export;
 
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.io.File;
 import java.nio.Buffer;
 import java.util.ArrayList;
@@ -10,7 +8,6 @@
 
 import javax.swing.JComponent;
 import javax.swing.JFileChooser;
-import javax.swing.JPanel;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -18,7 +15,7 @@
 import org.gvsig.fmap.dal.DALLocator;
 import org.gvsig.fmap.dal.DataManager;
 import org.gvsig.fmap.dal.DataServerExplorer;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
@@ -65,8 +62,7 @@
         final JFileChooser jfc = new JFileChooser("/home/paco/tmp");
 
         List dataStoreProviderNames = explorer.getDataStoreProviderNames();
-        List<FilesystemServerExplorerProvider> creationProviders =
-            new ArrayList<FilesystemServerExplorerProvider>();
+        List<FilesystemServerExplorerProvider> creationProviders = new ArrayList<>();
         Iterator filters = explorer.getFilters(DataServerExplorer.MODE_RASTER);
         while (filters.hasNext()) {
             FilesystemServerExplorerProvider provider = (FilesystemServerExplorerProvider) filters.next();
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/BandsPanelController.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/BandsPanelController.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/BandsPanelController.java	(revision 43876)
@@ -55,8 +55,8 @@
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/RasterStoreBand.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/RasterStoreBand.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/bands/RasterStoreBand.java	(revision 43876)
@@ -26,7 +26,7 @@
 import org.slf4j.LoggerFactory;
 
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.raster.lib.buffer.api.NoData;
 import org.gvsig.tools.dispose.DisposeUtils;
 import org.gvsig.tools.dispose.impl.AbstractDisposable;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultSelectableBandDescriptorsTableModel.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultSelectableBandDescriptorsTableModel.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultSelectableBandDescriptorsTableModel.java	(revision 43876)
@@ -29,7 +29,7 @@
 
 import javax.swing.table.AbstractTableModel;
 
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 import org.gvsig.fmap.mapcontext.raster.swing.SelectableBandDescriptorsTableModel;
 import org.gvsig.raster.swing.buffer.SelectableBandsTableModel;
 import org.gvsig.tools.ToolsLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultMapContextRasterSwingManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultMapContextRasterSwingManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/impl/DefaultMapContextRasterSwingManager.java	(revision 43876)
@@ -24,7 +24,7 @@
 
 import java.util.List;
 
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 import org.gvsig.fmap.mapcontext.raster.swing.MapContextRasterSwingManager;
 import org.gvsig.fmap.mapcontext.raster.swing.SelectableBandDescriptorsTableModel;
 import org.gvsig.fmap.mapcontext.raster.swing.bands.BandsPanel;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.api/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/MapContextRasterSwingManager.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.api/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/MapContextRasterSwingManager.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.fmap.mapcontext.swing/org.gvsig.fmap.mapcontext.swing.api/src/main/java/org/gvsig/fmap/mapcontext/raster/swing/MapContextRasterSwingManager.java	(revision 43876)
@@ -25,7 +25,7 @@
 
 import java.util.List;
 
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
 import org.gvsig.fmap.mapcontext.raster.swing.bands.BandsPanel;
 import org.gvsig.fmap.mapcontext.raster.swing.export.ExportRasterPanel;
 import org.gvsig.fmap.mapcontext.raster.swing.operations.OperationListPanel;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorInterpretation.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorInterpretation.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorInterpretation.java	(revision 43876)
@@ -1,12 +1,8 @@
 package org.gvsig.raster.tilecache.provider.legend;
 
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.slf4j.LoggerFactory;
 
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
-import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
 import org.gvsig.raster.lib.legend.api.colorinterpretation.ColorInterpretation;
 import org.gvsig.raster.tilecache.provider.TileCacheStoreProvider;
 import org.gvsig.raster.tilecache.provider.TileStructImage;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorTable.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorTable.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetColorTable.java	(revision 43876)
@@ -1,13 +1,10 @@
 package org.gvsig.raster.tilecache.provider.legend;
 
+import org.gvsig.fmap.dal.raster.RasterStore;
+import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
 import org.slf4j.LoggerFactory;
 
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
-import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
-import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
+
 import org.gvsig.raster.tilecache.provider.TileCacheStoreProvider;
 import org.gvsig.raster.tilecache.provider.TileStructImage;
 import org.gvsig.tools.ToolsLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetLegend.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetLegend.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.tilecache/src/main/java/org/gvsig/raster/tilecache/provider/legend/TileCacheGetLegend.java	(revision 43876)
@@ -1,12 +1,8 @@
 package org.gvsig.raster.tilecache.provider.legend;
 
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.slf4j.LoggerFactory;
 
-import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
-import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
-import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
 import org.gvsig.raster.lib.legend.api.RasterLegend;
 import org.gvsig.raster.tilecache.provider.TileCacheStoreProvider;
 import org.gvsig.raster.tilecache.provider.TileStructImage;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorInterpretation.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorInterpretation.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorInterpretation.java	(revision 43876)
@@ -10,7 +10,7 @@
 import java.util.List;
 import org.gvsig.fmap.dal.file.imageio.ImageIOStoreProvider;
 
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
 import org.gvsig.raster.lib.legend.api.RasterLegendManager;
 import org.gvsig.raster.lib.legend.api.colorinterpretation.ColorInterpretation;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorTable.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorTable.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetColorTable.java	(revision 43876)
@@ -7,7 +7,7 @@
 import java.util.List;
 import org.gvsig.fmap.dal.file.imageio.ImageIOStoreProvider;
 
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
 import org.gvsig.raster.lib.legend.api.RasterLegendManager;
 import org.gvsig.raster.lib.legend.api.colortable.ColorTable;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetLegend.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetLegend.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.legend/org.gvsig.raster.legend.imageio/src/main/java/org/gvsig/fmap/dal/file/imageio/legend/ImageIOGetLegend.java	(revision 43876)
@@ -1,6 +1,6 @@
 package org.gvsig.fmap.dal.file.imageio.legend;
 
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.spi.DataStoreProvider;
 import org.gvsig.raster.lib.legend.api.RasterLegend;
 import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.impl/src/main/java/org/gvsig/raster/tools/lib/impl/DefaultRasterClip.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.impl/src/main/java/org/gvsig/raster/tools/lib/impl/DefaultRasterClip.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.impl/src/main/java/org/gvsig/raster/tools/lib/impl/DefaultRasterClip.java	(revision 43876)
@@ -16,9 +16,9 @@
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
 import org.gvsig.fmap.dal.spi.DALSPILocator;
 import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
@@ -66,10 +66,12 @@
     public DefaultRasterClip() {
     }
 
+    @Override
     public RasterLayer getLayer() {
         return layer;
     }
 
+    @Override
     public void setLayer(RasterLayer layer) {
         this.layer = layer;
     }
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.api/src/main/java/org/gvsig/raster/tools/lib/api/RasterClip.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.api/src/main/java/org/gvsig/raster/tools/lib/api/RasterClip.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.lib/org.gvsig.raster.tools.lib.api/src/main/java/org/gvsig/raster/tools/lib/api/RasterClip.java	(revision 43876)
@@ -25,7 +25,6 @@
 import java.io.File;
 import java.util.List;
 
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
 import org.gvsig.fmap.geom.primitive.Envelope;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
 import org.gvsig.raster.tools.lib.api.exceptions.ClipException;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/clip/ClipPanelController.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/clip/ClipPanelController.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/clip/ClipPanelController.java	(revision 43876)
@@ -52,10 +52,10 @@
 import org.gvsig.fmap.IconThemeHelper;
 import org.gvsig.fmap.dal.exception.DataException;
 import org.gvsig.fmap.dal.exception.InitializeException;
-import org.gvsig.fmap.dal.raster.api.BandDescriptor;
-import org.gvsig.fmap.dal.raster.api.RasterQuery;
-import org.gvsig.fmap.dal.raster.api.RasterSet;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.BandDescriptor;
+import org.gvsig.fmap.dal.raster.RasterQuery;
+import org.gvsig.fmap.dal.raster.RasterSet;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.geom.Geometry.DIMENSIONS;
 import org.gvsig.fmap.geom.Geometry.SUBTYPES;
 import org.gvsig.fmap.geom.GeometryLocator;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/converttype/ConvertTypePanelController.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/converttype/ConvertTypePanelController.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster.tools/org.gvsig.raster.tools.swing/org.gvsig.raster.tools.swing.impl/src/main/java/org/gvsig/raster/tools/swing/impl/converttype/ConvertTypePanelController.java	(revision 43876)
@@ -32,7 +32,7 @@
 import org.slf4j.LoggerFactory;
 
 import org.gvsig.fmap.dal.exception.DataException;
-import org.gvsig.fmap.dal.raster.api.RasterStore;
+import org.gvsig.fmap.dal.raster.RasterStore;
 import org.gvsig.fmap.mapcontext.layers.FLayer;
 import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
 import org.gvsig.raster.lib.buffer.api.Buffer;
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBuffer.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBuffer.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/AbstractBuffer.java	(revision 43876)
@@ -492,6 +492,20 @@
         return bandDataTypes;
     }
 
+    @Override
+    public boolean areAllBandsOfTheSameType() {
+        if( this.bands.isEmpty() ) {
+            return true;
+        }
+        int type = this.bands.get(0).getDataType();
+        for (int i = 1; i < this.bands.size(); i++) {
+            if( type != this.bands.get(i).getDataType() ) {
+                return false;
+            }
+        }
+        return true;
+    }
+    
     public NoData[] getBandNoData() {
         NoData[] bandNoData = new NoData[this.getBandCount()];
         for (int i = 0; i < this.bands.size(); i++) {
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Buffer.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Buffer.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer.api/src/main/java/org/gvsig/raster/lib/buffer/api/Buffer.java	(revision 43876)
@@ -222,6 +222,8 @@
      */
     public int[] getBandTypes();
 
+    public boolean areAllBandsOfTheSameType();
+    
     /**
      * @return Gets NoData object from buffer bands
      */
Index: branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.buffer/org.gvsig.raster.swing.buffer.impl/src/main/java/org/gvsig/raster/swing/buffer/impl/save/DefaultSaveBufferDialog.java
===================================================================
--- branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.buffer/org.gvsig.raster.swing.buffer.impl/src/main/java/org/gvsig/raster/swing/buffer/impl/save/DefaultSaveBufferDialog.java	(revision 43875)
+++ branches/org.gvsig.desktop-2018a/org.gvsig.desktop.library/org.gvsig.raster/org.gvsig.raster.swing/org.gvsig.raster.swing.buffer/org.gvsig.raster.swing.buffer.impl/src/main/java/org/gvsig/raster/swing/buffer/impl/save/DefaultSaveBufferDialog.java	(revision 43876)
@@ -45,7 +45,7 @@
 import org.gvsig.fmap.dal.exception.InitializeException;
 import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
 import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
-import org.gvsig.fmap.dal.raster.api.NewRasterStoreParameters;
+import org.gvsig.fmap.dal.raster.NewRasterStoreParameters;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
 import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
