Product: MapMarker
Version: 7.0 plus
Platform: Not Platform Related
Category: Documentation
Summary:
Summary of the tabbedAddress field in the MapMarker 7.0 C API.
Question:
MapMarker7.0 contains an ANSI C API that allows for the implementation of native C programs that perform geocoding. Within this C API, there exists a specific C structure named CANDIDATE_ADDRESS, which acts as an aggregate for a series of fields. One of these fields within the CANDIDATE_ADDRESS structure is named tabbedAddress. This document serves to describe the syntax and semantics of the tabbedAddress field as it pertains to version 7.0 of MapMarker and below.
The tabbedAddress field, of the CANDIDATE_ADDRESS structure within the MapMarker 7.0 ANSI C API, is literally an array of characters whose maximum length is 256. During runtime, this field is populated with a tab (ASCII 9) delimited series of character sequences, such that these character sequences serve to break into components the "geocoded" address of the associated candidate. Specifically, the "geocoded" address is simply the address at which the found candidate exists. To this end, the tabbedAddress field has the following syntax and semantics:
House Number The house number including any prefix or suffix; e.g. "10A" as in "10A Main St."
<tab>
Prefix Directional Directional that precedes the name; e.g. "West" as in "West Tower St."
<tab>
Prefix Type A street type preceding the name; e.g. "Ave" as in "Avenue B"
<tab>
Street Name The core name of the street; e.g. "B" as in "Avenue B"
<tab>
Postfix Type Street type that follows the name; e.g. "St" as in "Main St."
<tab>
Postfix Directional Directional that follows the name; e.g. "West" as in "Front St West"
<tab>
Unit Type Things like APT, SUITE, etc
<tab>
Unit Value Things like the apt or suite number
<tab>
CAVEATS:
Depending on the address that was originally submitted by a C program for geocoding, the above syntax and semantics of the tabbedAddress field may change. In this type of situation, the tabbedAddress field will then take the following form:
House Number <tab> Full Street Name <tab> <tab> <tab> <tab> <tab> <tab> <tab>
where
House Number = The house number including any prefix or suffix.
Full Street Name = The full name of the street
In such cases, all tab (ASCII 9) delimiters are present, however only the first two (2) components have values.
This second format is needed to handle certain special case internal street names. In these cases, the componentized information found in the internal candidate record is not used. Flags exist in the record which indicate that a saved non-componentized version of the street should be used instead. The first component remains to be the House Number, but the second component has changed to be this non-componentized street name, complete with all its parts. A true example of this problem can be seen when geocoding the following address:
20 WILLIAM PENN RD. WARREN NJ 07059
Due to the problem, the tabbedAddress field is set as follows:
20 <tab> WILLIAM PENNSYLVANIA <tab> <tab> <tab> <tab> <tab> <tab> <tab>
However it should be the following (which would match the name found in the street field of the ADDRESS structure of the CANDIDATE_ADDRESS structure):
20 <tab> William Penn Rd <tab> <tab> <tab> <tab> <tab> <tab> <tab>
Answer:
In MapMarker 7.2 plus, this problem should be fixed, and in addition, the second (2nd) form of the tabbedAddress field will have the following syntax:
20 <tab> William Penn Rd <tab>
From the problem notes:
The tabbed address field should not really be used unless absolutely necessary. Basically, the tabbed address field is not documented for a reason. It is a "use at your own risk" item.
The correct street name is found in the ADDRESS structure in the CANDIDATE_ADDRESS structure. Internally, there is a field and flag for something called original name. When the data processing changes a name for certain reason, the original name is saved in a field and the flag set.
The William Penn address is an example of such an address. The original name is "William Penn Rd"; the candidate street name for this record is William Pennsylvania. The engine knows to match to the original name and it is written to the ADDRESS structure in the output candidate.
However, there is different handling for the tabbed address. The original name is not written into the tabbed address because it may contain components like a pre or post dir in it so it can't properly be separated out by tabs. The structure containing the rest of the street information has fields for these items.
This is fixed in MM 7.2. Also, there will be new alternate format for "original name" cases. The format will be:
House Number <tab> Full street name <tab>.
This format can be distinguished from the normal format because there will only be two tabs.
--------------------
Attached is a VB project that includes the new MapMarker 7.3 DLL in the program directory. It connects to MapMarker, geocodes the 20 William Penn Rd address, and displays a message box with the tabbed address -- with tab characters replaced by pipes { '|' } so that the tab locations are clearer. [To run it successfully, change the geodictionary path in the dialog box to point to the data directory on the computer on which the test is being run.]

Last Modified: 07/10/2002 01:17:34 PM
|