/*****************************************************************
* PointExample.java
* Just an example of how to write a Point Shapefile with the
* NVS Shapefile library, v2.0
*
****************************************************************/
import java.io.*;
import com.nvs.shapefile.*;
import java.util.*;
public class PointExample
{
public static void main(String args[])
{
new PointExample();
}
public PointExample()
{
// Create a new Shapefile of type POINT
Shapefile shp = new Shapefile(Shapefile.SHAPETYPE_POINT);
// 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 Shapefile
Point p = new Point(1, 2);
shpObj.addPoint(p);
shp.addShapeObject(shpObj);
shpObj = new ShapeObject();
p = new Point(2, 3);
shpObj.addPoint(p);
shp.addShapeObject(shpObj);
shpObj = new ShapeObject();
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);
// Write what we've got so far
try
{
shp.write("PointExample_1");
}
catch(IOException e)
{
e.printStackTrace();
}
shp = new Shapefile(Shapefile.SHAPETYPE_POINT);
shp.getTableDescription().addTableDescriptor(new TableDescriptor("soilmoisture"));
// Instead of adding ShapeObjects one at a time, we'll add a collection this time
// loop through ten times, adding a point to the ArrayList each time
ArrayList arlShapes = new ArrayList();
for(int i=0;i<10;i++)
{
p = new Point(i, i*2);
shpObj = new ShapeObject(ShapeObject.POINT);
rec = new Record();
rec.addField(new RecordField("soilmoisture", "moisture" + i));
shpObj.setRecord(rec);
shpObj.addPoint(p);
arlShapes.add(shpObj);
}
// Set the Shapefile's ShapeObjects to the ArrayList.
shp.setShapeObjects(arlShapes);
// Write the shapefile. Handle the IOException that may occur.
try
{
shp.write("PointExample_2");
}
catch(IOException e)
{
e.printStackTrace();
}
}
}