|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.geotools.data.mif.MIFFile
MIFFile class allows sequential reading and writing of Features in MapInfo MIF/MID text file format with a FeatureReader and FeatureWriter.
This class has been developed starting from MapInfoDataSource.
Open issues:
| Field Summary | |
static int |
MAX_STRING_LEN
|
| Constructor Summary | |
MIFFile(java.lang.String path,
FeatureType featureType,
java.util.HashMap params)
This constructor creates a a new MIF/MID file given schema and path. |
|
MIFFile(java.lang.String path,
java.util.Map params)
This constructor opens an existing MIF/MID file, and creates the corresponding schema from the file header Allowed parameters in params Map: "namespace" = URI of the namespace prefix for FeatureTypes PARAM_GEOMFACTORY = GeometryFactory object to be used for creating geometries; alternatively, use PARAM_SRID; PARAM_SRID = SRID to be used for creating geometries; PARAM_FIELDCASE = field names tranformation: "upper" to uppercase | "lower" to lowercase | "" none; PARAM_GEOMNAME = <String>, name of the geometry field (defaults to "the_geom"); PARAM_GEOMTYPE = geometry type handling: "untyped" uses Geometry class | "typed" force geometry to the type of the first valid geometry found in file | "multi" like typed, but forces LineString to MultilineString and Polygon to MultiPolygon; | "Point" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon" | "Text" forces Geometry to Point and creates a MIF_TEXT String field in the schema Header clauses values can also be set in the params Map, but they might be overridden by values read from MIF header. |
|
| Method Summary | |
protected static void |
copyFileAndDelete(java.io.File in,
java.io.File out,
boolean deleteIn)
Utility function for copying or moving files |
FeatureReader |
getFeatureReader()
Opens the MIF file for input and returns a FeatureReader for accessing the features. |
FeatureWriter |
getFeatureWriter()
Returns a FeatureWriter for writing features to the MIF/MID file. |
protected static java.io.File |
getFileHandler(java.io.File path,
java.lang.String fileName,
java.lang.String ext,
boolean mustExist)
Utility function for initFiles - returns a File given a parent path, the file name without extension and the extension Tests different extension case for case-sensitive filesystems |
java.lang.String |
getHeaderClause(java.lang.String clause)
Gets the value for an header clause |
protected static java.lang.String |
getMifName(java.lang.String fName)
Returns the name of a .mif file without extension |
FeatureType |
getSchema()
Returns the MIF schema |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static final int MAX_STRING_LEN
| Constructor Detail |
public MIFFile(java.lang.String path,
java.util.Map params)
throws java.io.IOException
This constructor opens an existing MIF/MID file, and creates the corresponding schema from the file header
Allowed parameters in params Map:
Header clauses values can also be set in the params Map, but they might be overridden by values read from MIF header.
Basic usage:
HashMap params = new HashMap();
// params.put(MIFFile.PARAM_GEOMFACTORY, new GeometryFactory(new PrecisionModel(PrecisionModel.FLOATING_SINGLE), SRID));
params.put(MIFFile.PARAM_SRID, new Integer(SRID));
params.put(MIFFile.PARAM_FIELDCASE, "upper");
params.put(MIFFile.PARAM_GEOMNAME, "GEOM");
params.put(MIFFile.PARAM_GEOMTYPE, "typed");
MIFFile mf = new MIFFile("c:/some_path/file.mif",params);
FeatureType ft = mf.getSchema();
FeatureReader fr = mf.getFeatureReader();
while (fr.hasNext()) {
Feature in = fr.next();
doSomethingWithFeature(in);
}
fr.close(); // closes file resources
path - Full pathName of the mif file, can be specified without the
.mif extensionparams - Parameters map
java.io.IOException - If the specified mif file could not be opened
public MIFFile(java.lang.String path,
FeatureType featureType,
java.util.HashMap params)
throws java.io.IOException,
SchemaException
This constructor creates a a new MIF/MID file given schema and path. If a .mif/.mid file pair already exists, it will be overwritten.
Basic usage:
HashMap params = new HashMap();
params.put(MIFFile.MIFDataStore.HCLAUSE_COORDSYS, "Nonearth \"m\"");
MIFFile mf = new MIFFile("c:/some_path/", ft, params);
FeatureWriter fw = mf.getFeatureWriter();
while(...) {
Feature f = fw.next();
f.setAttribute(...,...);
fw.write();
}
fw.close();
path - Full path & file name of the MIF file to create, can be
specified without the .mif extensionfeatureType - params - Parameter map
java.io.IOException - Couldn't open the specified mif file for writing
header
SchemaException - Error setting the given FeatureType as the MIF
schema| Method Detail |
public java.lang.String getHeaderClause(java.lang.String clause)
clause -
public FeatureReader getFeatureReader()
throws java.io.IOException
Opens the MIF file for input and returns a FeatureReader for accessing the features.
TODO Concurrent file access is still not handled. MUST LOCK FILE and return an error if another FeatureReader is open - Handle concurrent access with synchronized(mif) / or Filesystem locking is enough?
java.io.IOException
public FeatureWriter getFeatureWriter()
throws java.io.IOException
java.io.IOException
protected static java.lang.String getMifName(java.lang.String fName)
throws java.io.FileNotFoundException
fName - The file name, possibly with .mif extension
java.io.FileNotFoundException - if extension was other than "mif"
protected static java.io.File getFileHandler(java.io.File path,
java.lang.String fileName,
java.lang.String ext,
boolean mustExist)
throws java.io.FileNotFoundException
path - Directory containing the filefileName - Name of the file with no extensionext - extension with trailing "."mustExist - If true, raises an excaption if the file does not exist
java.io.FileNotFoundExceptionpublic FeatureType getSchema()
protected static void copyFileAndDelete(java.io.File in,
java.io.File out,
boolean deleteIn)
throws java.io.IOException
in - Source fileout - Destination filedeleteIn - If true, source will be deleted upon successfull copy
java.io.IOException
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||