예제 #1
0
파일: Main.java 프로젝트: omusico/bisag-gis
  //	public void savePDF(){
  //		 Rectangle suggestedPageSize = getITextPageSize(page1.getPageSize());
  //		  Rectangle pageSize = rotatePageIfNecessary(suggestedPageSize);
  //		  //rotate if we need landscape
  //		  Document document = new Document(pageSize);
  //
  //		  PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outputFile));
  //		  document.open();
  //		  Graphics2D graphics = cb.createGraphics(pageSize.getWidth(), pageSize.getHeight());
  //
  //		  // call your GTRenderer here
  //		  GTRenderer draw = new StreamingRenderer();
  //		  draw.setMapContent(mapContent);
  //
  //		  draw.paint(graphics, outputArea, mapContent.getLayerBounds() );
  //
  //		  // cleanup
  //		  graphics.dispose();
  //
  //		  //cleanup
  //		  document.close();
  //		  writer.close();
  //	}
  public void saveImage(final MapContent map, final String file, final int imageWidth) {

    GTRenderer renderer = new StreamingRenderer();
    renderer.setMapContent(map);

    Rectangle imageBounds = null;
    ReferencedEnvelope mapBounds = null;
    try {
      mapBounds = map.getMaxBounds();
      double heightToWidth = mapBounds.getSpan(1) / mapBounds.getSpan(0);
      imageBounds = new Rectangle(0, 0, imageWidth, (int) Math.round(imageWidth * heightToWidth));

    } catch (Exception e) {
      // failed to access mapContent layers
      throw new RuntimeException(e);
    }

    BufferedImage image =
        new BufferedImage(imageBounds.width, imageBounds.height, BufferedImage.TYPE_INT_RGB);

    Graphics2D gr = image.createGraphics();
    gr.setPaint(Color.WHITE);
    gr.fill(imageBounds);

    try {
      renderer.paint(gr, imageBounds, mapBounds);
      File fileToSave = new File(file);
      ImageIO.write(image, "jpeg", fileToSave);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
예제 #2
0
파일: Main.java 프로젝트: omusico/bisag-gis
  public void saveNewImage(MapContent map, String file) {

    GTRenderer renderer = new StreamingRenderer();
    renderer.setMapContent(map);
    System.out.println("line 139");
    Rectangle imageBounds = null;
    try {
      ReferencedEnvelope mapBounds = map.getMaxBounds();

      double heightToWidth = mapBounds.getSpan(1) / mapBounds.getSpan(0);
      int imageWidth = 600;

      imageBounds = new Rectangle(0, 0, imageWidth, (int) Math.round(imageWidth * heightToWidth));
    } catch (Exception e) {

    }
    System.out.println("line 151");
    //	    Rectangle imageSize = new Rectangle(600,600);

    BufferedImage image =
        new BufferedImage(
            imageBounds.width, imageBounds.height, BufferedImage.TYPE_INT_RGB); // darker red fill

    Graphics2D gr = image.createGraphics();
    gr.setPaint(Color.WHITE);
    gr.fill(imageBounds);

    try {
      System.out.println("line 161");
      renderer.paint(gr, imageBounds, map.getMaxBounds());
      System.out.println("line 163");

      File fileToSave = new File(file);
      System.out.println("line 166");
      ImageIO.write(image, "jpeg", fileToSave);
      System.out.println("line 168");
    } catch (IOException e) {

    }
  }
예제 #3
0
  /**
   * Draws map content data into image
   *
   * @param content
   * @return image
   */
  private BufferedImage saveImage(MapContent content) {
    BufferedImage image;
    if (isTile && bufferSize != 0.0d) {
      image =
          new BufferedImage(bufferedImageWidth, bufferedImageHeight, BufferedImage.TYPE_4BYTE_ABGR);
    } else {
      image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_4BYTE_ABGR);
    }

    GTRenderer renderer = new StreamingRenderer();
    renderer.setMapContent(content);

    Graphics2D g = (Graphics2D) image.getGraphics();
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setRenderingHint(
        RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

    if (isTile && bufferSize != 0.0d) {
      renderer.paint(
          g,
          new Rectangle(bufferedImageWidth, bufferedImageHeight),
          content.getViewport().getBounds());
      try {
        image =
            image.getSubimage(
                (int) (imageWidth * bufferSize) / 2,
                (int) (imageWidth * bufferSize) / 2,
                imageWidth,
                imageHeight);
      } catch (Exception e) {
        log.error(e, "Image cropping failed");
      }
    } else {
      renderer.paint(g, new Rectangle(imageWidth, imageHeight), content.getViewport().getBounds());
    }

    content.dispose();
    return image;
  }
예제 #4
0
 @Override
 protected void paintScreenContext(Graphics2D g) {
   if (screenContext != null) {
     synchronized (screenContext) {
       try {
         // let's paint selection and phanton layers
         screenRenderer.setMapContent(screenContext);
         Rectangle clip = g.getClipBounds();
         Point2D.Double lu = screen2Cartesian(clip.getLocation());
         Point2D.Double br =
             screen2Cartesian(new Point(clip.x + clip.width, clip.y + clip.height));
         Geometry aoiGeometry = constructRectyPolygonGeometry(lu, br);
         Envelope aoiEnvelope =
             new ReferencedEnvelope(
                 aoiGeometry.getEnvelopeInternal(), screenContext.getCoordinateReferenceSystem());
         screenRenderer.paint(g, clip, aoiEnvelope, cartesian2Screen);
       } catch (NoninvertibleTransformException ex) {
         Logger.getLogger(JGeoPane.class.getName()).log(Level.SEVERE, null, ex);
       }
     }
   }
   super.paintScreenContext(g);
 }
예제 #5
0
  /**
   * Set the map context for this map pane to display
   *
   * @param content the map context
   */
  public void setMapContent(MapContent content) {
    if (this.content != content) {

      if (this.content != null) {
        this.content.removeMapLayerListListener(this);
        // for( MapLayer layer : this.context.getLayers() ) {
        // if (layer instanceof ComponentListener) {
        // removeComponentListener((ComponentListener) layer);
        // }
        // }
      }

      this.content = content;

      if (content != null) {
        this.content.addMapLayerListListener(this);
        this.content.addMapBoundsListener(this);

        // set all layers as selected by default for the info tool
        for (Layer layer : content.layers()) {
          layer.setSelected(true);
          // if (layer instanceof ComponentListener) {
          // addComponentListener((ComponentListener) layer);
          // }
        }

        setFullExtent();
      }

      if (renderer != null) {
        renderer.setMapContent(this.content);
      }

      MapPaneEvent ev = new MapPaneEvent(this, MapPaneEvent.Type.NEW_CONTEXT);
      publishEvent(ev);
    }
  }
예제 #6
0
  /**
   * Set the renderer for this map pane.
   *
   * @param renderer the renderer to use
   */
  public void setRenderer(GTRenderer renderer) {
    if (renderer != null) {
      Map<Object, Object> hints;
      if (renderer instanceof StreamingRenderer) {
        hints = renderer.getRendererHints();
        if (hints == null) {
          hints = new HashMap<Object, Object>();
        }
        if (hints.containsKey(StreamingRenderer.LABEL_CACHE_KEY)) {
          labelCache = (LabelCache) hints.get(StreamingRenderer.LABEL_CACHE_KEY);
        } else {
          labelCache = new LabelCacheImpl();
          hints.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache);
        }
        renderer.setRendererHints(hints);

        if (this.content != null) {
          renderer.setMapContent(this.content);
        }
      }
    }

    this.renderer = renderer;
  }