I have used the core JUMP API in numerous projects, primarily for easily modelling features (spatial + attributes) and having convenient IO (especially for shapefiles!)

I had the same need for a simple interface to the JUMP IO classes. I simply wrote a bunch of utility functions to do IO on the various formats that JUMP supports. The code is attached in case anyone else finds it useful. (Some of this might actually be in JUMP/OJ - and if it isn't it might be nice to add it)

HTH

Sunburned Surveyor wrote:
I'm working on a little tool that creates a grid in which each cell of
the grid is a polygon. You can create the grid with any rectangular
dimensions, specify the number of columns and rows, and also a
rotation. The tool also allows you to create attributes for each cell
based on the row and column number.

I'm using JTS and OpenJUMP Features inside of the program.

I'd like to find the easiest way to export the features and geometries
as an ESRI Shapefile. I was hoping there would a single method that I
could simply pass a FeatureCollection and String representing the path
and file name. I think that would be the write method of the
ShapefileWriter class.

Is this correct? Is there a newer class/method that I should be using?

I'm really looking for the easiest way to get from a FeatureCollection
to a Shapefile. I want to make sure I'm using the appropriate code.

Thanks for any help.

The Sunburned Surveyor

P.S. - I was just "scratching my own itch" with this tool, but when I
get the tool finished, I'll release it under the GPL. It will be
pluggable, so you can add your own attribute factories or support for
output formats besides Shapefiles.

Does anyone else know of third-party apps that are using OpenJUMP code
as a library? Just curious...

-------------------------------------------------------------------------
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
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel


--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022

package debug;

import java.util.Iterator;
import java.util.List;

import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.feature.FeatureCollection;
import com.vividsolutions.jump.io.*;

public class IOUtil {

  private static String getExtension(String filename)
  {
    int len = filename.length();
    String extension = filename.substring(len - 3, len);
    return extension;
  }

  public static FeatureCollection load(String filename)
      throws Exception
  {
    String extension = getExtension(filename);
    if (extension.equalsIgnoreCase("SHP"))
      return loadShapefile(filename);
    if (extension.equalsIgnoreCase("JML"))
      return loadJMLFile(filename);
    if (extension.equalsIgnoreCase("WKT"))
      return loadWKT(filename);
    throw new Exception("Unknown file type: " + extension);
  }

  public static FeatureCollection load(String filename, String zipFileName)
      throws Exception
  {
    String extension = getExtension(filename);
    if (extension.equalsIgnoreCase("SHP"))
      return loadShapefile(filename, zipFileName);
    throw new Exception("Unknown file type: " + extension);
  }

  public static FeatureCollection loadJMLFile(String filename)
      throws Exception
  {
    JMLReader rdr = new JMLReader();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    return rdr.read(dp);
  }

  public static FeatureCollection loadShapefile(String filename)
      throws Exception
  {
    ShapefileReader rdr = new ShapefileReader();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    return rdr.read(dp);
  }

  public static FeatureCollection loadShapefile(String filename, String 
zipFileName)
      throws Exception
  {
    ShapefileReader rdr = new ShapefileReader();
    DriverProperties dp = new DriverProperties();
    dp.set(ShapefileReader.FILE_PROPERTY_KEY, filename);
    if (zipFileName != null)
      dp.set(ShapefileReader.COMPRESSED_FILE_PROPERTY_KEY, zipFileName);
    return rdr.read(dp);
  }

  public static FeatureCollection loadFMEGML(String filename)
      throws Exception
  {
    FMEGMLReader rdr = new FMEGMLReader();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    return rdr.read(dp);
  }

  public static FeatureCollection loadWKT(String filename)
      throws Exception
  {
    WKTReader rdr = new WKTReader();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    FeatureCollection fc = rdr.read(dp);
    return fc;
  }

  public static void save(FeatureCollection fc, String filename)
      throws Exception
  {
    String extension = getExtension(filename);
    if (extension.equalsIgnoreCase("SHP")) {
      saveShapefile(fc, filename);
      return;
    }
    else if (extension.equalsIgnoreCase("JML")) {
      saveJMLFile(fc, filename);
      return;
    }
    throw new Exception("Unknown file type: " + extension);
  }

  public static void saveShapefile(FeatureCollection fc, String filename)
      throws Exception
  {
    ShapefileWriter writer = new ShapefileWriter();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    writer.write(fc, dp);
  }
  public static void saveJMLFile(FeatureCollection fc, String filename)
      throws Exception
  {
    JMLWriter writer = new JMLWriter();
    DriverProperties dp = new DriverProperties();
    dp.set("File", filename);
    writer.write(fc, dp);
  }
  public static void print(FeatureCollection fc)
  {
    List featList = fc.getFeatures();
    for (Iterator i = featList.iterator(); i.hasNext(); ) {
      Feature f = (Feature) i.next();
      System.out.println(f.getGeometry());
    }
  }

}
-------------------------------------------------------------------------
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
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to