org.deegree_impl.io.shpapi
Class ShapeFile

java.lang.Object
  extended byorg.deegree_impl.io.shpapi.ShapeFile

public class ShapeFile
extends java.lang.Object

Class representing an ESRI Shape File.

This is a modification of the ShapeFile class within the shpapi package of sfcorba2java project performed by the EXSE-Working group of of the geogr. institute of the university of Bonn (http://www.giub.uni-bonn.de/exse/results/welcome.html).

------------------------------------------------------------------------

Version:
17.10.2001
Author:
Andreas Poth


Field Summary
private  java.util.Hashtable dBaseIndexes
           
private  DBaseFile dbf
           
private  boolean hasDBaseFile
           
private  boolean hasRTreeIndex
           
private  RTree rti
           
private  MainFile shp
           
private  SHP2WKS shpwks
           
private  java.lang.String url
           
 
Constructor Summary
ShapeFile(java.lang.String url)
          constructor:
Construct a ShapeFile from a file name.
ShapeFile(java.lang.String url, java.lang.String rwflag)
          constructor:
Construct a ShapeFile from a file name.
 
Method Summary
 void close()
           
 int[] getDataLengths()
           
 java.lang.String[] getDataTypes()
          returns the datatype of each column of the database file
associated to the shape-file
 java.lang.String[] getDataTypes(java.lang.String[] fields)
          returns the datatype of each column of the dBase associated
to the shape-file specified by fields
private  GM_Object getFeatureAsGeometry(FeatureCollection fc, int n)
          returns the n'th feature of a featurecollection as a GM_Object
 Feature getFeatureByRecNo(int RecNo)
          returns the RecNo'th entry of the shape file as Feature.
 FeatureProperty[] getFeatureProperties(FeatureCollection fc, int n)
           
 GM_Envelope getFileMBR()
          returns the minimum bounding rectangle of all geometries
within the shape-file
private  int getGeometryCount(FeatureCollection fc)
          returns the number of geometries within a feature collection
private  int getGeometryType(FeatureCollection fc, int n)
          returns the type of the n'th feature in a featurecollection
 int[] getGeoNumbersByAttribute(java.lang.String column, java.lang.Comparable value)
          returns a int array that containts all the record numbers that matches the search operation
 int[] getGeoNumbersByRect(GM_Envelope r)
          returns a ArrayList that contains all geomeries of the shape file
which mbr's are completly or partly within the rectangle r
only Points, MultiPoints, PolyLines and Polygons are handled
 GM_Object getGM_ObjectByRecNo(int RecNo)
          returns RecNo'th Geometrie
 GM_Envelope getMBRByRecNo(int recNo)
          returns the minimum bound rectangle of RecNo'th Geometrie
 java.lang.String[] getProperties()
          returns the properties (column headers) of the dBase-file
associated to the shape-file
 int getRecordNum()
          returns the number of records within a shape-file
 java.lang.Object[] getRow(int rowNo)
          returns a row of the dBase-file
associated to the shape-file
 int getShapeTypeByRecNo(int RecNo)
          returns the type of the RecNo'th Geometrie
per definition a shape file contains onlay one shape type
but null shapes are possible too!
 boolean hasDBaseFile()
          returns true if a dBase-file is associated to the shape-file
 boolean hasDBaseIndex(java.lang.String column)
          returns true if a column is indexed
 boolean hasRTreeIndex()
          returns true if an R-tree index is associated to the shape-file
 void initDBaseFile(FeatureCollection fc)
           
 boolean isUnique(java.lang.String property)
          is a property unique?
 void writeShape(FeatureCollection fc)
          writes a OGC FeatureCollection to a ESRI shape file.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dbf

private DBaseFile dbf

shpwks

private SHP2WKS shpwks

dBaseIndexes

private java.util.Hashtable dBaseIndexes

shp

private MainFile shp

rti

private RTree rti

url

private java.lang.String url

hasDBaseFile

private boolean hasDBaseFile

hasRTreeIndex

private boolean hasRTreeIndex
Constructor Detail

ShapeFile

public ShapeFile(java.lang.String url)
          throws java.io.IOException
constructor:
Construct a ShapeFile from a file name.


ShapeFile

public ShapeFile(java.lang.String url,
                 java.lang.String rwflag)
          throws java.io.IOException
constructor:
Construct a ShapeFile from a file name.

Method Detail

close

public void close()

hasDBaseIndex

public boolean hasDBaseIndex(java.lang.String column)
returns true if a column is indexed


hasDBaseFile

public boolean hasDBaseFile()
returns true if a dBase-file is associated to the shape-file


hasRTreeIndex

public boolean hasRTreeIndex()
returns true if an R-tree index is associated to the shape-file


getRecordNum

public int getRecordNum()
returns the number of records within a shape-file


getFileMBR

public GM_Envelope getFileMBR()
returns the minimum bounding rectangle of all geometries
within the shape-file


getMBRByRecNo

public GM_Envelope getMBRByRecNo(int recNo)
                          throws java.io.IOException
returns the minimum bound rectangle of RecNo'th Geometrie

Throws:
java.io.IOException

getFeatureByRecNo

public Feature getFeatureByRecNo(int RecNo)
                          throws java.io.IOException,
                                 GM_Exception,
                                 HasNoDBaseFileException,
                                 DBaseException
returns the RecNo'th entry of the shape file as Feature. This contains the geometry as well as the attributes stored into the dbase file.

Throws:
java.io.IOException
GM_Exception
HasNoDBaseFileException
DBaseException

getGM_ObjectByRecNo

public GM_Object getGM_ObjectByRecNo(int RecNo)
                              throws java.io.IOException,
                                     GM_Exception
returns RecNo'th Geometrie

Throws:
java.io.IOException
GM_Exception

getShapeTypeByRecNo

public int getShapeTypeByRecNo(int RecNo)
                        throws java.io.IOException
returns the type of the RecNo'th Geometrie
per definition a shape file contains onlay one shape type
but null shapes are possible too!

Throws:
java.io.IOException

getGeoNumbersByAttribute

public int[] getGeoNumbersByAttribute(java.lang.String column,
                                      java.lang.Comparable value)
                               throws java.io.IOException,
                                      DBaseIndexException
returns a int array that containts all the record numbers that matches the search operation

Throws:
java.io.IOException
DBaseIndexException

getGeoNumbersByRect

public int[] getGeoNumbersByRect(GM_Envelope r)
                          throws java.io.IOException
returns a ArrayList that contains all geomeries of the shape file
which mbr's are completly or partly within the rectangle r
only Points, MultiPoints, PolyLines and Polygons are handled

Throws:
java.io.IOException

isUnique

public boolean isUnique(java.lang.String property)
is a property unique?


getProperties

public java.lang.String[] getProperties()
                                 throws HasNoDBaseFileException,
                                        DBaseException
returns the properties (column headers) of the dBase-file
associated to the shape-file

Throws:
HasNoDBaseFileException
DBaseException

getDataTypes

public java.lang.String[] getDataTypes()
                                throws HasNoDBaseFileException,
                                       DBaseException
returns the datatype of each column of the database file
associated to the shape-file

Throws:
HasNoDBaseFileException
DBaseException

getDataLengths

public int[] getDataLengths()
                     throws HasNoDBaseFileException,
                            DBaseException
Returns:
Throws:
HasNoDBaseFileException
DBaseException

getDataTypes

public java.lang.String[] getDataTypes(java.lang.String[] fields)
                                throws HasNoDBaseFileException,
                                       DBaseException
returns the datatype of each column of the dBase associated
to the shape-file specified by fields

Throws:
HasNoDBaseFileException
DBaseException

getRow

public java.lang.Object[] getRow(int rowNo)
                          throws HasNoDBaseFileException,
                                 DBaseException
returns a row of the dBase-file
associated to the shape-file

Throws:
HasNoDBaseFileException
DBaseException

getGeometryCount

private int getGeometryCount(FeatureCollection fc)
returns the number of geometries within a feature collection

Parameters:
fc - : featurecollection which is checked for the number geomtries

getGeometryType

private int getGeometryType(FeatureCollection fc,
                            int n)
returns the type of the n'th feature in a featurecollection

Parameters:
fc - : FeatureCollection
n - : number of the feature which should be examined starts with 0

getFeatureAsGeometry

private GM_Object getFeatureAsGeometry(FeatureCollection fc,
                                       int n)
returns the n'th feature of a featurecollection as a GM_Object

Parameters:
fc - : FeatureCollection
n - : number of the feature which should be returned

getFeatureProperties

public FeatureProperty[] getFeatureProperties(FeatureCollection fc,
                                              int n)

initDBaseFile

public void initDBaseFile(FeatureCollection fc)
                   throws DBaseException
Throws:
DBaseException

writeShape

public void writeShape(FeatureCollection fc)
                throws java.lang.Exception
writes a OGC FeatureCollection to a ESRI shape file.
all features in the collection must have the same properties.

Throws:
java.lang.Exception