docs: def import_locations(self, data):
          """Parse geonames.org country database exports.
  
          ``import_locations()`` returns a list of :class:`trigpoints.Trigpoint`
          objects generated from the data exported by geonames.org_.
  
          It expects data files in the following tab separated format::
  
              2633441	Afon Wyre	Afon Wyre	River Wayrai,River Wyrai,Wyre	52.3166667	-4.1666667	H	STM	GB	GB	00				0		-9999	Europe/London	1994-01-13
              2633442	Wyre	Wyre	Viera	59.1166667	-2.9666667	T	ISL	GB	GB	V9				0		1	Europe/London	2004-09-24
              2633443	Wraysbury	Wraysbury	Wyrardisbury	51.45	-0.55	P	PPL	GB		P9				0		28	Europe/London	2006-08-21
  
          Files containing the data in this format can be downloaded from the
          geonames.org_ site in their `database export page`_.
  
          Files downloaded from the geonames site when processed by
          ``import_locations()`` will return ``list`` objects of the following
          style::
  
              [Location(2633441, "Afon Wyre", "Afon Wyre",
                        ['River Wayrai', 'River Wyrai', 'Wyre'],
                        52.3166667, -4.1666667, "H", "STM", "GB", ['GB'], "00",
                        None, None, None, 0, None, -9999, "Europe/London",
                        datetime.date(1994, 1, 13)),
               Location(2633442, "Wyre", "Wyre", ['Viera'], 59.1166667,
                        -2.9666667, "T", "ISL", "GB", ['GB'], "V9", None, None,
                        None, 0, None, 1, "Europe/London",
                        datetime.date(2004, 9, 24)),
               Location(2633443, "Wraysbury", "Wraysbury", ['Wyrardisbury'],
                        51.45, -0.55, "P", "PPL", "GB", None, "P9", None, None,
                        None, 0, None, 28, "Europe/London",
                        datetime.date(2006, 8, 21))]
  
          Args:
              data (iter): geonames.org locations data to read
  
          Returns:
              list: geonames.org identifiers with :class:`Location` objects
  
          Raises:
              FileFormatError: Unknown file format
  
          .. _geonames.org: http://www.geonames.org/
          .. _database export page: http://download.geonames.org/export/dump/
          """
          self._data = data
          field_names = ('geonameid', 'name', 'asciiname', 'alt_names',
                         'latitude', 'longitude', 'feature_class',
                         'feature_code', 'country', 'alt_country', 'admin1',
                         'admin2', 'admin3', 'admin4', 'population', 'altitude',
                         'gtopo30', 'tzname', 'modified_date')
          comma_split = lambda s: s.split(',')
          date_parse = lambda s: datetime.date(*map(int, s.split('-')))
          or_none = lambda x, s: x(s) if s else None
          str_or_none = lambda s: or_none(str, s)
          float_or_none = lambda s: or_none(float, s)
          int_or_none = lambda s: or_none(int, s)
          tz_parse = lambda s: self.timezones[s][0] if self.timezones else None
          field_parsers = (int_or_none, str_or_none, str_or_none, comma_split,
                           float_or_none, float_or_none, str_or_none,
                           str_or_none, str_or_none, comma_split, str_or_none,
                           str_or_none, str_or_none, str_or_none, int_or_none,
                           int_or_none, int_or_none, tz_parse, date_parse)
          data = utils.prepare_csv_read(data, field_names, delimiter=r"	")
          for row in data:
              try:
                  for name, parser in zip(field_names, field_parsers):
                      row[name] = parser(row[name])
              except ValueError:
                  raise utils.FileFormatError('geonames.org')
              self.append(Location(**row))