/*****************************************************************
* MultipointExample.java
* Just an example of how to write a MultiPoint Shapefile with the
* NVS Shapefile library, v2.0
*
****************************************************************/
import java.io.*;
import com.nvs.shapefile.*;
import java.util.*;
public class MultipointExample
{
public static void main(String args[])
{
new MultipointExample();
}
public MultipointExample()
{
// Create a new Shapefile of type MULTIPOINT
Shapefile shp = new Shapefile(Shapefile.SHAPETYPE_MULTIPOINT);
// 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 MULTIPOINT
shpObj = new ShapeObject(ShapeObject.MULTIPOINT);
// 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("MultipointExample");
}
catch(IOException e)
{
e.printStackTrace();
}
}
}