Revision: 6532 http://sourceforge.net/p/jump-pilot/code/6532 Author: ma15569 Date: 2020-09-26 05:36:27 +0000 (Sat, 26 Sep 2020) Log Message: ----------- Updated RasterizePlugIn
Modified Paths: -------------- core/trunk/src/org/openjump/core/rasterimage/algorithms/RasterizeAlgorithm.java core/trunk/src/org/openjump/core/ui/plugin/tools/generate/RasterizePlugIn.java Modified: core/trunk/src/org/openjump/core/rasterimage/algorithms/RasterizeAlgorithm.java =================================================================== --- core/trunk/src/org/openjump/core/rasterimage/algorithms/RasterizeAlgorithm.java 2020-09-25 07:57:37 UTC (rev 6531) +++ core/trunk/src/org/openjump/core/rasterimage/algorithms/RasterizeAlgorithm.java 2020-09-26 05:36:27 UTC (rev 6532) @@ -6,9 +6,13 @@ import java.awt.image.WritableRaster; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import org.openjump.core.rasterimage.RasterImageIO; import org.openjump.core.rasterimage.sextante.rasterWrappers.GridCell; @@ -22,6 +26,9 @@ import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LinearRing; import com.vividsolutions.jts.geom.Polygon; +import com.vividsolutions.jts.operation.union.UnaryUnionOp; +import com.vividsolutions.jump.feature.AttributeType; +import com.vividsolutions.jump.feature.BasicFeature; import com.vividsolutions.jump.feature.Feature; import com.vividsolutions.jump.feature.FeatureCollection; import com.vividsolutions.jump.feature.FeatureDataset; @@ -39,7 +46,7 @@ public class RasterizeAlgorithm { - private static Double NO_DATA; + private static Double noData= -99999.0D; private static Double cellSize; private static double dValue; private static int m_iNX; @@ -65,8 +72,8 @@ */ - public static void Rasterize_AdbToolbox(File file, Envelope limitEnvelope, FeatureCollection fCollection, String attributeName, double CellSize, double NoData) throws IOException { - NO_DATA=NoData; + public static void RasterizeAdbToolbox(File file, Envelope limitEnvelope, FeatureCollection fCollection, String attributeName, double CellSize) throws IOException { + cellSize=CellSize; m_Extent= new GridExtent(); m_Extent.setCellSize(CellSize, CellSize); @@ -79,7 +86,7 @@ for (int x = 0; x < m_iNX; x++){ for (int y = 0; y < m_iNY; y++){ - valori[x][y]=NoData; + valori[x][y]=noData; } } @@ -118,11 +125,7 @@ FeatureDataset inputFC = new FeatureDataset(inputC, schema); for (Iterator<Feature> it = inputFC.iterator() ; it.hasNext() ; ) { Feature f = it.next(); - try { - dValue = Double.parseDouble(f.getAttribute(attributeName).toString()); - } catch (Exception e) { - dValue = NoData; - } + dValue = Double.parseDouble(f.getAttribute(attributeName).toString()); final Geometry geom = f.getGeometry(); if (geom.intersects(extent)) { @@ -218,7 +221,7 @@ RasterImageIO rasterImageIO = new RasterImageIO(); rasterImageIO.writeImage(file, raster, limitEnvelope, - rasterImageIO.new CellSizeXY(CellSize, CellSize), NoData); + rasterImageIO.new CellSizeXY(CellSize, CellSize), noData); } @@ -246,36 +249,35 @@ * @param double NoData * @throws IOException */ - public static void Rasterize_Sextante(File file, Envelope limitEnvelope, FeatureCollection fCollection, - String attributeName, double CellSize, double NoData) throws IOException { - NO_DATA=NoData; + public static void RasterizeSextante(File file, Envelope limitEnvelope, FeatureCollection fCollection, + String attributeName, double CellSize ) throws IOException { + cellSize=CellSize; m_Extent= new GridExtent(); m_Extent.setCellSize(CellSize, CellSize); - m_Extent.setXRange(limitEnvelope.getMinX(), limitEnvelope.getMaxX()); - m_Extent.setYRange(limitEnvelope.getMinY(), limitEnvelope.getMaxY()); - - m_iNX = m_Extent.getNX(); - m_iNY = m_Extent.getNY(); - double[][] valori= new double[m_iNX][m_iNY]; + double minX = limitEnvelope.getMinX(); + double minY = limitEnvelope.getMinY(); + double maxX = limitEnvelope.getMaxX(); + double maxY = limitEnvelope.getMaxY(); + m_Extent.setXRange(minX, maxX);//limitEnvelope.getMaxX()); + m_Extent.setYRange(minY, maxY);//limitEnvelope.getMaxY()); + m_iNX = m_Extent.getNX()+1; + m_iNY = m_Extent.getNY()+1; + double[][] valori= new double[m_iNX][m_iNY]; for (int x = 0; x < m_iNX; x++){ for (int y = 0; y < m_iNY; y++){ - valori[x][y]=NoData; + valori[x][y]=noData; } } - raster = GridRasterWrapper.matrixToRaster(valori); - - - - final Coordinate[] coords = new Coordinate[5]; - coords[0] = new Coordinate(limitEnvelope.getMinX(), limitEnvelope.getMinY()); - coords[1] = new Coordinate(limitEnvelope.getMinX(), limitEnvelope.getMaxY()); - coords[2] = new Coordinate(limitEnvelope.getMaxX(),limitEnvelope.getMaxY()); - coords[3] = new Coordinate(limitEnvelope.getMaxX(),limitEnvelope.getMinY()); - coords[4] = new Coordinate(limitEnvelope.getMinX(), limitEnvelope.getMinY()); + final Coordinate[] coords = new Coordinate[5]; + coords[0] = new Coordinate(minX, minY); + coords[1] = new Coordinate(minX, maxY); + coords[2] = new Coordinate(maxX, maxY); + coords[3] = new Coordinate(maxX, minY); + coords[4] = new Coordinate(minX, minY); final GeometryFactory gf = new GeometryFactory(); @@ -288,7 +290,12 @@ FeatureDataset inputFC = new FeatureDataset(inputC, schema); for (Iterator<Feature> it = inputFC.iterator() ; it.hasNext() ; ) { Feature f = it.next(); + try { dValue = Double.parseDouble(f.getAttribute(attributeName).toString()); + } catch (Exception e) { + dValue = noData; + } + final Geometry geometry = f.getGeometry(); @@ -297,12 +304,11 @@ doGeometry(geometry); } } - // Raster raster = sRasterLayer.getRaster(); - - RasterImageIO rasterImageIO = new RasterImageIO(); - rasterImageIO.writeImage(file, raster, limitEnvelope, - rasterImageIO.new CellSizeXY(CellSize, CellSize), NoData); + RasterImageIO rasterImageIO = new RasterImageIO(); + rasterImageIO.writeImage(file, raster, extent.getEnvelopeInternal(), + rasterImageIO.new CellSizeXY(CellSize, CellSize),noData ); + } @@ -385,12 +391,12 @@ final double dPrevValue =raster.getSampleDouble(x, y,0);// sRasterLayer.getCellValueAsDouble(x, y); if (bIsHole) { if (dPrevValue == dValue) { - raster.setSample(x, y, 0, NO_DATA); + raster.setSample(x, y, 0, noData); } } else { - if (dPrevValue == NO_DATA) { + if (dPrevValue == noData) { raster.setSample(x, y, 0, dValue); } @@ -530,7 +536,83 @@ } } - + public static FeatureCollection unionByAttributeValue(FeatureCollection featureCollection, String value) throws Exception { + FeatureDataset outputFC = new FeatureDataset(featureCollection.getFeatureSchema()); + + Map<Object, FeatureCollection> map = new HashMap<Object, FeatureCollection>(); + Iterator<Feature> itFeat= featureCollection.getFeatures().iterator(); + while (itFeat.hasNext()) { + Feature feature = itFeat.next(); + Object key = feature.getAttribute(value); + if (!map.containsKey(key)) { + FeatureCollection fd = new FeatureDataset(featureCollection.getFeatureSchema()); + fd.add(feature); + map.put(key, fd); + } else { + map.get(key).add(feature); + } + } + + Iterator<Object> iter = map.keySet().iterator(); + while (iter.hasNext()) { + Object key = iter.next(); + FeatureCollection fca = map.get(key); + if (fca.size() > 0) { + Feature feature = union(fca); + feature.setAttribute(value, key); + outputFC.add(feature); + } + } + + + return outputFC; + } + + + + + private static Feature union(FeatureCollection fc) { + GeometryFactory factory = new GeometryFactory(); + Collection<Geometry> geometries = new ArrayList<Geometry>(); + for (Feature f : fc.getFeatures()) { + Geometry g = f.getGeometry(); + geometries.add(g); + } + Geometry unioned = UnaryUnionOp.union(geometries); + FeatureSchema schema = fc.getFeatureSchema(); + Feature feature = new BasicFeature(schema); + if (geometries.size()==0) { + feature.setGeometry(factory.createGeometryCollection(new Geometry[]{})); + } + else { + feature.setGeometry(unioned); + } + return feature; + } + + + + public static FeatureCollection getFeaturesOverlappingEnvelope(FeatureCollection featureCollection, + Envelope env, String attributeName) throws Exception { + Collection<Feature> inputC = featureCollection.getFeatures(); + FeatureSchema schema1 = featureCollection.getFeatureSchema(); + FeatureDataset inputFC = new FeatureDataset(inputC, schema1); + + + FeatureSchema schema = new FeatureSchema(); + schema.addAttribute("GEOMETRY", AttributeType.GEOMETRY); + schema.addAttribute(attributeName, AttributeType.DOUBLE); + FeatureDataset outputFC = new FeatureDataset(schema); + GeometryFactory factory = new GeometryFactory(); + Geometry geom = factory.toGeometry(env); + + for (Feature f : inputFC.getFeatures()) { + Geometry g = f.getGeometry(); + if (!geom.disjoint(g)){ + outputFC.add(f);} + } + return outputFC; + } } Modified: core/trunk/src/org/openjump/core/ui/plugin/tools/generate/RasterizePlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/tools/generate/RasterizePlugIn.java 2020-09-25 07:57:37 UTC (rev 6531) +++ core/trunk/src/org/openjump/core/ui/plugin/tools/generate/RasterizePlugIn.java 2020-09-26 05:36:27 UTC (rev 6532) @@ -4,14 +4,9 @@ * created: 21. Sept.2020 * * @author Giuseppe Aruta - * @TODO clip the vectors to the envelope before - * validating them. THis can make the process faster * * * @description: A tool to rasterize a vector layer. - * - make valid the layer - * - union by the value selected for rasterizing - * - rasterize the vectors limiting into an envelope * */ @@ -19,11 +14,12 @@ import java.awt.Dimension; import java.awt.GridBagLayout; +import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.geom.NoninvertibleTransformException; import java.io.File; -import java.util.Collection; -import java.util.Iterator; +import java.util.ArrayList; import java.util.List; import javax.swing.DefaultComboBoxModel; @@ -30,6 +26,7 @@ import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFileChooser; @@ -37,19 +34,18 @@ import javax.swing.JPanel; import javax.swing.JTextField; +import org.openjump.core.rasterimage.ImageAndMetadata; +import org.openjump.core.rasterimage.RasterImageIO; import org.openjump.core.rasterimage.RasterImageLayer; -import org.openjump.core.rasterimage.algorithms.GenericRasterAlgorithm; +import org.openjump.core.rasterimage.Resolution; +import org.openjump.core.rasterimage.TiffTags.TiffReadingException; import org.openjump.core.rasterimage.algorithms.RasterizeAlgorithm; import org.openjump.core.ui.io.file.FileNameExtensionFilter; -import org.openjump.sigle.utilities.geom.FeatureCollectionUtil; import org.saig.core.gui.swing.sldeditor.util.FormUtils; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jump.I18N; -import com.vividsolutions.jump.feature.Feature; import com.vividsolutions.jump.feature.FeatureCollection; -import com.vividsolutions.jump.feature.FeatureDataset; -import com.vividsolutions.jump.feature.FeatureSchema; import com.vividsolutions.jump.task.TaskMonitor; import com.vividsolutions.jump.util.FileUtil; import com.vividsolutions.jump.workbench.JUMPWorkbench; @@ -58,7 +54,6 @@ import com.vividsolutions.jump.workbench.model.Layer; import com.vividsolutions.jump.workbench.model.Layerable; import com.vividsolutions.jump.workbench.model.StandardCategoryNames; -import com.vividsolutions.jump.workbench.model.WMSLayer; import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; import com.vividsolutions.jump.workbench.plugin.EnableCheck; import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory; @@ -71,6 +66,7 @@ import com.vividsolutions.jump.workbench.ui.LayerNameRenderer; import com.vividsolutions.jump.workbench.ui.MenuNames; import com.vividsolutions.jump.workbench.ui.MultiInputDialog; +import com.vividsolutions.jump.workbench.ui.Viewport; import com.vividsolutions.jump.workbench.ui.images.IconLoader; import de.latlon.deejump.wfs.jump.WFSLayer; @@ -81,13 +77,15 @@ public class RasterizePlugIn extends AbstractPlugIn implements ThreadedPlugIn { - private Layer layer; + private Layer sourceLayer; private JTextField cellYextFiels; - private JComboBox<Object> layerComboBox = new JComboBox<Object>(); + private JCheckBox externalLayerCheck; + private JComboBox<Layerable> layerableComboBox; + private JComboBox<Layer> selectLayerComboBox; + private JComboBox<String> jcb_attribute; + private LayerNameRenderer layerListCellRenderer = new LayerNameRenderer(); - private JLabel cutLayerLabel; - private DefaultComboBoxModel<Object> sourceLayerComboBoxModel = new DefaultComboBoxModel<Object>(); - private String selAttribute = null; + private static String selAttribute = null; private String ATTRIBUTE = GenericNames.SELECT_ATTRIBUTE; private String path; double cellValue; @@ -97,14 +95,21 @@ private final String OUTPUT_FILE = I18N .get("driver.DriverManager.file-to-save"); private final String CHECK = I18N.get("ui.GenericNames.chech-field"); - private final static String LAYER = I18N.get("ui.plugin.analysis.DissolvePlugIn.source-layer"); + private final static String SOURCE_LAYER= I18N.get("ui.GenericNames.Source-Layer"); private final static String TARGET_LAYER = I18N - .get("ui.plugin.raster.CropWarpPlugIn.target-layer"); + .get("ui.GenericNames.Target-Layer"); private final static String CELL_SIZE = I18N .get("org.openjump.core.ui.plugin.raster.RasterImageLayerPropertiesPlugIn.dimension_cell"); public static final Icon ICON = IconLoader.icon("rasterize.png"); - @Override - public boolean execute(PlugInContext context) throws Exception { + + private final static String RASTERIZE_VECTOR = "Rasterize vector layer"; + private final static String RASTERIZING_VECTOR = "Rasterizing vector layer"; + private final static String PREPARING_VECTOR = "Preparing vector layer"; + private final static String USE_EXTERNAL_EXTENT = "Use extent for layer"; + private final static String DESCRIPTION = "Rasterize a vector layer selecting an attribute value and defining a cell size. Optionally the extent of rasterized area can be defined from another vector or image layer"; + + @Override + public boolean execute(PlugInContext context) throws Exception { MultiInputDialog dialog = new MultiInputDialog( context.getWorkbenchFrame(), getName(), true); initDialog(dialog, context); @@ -119,7 +124,7 @@ @Override public String getName() { - return "Rasterize vector layer"; + return RASTERIZE_VECTOR; } @Override @@ -147,48 +152,61 @@ } } }; + @SuppressWarnings("unchecked") private void initDialog(final MultiInputDialog dialog, PlugInContext context) { - dialog.addLayerComboBox(LAYER, context.getCandidateLayer(0), + dialog.setSideBarDescription(DESCRIPTION); + selectLayerComboBox= dialog.addLayerComboBox(SOURCE_LAYER, context.getCandidateLayer(0), context.getLayerManager()); - + selectLayerComboBox.setSize(240, + selectLayerComboBox.getPreferredSize().height); final List<String> list = AttributeTypeFilter.NUMERIC_FILTER .filter(context.getCandidateLayer(0)); final String val = list.size() > 0 ? list.get(0) : null; - final JComboBox<String> jcb_attribute = dialog.addComboBox(ATTRIBUTE, + jcb_attribute = dialog.addComboBox(ATTRIBUTE, val, list, ATTRIBUTE); - cellYextFiels =dialog.addDoubleField(CELL_SIZE, 5, 8); - sourceLayerComboBoxModel.removeAllElements(); - layerComboBox.setModel(sourceLayerComboBoxModel); - LayerNameRenderer layerListCellRenderer = new LayerNameRenderer(); + + cellYextFiels =dialog.addDoubleField(CELL_SIZE, 5, 10); + cellYextFiels.setSize(jcb_attribute.getWidth(), + jcb_attribute.getPreferredSize().height); + externalLayerCheck =dialog.addCheckBox(USE_EXTERNAL_EXTENT, false); + + List<Layerable> layerables = new ArrayList<>(); + for (Layerable layerable : JUMPWorkbench.getInstance() + .getContext().getLayerManager().getLayerables(Layerable.class)) { + if (layerable instanceof Layer || layerable instanceof RasterImageLayer) { + layerables.add(layerable); + } + + } + layerableComboBox= dialog.addLayerableComboBox(TARGET_LAYER, context.getCandidateLayer(0), + null, layerables); + layerListCellRenderer = new LayerNameRenderer(); layerListCellRenderer.setCheckBoxVisible(false); layerListCellRenderer.setProgressIconLabelVisible(false); - layerComboBox.setRenderer(layerListCellRenderer); - final List<Layerable> layerables = JUMPWorkbench.getInstance() - .getContext().getLayerManager().getLayerables(Layerable.class); - for (Iterator<Layerable> i = layerables.iterator(); i.hasNext();) { - Layerable layer = i.next(); - sourceLayerComboBoxModel.addElement(layer); - } - layerComboBox.setSelectedItem(layerables.get(0)); - layerComboBox.setSize(200, layerComboBox.getPreferredSize().height); - cutLayerLabel = new JLabel(TARGET_LAYER); - JPanel pan = new JPanel(new GridBagLayout()); - FormUtils.addRowInGBL(pan, 0, 0, cutLayerLabel, layerComboBox); - dialog.addRow("base", pan, null, null); - dialog.getComboBox(LAYER).addActionListener(new ActionListener() { + layerableComboBox.setRenderer(layerListCellRenderer); + layerableComboBox.setEnabled(false); + layerableComboBox.setSize(240, + layerableComboBox.getPreferredSize().height); + selectLayerComboBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final List<String> list = AttributeTypeFilter.NUMERIC_FILTER - .filter(dialog.getLayer(LAYER)); + .filter(dialog.getLayer(SOURCE_LAYER)); jcb_attribute.setModel(new DefaultComboBoxModel<>(list .toArray(new String[0]))); } }); - layerComboBox.addActionListener(new ActionListener() { + externalLayerCheck.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - final Layerable slayer = (Layerable) layerComboBox + layerableComboBox.setEnabled(externalLayerCheck.isSelected()); + } + }); + layerableComboBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + final Layerable slayer = (Layerable) layerableComboBox .getSelectedItem(); if (slayer instanceof RasterImageLayer) { cellYextFiels.setText(""+((RasterImageLayer) slayer).getMetadata().getOriginalCellSize()); @@ -198,7 +216,9 @@ final FileNameExtensionFilter filter; filter = new FileNameExtensionFilter("TIF", "tif"); - dialog.addRow("Save", createOutputFilePanel(filter), saveCheck, null); + dialog.addRow("Save", new JLabel(OUTPUT_FILE + ":"), + createOutputFilePanel(filter), saveCheck, null); + // dialog.addRow("Save", createOutputFilePanel(filter), saveCheck, null); GUIUtil.centreOnWindow(dialog); } @@ -205,12 +225,11 @@ Envelope envWanted, fix; private void getCroppedEnvelope(Layer layer) { + if (externalLayerCheck.isSelected()) { envWanted = new Envelope(); - final Layerable slayer = (Layerable) layerComboBox + final Layerable slayer = (Layerable) layerableComboBox .getSelectedItem(); - if (slayer instanceof WMSLayer) { - envWanted.expandToInclude(((WMSLayer) slayer).getEnvelope()); - } else if (slayer instanceof WFSLayer) { + if (slayer instanceof WFSLayer) { envWanted.expandToInclude(((WFSLayer) slayer) .getFeatureCollectionWrapper().getEnvelope()); } else if (slayer instanceof Layer) { @@ -221,12 +240,16 @@ .getWholeImageEnvelope()); } fix = envWanted.intersection(layer.getFeatureCollectionWrapper().getEnvelope()); - } + } + else { + fix=sourceLayer.getFeatureCollectionWrapper().getEnvelope(); + } + } private void getDialogValues(MultiInputDialog dialog) { - layer = dialog.getLayer(LAYER); + sourceLayer = dialog.getLayer(SOURCE_LAYER); cellValue = dialog.getDouble(CELL_SIZE); selAttribute = dialog.getText(ATTRIBUTE); path = getOutputFilePath(); @@ -234,6 +257,7 @@ if (i > 0) { path = path.substring(0, path.length() - path.length() + i); } + getCroppedEnvelope(sourceLayer); } @@ -246,20 +270,17 @@ @Override public void run(TaskMonitor monitor, PlugInContext context) throws Exception { + monitor.allowCancellationRequests(); - getCroppedEnvelope(layer); - final File outFile = FileUtil.addExtensionIfNone(new File(path), "tif"); - FeatureCollection fCollection = layer.getFeatureCollectionWrapper(); - Collection<Feature> inputC = fCollection.getFeatures(); - FeatureSchema schema = fCollection.getFeatureSchema(); - FeatureDataset inputFC = new FeatureDataset(inputC, schema); - monitor.report(I18N.get("org.openjump.core.ui.plugin.tools.MakeValidPlugIn")+"..."); - FeatureCollectionUtil.validFeatureCollection(inputFC) ; - monitor.report(I18N.get("ui.plugin.analysis.DissolvePlugIn")+"..."); - FeatureCollectionUtil.unionByAttributeValue(inputFC, selAttribute); - monitor.report("Rasterize..."); - RasterizeAlgorithm.Rasterize_Sextante(outFile, fix, inputFC, selAttribute, cellValue, -99999.0D); - GenericRasterAlgorithm IO = new GenericRasterAlgorithm(); + FeatureCollection fc = sourceLayer.getFeatureCollectionWrapper(); + final File outFile = FileUtil.addExtensionIfNone(new File(path), "tif"); + monitor.report(PREPARING_VECTOR+"..."); + FeatureCollection fc2 = RasterizeAlgorithm.getFeaturesOverlappingEnvelope(fc, fix, selAttribute); + FeatureCollection fc3 = RasterizeAlgorithm.unionByAttributeValue(fc2, selAttribute); + monitor.report(RASTERIZING_VECTOR+"..."); + RasterizeAlgorithm.RasterizeSextante(outFile, fix, fc3, selAttribute, cellValue); + + String catName = StandardCategoryNames.WORKING; try { catName = ((Category) context.getLayerNamePanel() @@ -266,17 +287,13 @@ .getSelectedCategories().toArray()[0]).getName(); } catch (final RuntimeException e1) { } - IO.load(outFile, catName); + load(outFile, context, catName); + } - - - - - public JPanel createOutputFilePanel(FileNameExtensionFilter filter) { + public JPanel createOutputFilePanel(FileNameExtensionFilter filter) { JPanel jPanel = new JPanel(new GridBagLayout()); jPanel = new javax.swing.JPanel(); - final JLabel jLabel3 = new javax.swing.JLabel(); jTextField_RasterOut = new JTextField(); final JButton jButton_Dir = new JButton(); jTextField_RasterOut.setText(""); @@ -287,7 +304,6 @@ final JFileChooser chooser = new GUIUtil.FileChooserWithOverwritePrompting(); chooser.setDialogTitle(getName()); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); - chooser.setSelectedFile(FileOperations.lastVisitedFolder); chooser.setDialogType(JFileChooser.SAVE_DIALOG); GUIUtil.removeChoosableFileFilters(chooser); @@ -302,13 +318,43 @@ } } }); - jLabel3.setText(OUTPUT_FILE); - jTextField_RasterOut.setEditable(false); + jTextField_RasterOut.setEditable(true); jButton_Dir.setIcon(icon16); - jTextField_RasterOut.setPreferredSize(new Dimension(250, 20)); - FormUtils.addRowInGBL(jPanel, 3, 0, OUTPUT_FILE, jTextField_RasterOut); - FormUtils.addRowInGBL(jPanel, 3, 2, jButton_Dir); + jTextField_RasterOut.setPreferredSize(new Dimension(200, 20)); + + FormUtils.addRowInGBL(jPanel, 3, 0, jTextField_RasterOut); + FormUtils.addRowInGBL(jPanel, 3, 1, jButton_Dir, true, true); return jPanel; } - + + public static void load(File file, PlugInContext context, String category) + throws NoninvertibleTransformException, TiffReadingException, + Exception { + + RasterImageIO rasterImageIO = new RasterImageIO(); + Viewport viewport = context.getWorkbenchContext().getLayerViewPanel() + .getViewport(); + Resolution requestedRes = RasterImageIO + .calcRequestedResolution(viewport); + ImageAndMetadata imageAndMetadata = rasterImageIO.loadImage( + context.getWorkbenchContext(), file.getAbsolutePath(), null, + viewport.getEnvelopeInModelCoordinates(), requestedRes); + Point point = RasterImageIO.getImageDimensions(file.getAbsolutePath()); + Envelope env = RasterImageIO.getGeoReferencing(file.getAbsolutePath(), + true, point); + + RasterImageLayer ril = new RasterImageLayer(file.getName(), context + .getWorkbenchContext().getLayerManager(), + file.getAbsolutePath(), imageAndMetadata.getImage(), env); + // String catName = StandardCategoryNames.RESULT; + try { + category = ((Category) context.getLayerNamePanel() + .getSelectedCategories().toArray()[0]).getName(); + } catch (RuntimeException e1) { + } + context.getLayerManager().addLayerable(category, ril); + ril.setName(selAttribute); + } + + } _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel