You may want to open a bug report for this one; the module maintainer for raster stuff is usually faster to respond to Jira issues than to email. Jody > Hi all: > > I'm using ImageMosaic to load a GeoTiff index shapefile (9 GeoTiffs, > total size of 146889x92337). If I display the resulting map using > DisplayJAI I get an optimal performance but I need to use > StreamingRenderer.render method to display multiple layers above the > raster image. With StreamingRenderer.render I get really poor > performance. Am I using GeoTools in the right way? > > P.S.- I think that I'm missunderstanding (or not understanding at all the > RasterSimbolizer part) because I get some kind of inverted colors. > > Thanks in advance. > > -- Here is my code (I'm using GeoTools 2.3.5) > > public class PanelGeoMap extends JPanel implements MouseMotionListener { > > private class PanelMap extends JPanel { > > @Override > public void paint(Graphics g) { > try { > Graphics2D g2d = (Graphics2D) g; > Rectangle rectangle = new Rectangle(getSize()); > > //System.out.println("Map size (px): " + rectangle.height > + "x" + rectangle.width); > > renderer.paint(g2d, rectangle, mapContext.getLayerBounds()); > } catch (IOException ex) { > > Logger.getLogger(PanelGeoMap.class.getName()).log(Level.SEVERE, > null, ex); > } > } > } > > private PanelMap panelMap; > private JScrollPane scrollPaneMap; > > private Dimension preferredSizeMaximum; > > private CoordinateReferenceSystem crs; > private GTRenderer renderer; > private Envelope env; > private DefaultMapContext mapContext; > > public PanelGeoMap() { > renderer = new StreamingRenderer(); > > File file = null; > JFileChooser fc = new JFileChooser(); > int ret = fc.showOpenDialog(this); > > if (ret == JFileChooser.APPROVE_OPTION) { > file = fc.getSelectedFile(); > } else { > System.exit(0); > } > > AbstractGridCoverage2DReader reader; > try { > //reader = new GeoTiffReader(file, new > Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE)); > reader = new ImageMosaicReader(file, new > Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE)); > } catch (IOException ex) { > ex.printStackTrace(); > return; > } > > GridCoverage2D coverage; > try { > coverage = (GridCoverage2D) reader.read(null); > } catch (IOException ex) { > ex.printStackTrace(); > return; > } > > crs = coverage.getCoordinateReferenceSystem(); > env = coverage.getEnvelope(); > RenderedImage image = coverage.getRenderedImage(); > > StyleBuilder styleBuilder = new StyleBuilder(); > > ColorMap cm = styleBuilder.createColorMap( > new String[]{"0", "255"}, > new double[]{0, 255}, > new Color[]{ new Color(0, 0, 0), > new Color(255, 255, 255)}, > ColorMap.TYPE_RAMP); // XXX: ? > > > RasterSymbolizer rs = styleBuilder.createRasterSymbolizer(cm, 1); > Style st = styleBuilder.createStyle(rs); > > mapContext = new DefaultMapContext(crs); > mapContext.addLayer(reader, st); > renderer.setContext(mapContext); > > RenderingHints hints = new > RenderingHints(RenderingHints.KEY_RENDERING, > RenderingHints.VALUE_RENDER_SPEED); > renderer.setJava2DHints(hints); > Map renderParams = new HashMap(); > renderParams.put("optimizedDataLoadingEnabled", new Boolean(true)); > renderer.setRendererHints(renderParams); > > int width = image.getWidth(); > int height = image.getHeight(); > > /* Debug */ > JFrame frameJAI = new JFrame("DisplayJAI"); > frameJAI.getContentPane().add(new JScrollPane(new > DisplayJAI(image))); > frameJAI.setVisible(true); > > System.out.println("Image size: " + width + "x" + height); > > panelMap = new PanelMap(); > panelMap.addMouseMotionListener(this); > preferredSizeMaximum = new Dimension(width, height); > panelMap.setPreferredSize(preferredSizeMaximum); > > scrollPaneMap = new JScrollPane(panelMap); > > scrollPaneMap.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); > > scrollPaneMap.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); > scrollPaneMap.setAutoscrolls(true); > > add(scrollPaneMap, BorderLayout.CENTER); > } > > public void zoomIn() { > Dimension preferredSizeActual = panelMap.getPreferredSize(); > > panelMap.setPreferredSize(new Dimension(preferredSizeActual.width > - 2000, preferredSizeActual.height - 2000)); > panelMap.revalidate(); > } > > public void zoomOut() { > Dimension preferredSizeActual = panelMap.getPreferredSize(); > } > > public void mouseDragged(MouseEvent e) { > System.out.println("Dragging " + e.getX() + " " + e.getY()); > Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1); > scrollPaneMap.scrollRectToVisible(r); > } > > public void mouseMoved(MouseEvent e) { > > } > } > >
------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Geotools-gt2-users mailing list Geotools-gt2-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users