E00 (Esri ArcInfo Coverage/Esri ArcInfo Export) Feature Representation
This topic discusses how geometry and attributes are defined on features that represent the records in the various files within an E00 file.
There is a difference between the features that the E00 reader produces, and those formed from the automatically-generated workspace. This topic focuses primarily on the raw output from the E00 reader. Output Feature Types provides a description of the feature that the generated workspace creates.
There is also a difference between the reader features and the features that the writer expects to be given to write out. Most notably, the reader uses the name of the subfile as the feature type of each FME feature read from an E00 file, whereas the writer uses the FME feature type to determine the name of the E00 file to which the feature will be written. In addition, the reader defines certain attributes on features read from E00 files – such as, E00_FEAT_ROLE and E00_RECORD_NUM – which are unused by the E00 writer.
In addition to the generic FME feature attributes that FME Workbench adds to all features (see About Feature Type Attributes), this format also adds format-specific attributes (Format Attributes).
Geometry Composition
There are essentially four types of geometry defined in E00 files:
- arcs (lines)
- points
- polygons
- text
The geometries are formed by forming relations between certain standard subfiles and certain info files. The reader itself does not form these relations, but provides the attributes on the features allowing the workspace to form the relations. Workspaces that have been automatically generated to read from E00 files form the necessary joins between the subfiles and the info files, and are a good starting point when customizing workspaces to read E00 data. See Feature Types Output for a description of the features output.
The following table summarizes the geometry types and lists the additional attributes required to fully define the geometry, as is the case for text features.
Geometry Type |
Description |
Additional |
---|---|---|
e00_arc |
A string of geographic points that does not join or cross with itself. Features read from the ARC subfile contain arcs as their geometry. |
None |
e00_poly |
A solid area, with an outer boundary and zero or more holes. No features is given a polygon geometry by the reader. They must be formed by factories in the mapping file. |
None |
e00_point |
A simple (x,y) coordinate. The E00 reader creates points for features read from CNT and LAB standard subfiles. |
None |
e00_text |
Defines annotation text at a particular location, with a rotation measured in degrees counterclockwise from the horizontal and text height measured in ground units. The geometry portion of a text feature is the single (x,y) point that defines its position. |
e00_text_string e00_rotation e00_text_height |
e00_no_geom |
Feature has no associated geometry. |
None |
Feature Types
The E00 reader and the E00 writer view feature types differently:
- The features emitted from the E00 reader have a feature type dependent on the subfile or the info file from which the feature originated.
- The E00 writer uses a feature type based on the name of the E00 file.
The following table summarizes the feature types generated for each subfile. If a subfile name in the table below contains an asterisk, then it is really a pattern to match info file names. This convention is required because the names of info files vary from coverage to coverage.
The + symbol is used for an alternate asterisk for files containing two wildcard expressions. Therefore, the info file defining text attributes for the ERR annotation layer of the HYDR_SUR coverage is named HYDR_SUR.TATERR, and is referred to as *.TAT+ in the following table. References in the rest of the table row expand * to HYDR_SUR and + to ERR.
Subfile Name |
Reader Feature Type |
Geometry |
Additional Attributes |
---|---|---|---|
ARC |
e00_arcdef |
e00_arc |
E00_FEAT_ROLE = “e00_arc_def” |
CNT |
e00_centroid |
e00_point |
E00_FEAT_ROLE = e00_poly_cnt |
LAB |
e00_label |
e00_point |
E00_FEAT_ROLE = “e00_label” |
LOG |
e00_log |
e00_no_geom |
text = <whole line of text from log file> |
MTD |
e00_mtd |
e00_no_geom |
FME currently skips this subfile |
PAL |
e00_polyarc |
e00_no_geom |
E00_FEAT_ROLE = “e00_poly_arc” |
PRJ |
e00_projection |
e00_no_geom |
E00_FEAT_ROLE = “e00_proj” |
RPL |
e00_polyarc |
e00_no_geom |
E00_FEAT_ROLE = “e00_region_arc” (See Region Support for a description of region-related records.) |
RXP |
e00_regionxref |
e00_no_geom |
E00_FEAT_ROLE = “e00_region_xref” (See Region Support for a description of region-related records.) |
TOL |
e00_tolerance |
e00_no_geom |
E00_FEAT_ROLE = “e00_tolerance” (See Tolerance Values for a description of tolerance records.) |
TXT |
e00_text |
e00_text |
E00_FEAT_ROLE = “e00_text_def” (See Text Representation for information about text geometry. |
TX6 or TX7 |
e00_text |
e00_text |
E00_FEAT_ROLE = “e00_text_def” (See Text Representation for information about text geometry. |
|
e00_textarrow |
e00_arc |
E00_FEAT_ROLE = “e00_text_arrow” |
LNK |
LNK |
e00_point |
E00_FEAT_ROLE = “LNK” |
*.AAT |
*_arcattr |
e00_no_geom |
E00_FEAT_ROLE = “e00_arc_attr” |
*.BND |
*_bounds |
e00_no_geom |
E00_FEAT_ROLE = “e00_bounds” |
*.PAT |
*_polyattr |
e00_no_geom |
E00_FEAT_ROLE = “e00_poly_attr” |
|
*_pointattr |
e00_no_geom |
E00_FEAT_ROLE = “e00_point_attr” |
*.TIC |
*_tic |
e00_no_geom |
E00_FEAT_ROLE = “e00_tic_point” |
*.TAT+ |
*_+_textattr |
e00_no_geom |
E00_FEAT_ROLE = “e00_text_attr” |
*.XCODE |
*_textattr |
e00_no_geom |
E00_FEAT_ROLE = “e00_text_attr” |
*.+ |
*.+ |
e00_no_geom |
E00_FEAT_ROLE = “.+” |
In addition to the attributes shown in this table, all features read from an E00 file have an attribute named E00_RECORD_NUM, whose value corresponds to the position within the subfile of the record defining the feature. The record numbers start at 1 for each file, and are incremented for each record. This number provides the positional information required to define the relationships between certain geometries and their attributes. See Text Representation below for details about numbering of text features.
If features from a subfile have a particular type of geometry, then they will have an attribute named e00_type, whose value is the geometry type. For example, features from the ARC subfile will have line geometry attached, and will have an e00_type attribute with the value e00_arc.
Text Representation
The main geometry for text features is defined from records in the TX6, TX7, or TXT subfiles of the E00 coverage. This geometry consists of a text string, a location at which to draw the text, and optionally a string of points that form a curved line along which to place the characters. Additionally, text features from the TX6 or TX7 subfile might have arrows associated with them.
When these features are read into FME, the form changes slightly. If the Reader parameter Text Curves is set to Ignore, the start and end points of the text line are used to compute the average rotation of the characters, and the first point in the line becomes the text's position. The text feature's geometry is a point which defines the position, along with the following attributes to define the rest of the feature.
Attribute Name |
Description |
---|---|
e00_anno_name |
Name of annotation layer (subclass) containing text. |
e00_anno_id |
Sequence number of text features within its annotation layer. |
e00_rotation |
Rotation of text display, measured in degrees counterclockwise from horizontal. |
e00_text_height |
Height of one line of text, measured in ground units. |
e00_text_width |
Height of the line of text, measured in ground units. When features contain multiple lines of text, this will be the width of the longest line of the text. |
e00_tbox_height |
Height of entire text block, measured in ground units. If the text contains carriage return characters, and thus spans multiple lines, this number will be greater than the value for e00_text_height; otherwise the two will have the same value. |
e00_text_string |
String of text being displayed. |
e00_text_just |
(Optional) Justification of text feature relative to its baseline. This is an integer with a value between 1 and 12, inclusive. The default justification value will be “1”, indicating that the bottom of the text character is aligned with the first point of its defining arc. |
e00_num_coords |
(Optional) When writing TX6 or TX7 features, this attribute defines how many coordinates are to be used to define the text’s position. Its value is an integer between 1 and 3 (inclusive); if no e00_num_coords attribute is present, three coordinates will be used to represent the text location. |
e00_text_level |
(Optional) Numeric value representing the level of the text feature. |
e00_text_symbol |
(Optional) Numeric value representing the symbology ArcInfo will use to render the text. |
If the Reader parameter Text Curves is set to Fit, and the text feature is defined by more than two coordinates, FME computes a position and rotation of each character of text, generating a separate feature for each character. (No features are generated for whitespace characters.) In this case, all features corresponding to a given ArcInfo text element will have identical values for the e00_anno_nameattribute, and for the e00_anno_id attribute, and will also contain two additional attributes:
Attribute Name |
Description |
---|---|
e00_whole_text_string |
The original text string, from which this feature’s single character was taken. |
e00_pos_in_whole_text |
The position of this feature’s character within the original text string. The first character has a position of “1”, the second has a position of “2”, and so on. |
The contents of a TX6 or TX7 subfile within an E00 coverage may contain annotation in several different annotation layers (subclasses). Each feature belongs to one subclass, and this subclass’ name is contained in the feature's e00_anno_name attribute. The features within a given subclass are numbered as they are read and the e00_anno_id attribute is assigned the feature's sequence number, starting at 1, within the layer.
If there are no named annotation subclasses in the coverage – as is always the case with annotation from the TXT subfile – all text features will have an empty string (“”) as the value for their e00_anno_name attribute.
If the text has an associated arrow, a separate line feature is generated. This feature is type e00_textarrow, and contains the same values for its e00_anno_name and e00_anno_id attributes as the associated e00_text feature.
Every text feature defined in a TX6 or TX7 subfile of an E00 coverage has an associated set of user-defined attributes from a particular info file. Each record of the info file is returned from the E00 reader as a feature with the attributes defined on it. The features have an E00_FEAT_ROLE attribute of e00_text_attr and a feature type of <prefix>_<anno_name>_textattr, where <prefix> is an arbitrary prefix, and <anno_name> is the name of the annotation layer containing the feature. If the annotation layer is unnamed, the features defining the user attributes simply have a feature type of <prefix>_textattr.
The text geometries are associated with their user-defined attributes according to their position within the file. In other words, there is a one-to-one relationship between the text geometries and the features defining the user attribute. This relationship is formed by joining the text feature's e00_anno_name and e00_anno_id attributes with the attribute feature's e00_anno_name and E00_RECORD_NUM attributes.
Text features from TXT subfiles do not have named annotation subclasses, and consequently behave like text features from TX6 or TX7 files whose e00_anno_name contains an empty string.
Tolerance Values
E00 coverages contain a list of ten tolerance values, which have a specific meaning within ArcInfo. Each tolerance has a numerical identifier in the range 1..10, a state, and a floating point value.
The E00 reader generates ten features from the TOL subfile. Each feature contains the following attributes:
Attribute Name |
Description |
---|---|
id |
Original numerical id given to the tolerance. |
name |
A standard name given to the tolerance record. This name provides a description of the tolerance in question, and is really just a textual version of the above ID. 1=>FUZZY 2=>GENERALIZE 3=>NODE_MATCH 4=>DANGLE 5=>TIC_MATCH 6=>EDIT 7=>NODESNAP 8=>WEED 9=>GRAIN 10=>SNAP |
state |
The state of the tolerance. 1= tolerance has been verified 2 = tolerance has not been verified |
value |
The size of the tolerance. This is a floating point number, typically smaller than 1.0. |
Projections
An E00 coverage may contain a subfile named PRJ, that defines the geographic projection of the coordinates within the coverage. The E00 reader gathers all of the information in this subfile into a single feature of the type e00_projection. The attributes of this feature are listed above, in Feature Types.
The PRJ subfile contains a list of named parameters, followed by a list of apparently unnamed parameters. Any of the named parameters, whose names are recognized, are defined as standard attributes – datum, projection, units, etc. on the e00_projection feature. Named parameters, whose names are not recognized by the reader, are placed into the attributes unknown_parameter{}.name and unknown_parameter{}.value. Unnamed parameters are placed into the attribute list param{}.value.
The E00 attempts to interpret the coordinate system information from the projection feature. If the parameters in the E00 file are from a known coordinate system or projection, the coordinate system information will be passed to the rest of FME for normal processing. Otherwise a warning message will be logged in the log file. In either case, a feature describing the PRJ file will be passed-in to the FME feature stream.
Likewise, the E00 writer attempts to create a PRJ record from the coordinate system information attached to the features it is writing. The features must all belong to a single coordinate system for this to work. If no mapping can be found from the FME coordinate system to an E00 projection record, a warning will be written to the log file.