Jan. 31, 2011
Problem: North American geospatial databases have historically used the FIPS 10-4 2-letter code standard for identifying countries.
The standard was developed by the National Institute of Standards and Technology (NIST) as part of the Federal Information Processing Standard (FIPS) and adopted in April, 1995,
replacing its predecessor FIPS 10-3, adopted September 1984.
The International Standards Organization developed the ISO 3166-1 2-letter code standard for identifying countries and territories in the world, and
adopted in 1997,
replacing its predecessor ISO 3166 which orginates back to 1974. While both standards use 2 alphabetic letter codes, the codes between the two standards differ significantly,
where approximately only 40% of the codes are identifical.
These codes are widely used in foreign and international geospatial databases for identifying the country location of a geocoded entity.
Beyond differences in codes, the standard applies only to countries and territories recognized by the UN. Breakaway regions not recognized by the UN or conversely by the USA
have codes in one but not the other standard. In other cases, the FIPS standard gave separate codes to individual island territories of the US an France,
while the ISO standard uses a single code for the US and one for France.
Examples of conflicting FIPS vs. ISO country code designators in use:
Gaza Strip (GZ) and West Bank (WE) - are combined into the Palestine Territory (PS)
Ascension Island (AC) - is part of combined Saint Helena, Ascension, and Tristan da Cunha (SH).
Examples of FIPS vs. ISO name differences:
United Kingdom and Northern Ireland: UK vs. GB
The FIPS 10-4 standard was withdrawn by the NIST on September 2. 2008.
The use of FIPS 10-4 codes in government databases as a primary key must be
sunsetted by Dec. 31, 2012,
and replaced with the ISO 3166-1 codes.
In addition to governmental databases, FIPS 10-4 country codes have been used extensively throughout institutional, private and non-profit data collecting organizations in North America.
Solution: This problem has a straight forward solution. A script is used to convert the FIPS 10-4 country codes to ISO 3166-1 codes as follows:
- Top-Level entries. If the table entry is for the country itself (i.e., data on the country), then
- If a ISO 3166-1 equivalent exists, the code is directly replaced;
- Otherwise (no equivalent code), the entry is flagged and manually inspected or programmatically merged when inclusive of another ISO 3166-1 country code.
- Subordinate entries. If the table entry is for an item within a country (i.e., city, airport, etc), then
- The FIPS 10-4 country code is replaced with the equivalent or inclusive ISO 3166-1 code if it exists;
- Otherwise, the entry is flagged and manually inspected.
Download: See our FIPS 10-4 to ISO 3166-1 table (FREE - Public Domain).