/***************************************************************** * PolyLineExample.java * Just an example of how to write a Polyline Shapefile with the * NVS Shapefile library, v2.0 * ****************************************************************/ import java.io.*; import com.nvs.shapefile.*; import java.util.*; public class PolylineExample { public static void main(String args[]) { new PolylineExample(); } public PolylineExample() { // Create a new Shapefile of type POLYLINE Shapefile shp = new Shapefile(Shapefile.SHAPETYPE_POLYLINE); // Add a table description for the name "soil_type". You have to do this // before you add a ShapeObject with a record, else you'll get an exception // because the Shapefile's TableDescription won't match the ShapeObject's // Record shp.getTableDescription().addTableDescriptor(new TableDescriptor("soil_type")); // Create a ShapeObject with an UNDEFINED type. This is handy when you don't // know what type you'll need the ShapeObject to be. ShapeObject shpObj = new ShapeObject(); // Create some points and add them to the ShapeObject Point p = new Point(1, 2); shpObj.addPoint(p); p = new Point(2, 3); shpObj.addPoint(p); p = new Point(4, 3); shpObj.addPoint(p); // Create a new record and add a "soil_type" field to it Record rec = new Record(); rec.addField(new RecordField("soil_type", "sandy")); // Set the ShapeObject's Record shpObj.setRecord(rec); // Add the ShapeObject to the Shapefile shp.addShapeObject(shpObj); // Instead of adding points one at a time, we'll add a collection this time // loop through ten times, adding a point to the ArrayList each time ArrayList arlPoints = new ArrayList(); for(int i=0;i<10;i++) { arlPoints.add(new Point(i, i*2)); } // Create a new ShapeObject, but this time specify the type as POLYLINE shpObj = new ShapeObject(ShapeObject.POLYLINE); // Set the new ShapeObject's points to the ArrayList shpObj.setPoints(arlPoints); shp.addShapeObject(shpObj); // Write the shapefile. Handle the IOException that may occur. Note that // the BoundingBox's for this shapefile and for each shapeobject have been // calculated as they were added/writen. try { shp.write("PolylineExample"); } catch(IOException e) { e.printStackTrace(); } // For kicks, let's reset the shapefile and set it's shapes to an ArrayList, // but we'll specify one shape that doesn't fit the group. It will // throw an InvalidShapeTypeException: shp = new Shapefile(Shapefile.SHAPETYPE_POLYLINE); ArrayList arlShapes = new ArrayList(); for(int i=0;i<20;i++) { // Make the 11th shape a polygon if(i == 10) { shpObj = new ShapeObject(ShapeObject.POLYGON); } else { shpObj = new ShapeObject(ShapeObject.POLYLINE); } arlShapes.add(shpObj); } shp.setShapeObjects(arlShapes); } }