OpenTREP Logo  0.07.4
C++ Open Travel Request Parsing Library
Location.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <sstream>
6 #include <string>
7 #include <list>
8 // OpenTrep
10 #include <opentrep/IATAType.hpp>
11 #include <opentrep/Location.hpp>
12 #include <opentrep/CityDetails.hpp>
13 
14 namespace OPENTREP {
15 
16  // //////////////////////////////////////////////////////////////////////
18  _key (IATACode_T (""), IATAType::LAST_VALUE, 0),
19  _icaoCode (ICAOCode_T ("")), _faaCode (FAACode_T ("")),
20  _unLOCodeList(), _uicCodeList(),
21  _commonName (CommonName_T ("NotAvailable")),
22  _asciiName (ASCIIName_T ("NotAvailable")),
23  _altNameShortListString (AltNameShortListString_T ("NotAvailable")),
24  _tvlPORListString (TvlPORListString_T ("")),
25  _envelopeID (0),
26  _dateFrom (1970, 01, 01), _dateEnd (2999, 12, 31), _comment (""),
27  _stateCode (StateCode_T ("NA")), _countryCode (CountryCode_T ("NA")),
28  _altCountryCode (AltCountryCode_T ("")), _countryName (CountryName_T ("NA")),
29  _wac (0), _wacName (WACName_T ("")),
30  _currencyCode ("ZZZ"),
31  _continentCode (ContinentCode_T ("NA")),
32  _continentName (ContinentName_T ("NotAvailable")),
33  _latitude (0), _longitude (0),
34  _featClass (FeatureClass_T ("Z")), _featCode (FeatureCode_T ("ZZZZ")),
35  _admin1Code (Admin1Code_T ("")),
36  _admin1UtfName (Admin1UTFName_T ("")),
37  _admin1AsciiName (Admin1ASCIIName_T ("")),
38  _admin2Code (Admin2Code_T ("")),
39  _admin2UtfName (Admin2UTFName_T ("")),
40  _admin2AsciiName (Admin2ASCIIName_T ("")),
41  _admin3Code (Admin3Code_T ("Z")), _admin4Code (Admin4Code_T ("")),
42  _population (0), _elevation (0), _gTopo30 (0),
43  _timeZone (TimeZone_T ("NA")),
44  _gmtOffset (0), _dstOffset (0), _rawOffset (0),
45  _modificationDate (2000, 01, 01),
46  _wikiLink (WikiLink_T ("http://en.wikipedia.org")),
47  _pageRank (K_DEFAULT_PAGE_RANK),
48  _originalKeywords ("NA"), _correctedKeywords ("NA"),
49  _percentage (0), _editDistance (0), _allowableEditDistance (0),
50  _rawDataString ("NA"),
51  _itLanguageCodeNum (Language::LAST_VALUE),
52  _itLanguageCode (LanguageCode_T ("")) {
53  }
54 
55  // //////////////////////////////////////////////////////////////////////
56  Location::Location (const Location& iLocation) :
57  _key (iLocation._key),
58  _icaoCode (iLocation._icaoCode), _faaCode (iLocation._faaCode),
59  _unLOCodeList (iLocation._unLOCodeList),
60  _uicCodeList (iLocation._uicCodeList),
61  _commonName (iLocation._commonName), _asciiName (iLocation._asciiName),
62  _altNameShortListString (iLocation._altNameShortListString),
63  _tvlPORListString (iLocation._tvlPORListString),
64  _envelopeID (iLocation.getEnvelopeID()),
65  _dateFrom (iLocation.getDateFrom()), _dateEnd (iLocation.getDateEnd()),
66  _comment (iLocation.getComment()),
67  _cityList (iLocation._cityList),
68  _stateCode (iLocation._stateCode), _countryCode (iLocation._countryCode),
69  _altCountryCode (iLocation._altCountryCode),
70  _countryName (iLocation._countryName),
71  _wac (iLocation._wac), _wacName (iLocation._wacName),
72  _currencyCode (iLocation._currencyCode),
73  _continentCode (iLocation._continentCode),
74  _continentName (iLocation._continentName),
75  _latitude (iLocation._latitude), _longitude (iLocation._longitude),
76  _featClass (iLocation._featClass), _featCode (iLocation._featCode),
77  _admin1Code (iLocation._admin1Code),
78  _admin1UtfName (iLocation._admin1UtfName),
79  _admin1AsciiName (iLocation._admin1AsciiName),
80  _admin2Code (iLocation._admin2Code),
81  _admin2UtfName (iLocation._admin2UtfName),
82  _admin2AsciiName (iLocation._admin2AsciiName),
83  _admin3Code (iLocation._admin3Code), _admin4Code (iLocation._admin4Code),
84  _population (iLocation._population), _elevation (iLocation._elevation),
85  _gTopo30 (iLocation._gTopo30),
86  _timeZone (iLocation._timeZone), _gmtOffset (iLocation._gmtOffset),
87  _dstOffset (iLocation._dstOffset), _rawOffset (iLocation._rawOffset),
88  _modificationDate (iLocation._modificationDate),
89  _wikiLink (iLocation._wikiLink), _pageRank (iLocation._pageRank),
90  _nameMatrix (iLocation._nameMatrix),
91  _originalKeywords (iLocation._originalKeywords),
92  _correctedKeywords (iLocation._correctedKeywords),
93  _percentage (iLocation._percentage),
94  _editDistance (iLocation._editDistance),
95  _allowableEditDistance (iLocation._allowableEditDistance),
96  _extraLocationList (iLocation._extraLocationList),
97  _alternateLocationList (iLocation._alternateLocationList),
98  _rawDataString (iLocation._rawDataString),
99  _itLanguageCodeNum (iLocation._itLanguageCodeNum),
100  _itLanguageCode (LanguageCode_T ("")) {
101  }
102 
103  // //////////////////////////////////////////////////////////////////////
104  Location::Location (const IATACode_T& iIataCode, const IATAType& iIataType,
105  const GeonamesID_T& iGeonamesID,
106  const ICAOCode_T& iIcaoCode, const FAACode_T& iFaaCode,
107  const CommonName_T& iCommonName,
108  const ASCIIName_T& iASCIIName,
109  const EnvelopeID_T& iEnvelopeID,
110  const Date_T& iDateFrom, const Date_T& iDateEnd,
111  const Comment_T& iComment,
112  const CityDetailsList_T& iCityDetailsList,
113  const StateCode_T& iStateCode,
114  const CountryCode_T& iCountryCode,
115  const AltCountryCode_T& iAltCountryCode,
116  const CountryName_T& iCountryName,
117  const WAC_T& iWAC, const WACName_T& iWACName,
118  const CurrencyCode_T& iCurrencyCode,
119  const ContinentName_T& iContinentName,
120  const Latitude_T& iLatitude, const Longitude_T& iLongitude,
121  const FeatureClass_T& iFeatureClass,
122  const FeatureCode_T& iFeatureCode,
123  const Admin1Code_T& iAdmin1Code,
124  const Admin1UTFName_T& iAdmin1UtfName,
125  const Admin1ASCIIName_T& iAdmin1AsciiName,
126  const Admin2Code_T& iAdmin2Code,
127  const Admin2UTFName_T& iAdmin2UtfName,
128  const Admin2ASCIIName_T& iAdmin2AsciiName,
129  const Admin3Code_T& iAdmin3Code,
130  const Admin4Code_T& iAdmin4Code,
131  const Population_T& iPopulation,
132  const Elevation_T& iElevation, const GTopo30_T& iGTopo30,
133  const TimeZone_T& iTimeZone,
134  const GMTOffset_T& iGMTOffset,
135  const DSTOffset_T& iDSTOffset,
136  const RawOffset_T& iRawOffset,
137  const Date_T& iModDate,
138  const TvlPORListString_T& iTvlPORListString,
139  const WikiLink_T& iWikiLink, const PageRank_T& iPageRank,
140  const std::string& iOriginalKeywords,
141  const std::string& iCorrectedKeywords,
142  const MatchingPercentage_T& iPercentage,
143  const NbOfErrors_T& iEditDistance,
144  const NbOfErrors_T& iAllowableEditDistance,
145  const RawDataString_T& iRawDataString) :
146  _key (iIataCode, iIataType, iGeonamesID),
147  _icaoCode (iIcaoCode), _faaCode (iFaaCode),
148  _commonName (iCommonName),_asciiName (iASCIIName),
149  _altNameShortListString (AltNameShortListString_T ("NotAvailable")),
150  _tvlPORListString (iTvlPORListString),
151  _envelopeID (iEnvelopeID),
152  _dateFrom (iDateFrom), _dateEnd (iDateEnd),
153  _comment (iComment),
154  _cityList (iCityDetailsList),
155  _stateCode (iStateCode),
156  _countryCode (iCountryCode), _altCountryCode (iAltCountryCode),
157  _countryName (iCountryName),
158  _wac (iWAC), _wacName (iWACName),
159  _currencyCode (iCurrencyCode),
160  _continentCode ("NA"), _continentName (iContinentName),
161  _latitude (iLatitude), _longitude (iLongitude),
162  _featClass (iFeatureClass), _featCode (iFeatureCode),
163  _admin1Code (iAdmin1Code),
164  _admin1UtfName (Admin1UTFName_T (iAdmin1UtfName)),
165  _admin1AsciiName (Admin1ASCIIName_T (iAdmin1AsciiName)),
166  _admin2Code (iAdmin2Code),
167  _admin2UtfName (Admin2UTFName_T (iAdmin2UtfName)),
168  _admin2AsciiName (Admin2ASCIIName_T (iAdmin2AsciiName)),
169  _admin3Code (iAdmin3Code), _admin4Code (iAdmin4Code),
170  _population (iPopulation), _elevation (iElevation), _gTopo30 (iGTopo30),
171  _timeZone (iTimeZone),
172  _gmtOffset (iGMTOffset), _dstOffset (iDSTOffset), _rawOffset (iRawOffset),
173  _modificationDate (iModDate),
174  _wikiLink (iWikiLink), _pageRank (iPageRank),
175  _originalKeywords (iOriginalKeywords),
176  _correctedKeywords (iCorrectedKeywords),
177  _percentage (iPercentage), _editDistance (iEditDistance),
178  _allowableEditDistance (iAllowableEditDistance),
179  _rawDataString (iRawDataString),
180  _itLanguageCodeNum (Language::LAST_VALUE),
181  _itLanguageCode (LanguageCode_T ("")) {
182  }
183 
184  // //////////////////////////////////////////////////////////////////////
186  }
187 
188  // //////////////////////////////////////////////////////////////////////
189  void Location::toStream (std::ostream& ioOut) const {
190  ioOut << toString();
191  }
192 
193  // //////////////////////////////////////////////////////////////////////
194  void Location::fromStream (std::istream&) {
195  }
196 
197  // //////////////////////////////////////////////////////////////////////
198  std::string Location::describeShortKey() const {
199  std::ostringstream oStr;
200  oStr << _key.describe();
201  return oStr.str();
202  }
203 
204  // //////////////////////////////////////////////////////////////////////
205  std::string Location::describeKey() const {
206  return describeShortKey();
207  }
208 
209  // //////////////////////////////////////////////////////////////////////
210  std::string Location::toBasicString() const {
211  std::ostringstream oStr;
212  oStr << describeShortKey();
213 
214  oStr << ", " << _pageRank << "%"
215  << ", " << _commonName << ", " << _asciiName
216  << ", " << _icaoCode << ", " << _faaCode
217  << ", " << describeUNLOCodeList()
218  << ", " << describeUICCodeList()
219  << ", " << _envelopeID
220  << ", " << _dateFrom << ", " << _dateEnd << ", " << _comment
221  << ", " << describeCityDetailsList()
222  << ", " << _stateCode
223  << ", " << _countryCode << ", " << _altCountryCode
224  << ", " << _countryName
225  << ", " << _wac << ", " << _wacName
226  << ", " << _currencyCode
227  << ", " << _continentCode << ", " << _continentName
228  << ", " << _latitude << ", " << _longitude
229  << ", " << _featClass << ", " << _featCode
230  << ", " << _admin1Code
231  << ", " << _admin1UtfName << ", " << _admin1AsciiName
232  << ", " << _admin2Code
233  << ", " << _admin2UtfName << ", " << _admin2AsciiName
234  << ", " << _admin3Code << ", " << _admin4Code
235  << ", " << _population << ", " << _elevation << ", " << _gTopo30
236  << ", " << _timeZone
237  << ", " << _gmtOffset << ", " << _dstOffset << ", " << _rawOffset
238  << ", " << _modificationDate
239  << ", " << _tvlPORListString
240  << ", " << _wikiLink
241  << ", " << _originalKeywords << ", " << _correctedKeywords
242  << ", " << _percentage << "%"
243  << ", " << _editDistance << ", " << _allowableEditDistance;
244 
245  return oStr.str();
246  }
247 
248  // //////////////////////////////////////////////////////////////////////
249  std::string Location::toShortString() const {
250  std::ostringstream oStr;
251  oStr << toBasicString();
252 
253  if (_extraLocationList.empty() == false) {
254  oStr << " with " << _extraLocationList.size() << " extra match(es)";
255  }
256 
257  if (_alternateLocationList.empty() == false) {
258  oStr << " with " << _alternateLocationList.size()
259  << " alternate match(es)";
260  }
261 
262  return oStr.str();
263  }
264 
265  // //////////////////////////////////////////////////////////////////////
266  std::string Location::toSingleLocationString() const {
267  std::ostringstream oStr;
268  oStr << toBasicString();
269  return oStr.str();
270  }
271 
272  // //////////////////////////////////////////////////////////////////////
273  std::string Location::toString() const {
274  std::ostringstream oStr;
275  oStr << toSingleLocationString();
276  oStr << "; name matrix {" << _nameMatrix.describe() << "}";
277 
278  if (_extraLocationList.empty() == false) {
279  oStr << "; Extra matches: {";
280  unsigned short idx = 0;
281  for (LocationList_T::const_iterator itLoc = _extraLocationList.begin();
282  itLoc != _extraLocationList.end(); ++itLoc, ++idx) {
283  if (idx != 0) {
284  oStr << ". ";
285  }
286  const Location& lExtraLocation = *itLoc;
287  oStr << lExtraLocation.toShortString();
288  }
289  oStr << "}";
290  }
291 
292  if (_alternateLocationList.empty() == false) {
293  oStr << "; Alternate matches: {";
294  unsigned short idx = 0;
295  for (LocationList_T::const_iterator itLoc =
296  _alternateLocationList.begin();
297  itLoc != _alternateLocationList.end(); ++itLoc, ++idx) {
298  if (idx != 0) {
299  oStr << ". ";
300  }
301  const Location& lAlternateLocation = *itLoc;
302  oStr << lAlternateLocation.toShortString();
303  }
304  oStr << "}";
305  }
306 
307  return oStr.str();
308  }
309 
310  // ////////////////////////////////////////////////////////////////////
314  }
315 
316  // ////////////////////////////////////////////////////////////////////
317  std::string Location::describeUNLOCodeList() const {
318  std::ostringstream oStr;
319  unsigned short idx = 0;
320  for (UNLOCodeList_T::const_iterator itUNLOCode = _unLOCodeList.begin();
321  itUNLOCode != _unLOCodeList.end(); ++itUNLOCode, ++idx) {
322  if (idx != 0) {
323  oStr << ",";
324  }
325  const UNLOCode_T& lUNLOCode = *itUNLOCode;
326  oStr << lUNLOCode;
327  }
328 
329  return oStr.str();
330  }
331 
332  // ////////////////////////////////////////////////////////////////////
333  std::string Location::describeUICCodeList() const {
334  std::ostringstream oStr;
335  unsigned short idx = 0;
336  for (UICCodeList_T::const_iterator itUICCode = _uicCodeList.begin();
337  itUICCode != _uicCodeList.end(); ++itUICCode, ++idx) {
338  if (idx != 0) {
339  oStr << ",";
340  }
341  const UICCode_T& lUICCode = *itUICCode;
342  oStr << lUICCode;
343  }
344 
345  return oStr.str();
346  }
347 
348  // ////////////////////////////////////////////////////////////////////
349  std::string Location::describeCityDetailsList() const {
350  std::ostringstream oStr;
351  unsigned short idx = 0;
352  for (CityDetailsList_T::const_iterator itCity = _cityList.begin();
353  itCity != _cityList.end(); ++itCity, ++idx) {
354  if (idx != 0) {
355  oStr << ",";
356  }
357  const CityDetails& lCityDetails = *itCity;
358  oStr << lCityDetails;
359  }
360 
361  return oStr.str();
362  }
363 
364  // ////////////////////////////////////////////////////////////////////
366  const CityDetails lCityDetails (IATACode_T (_itCityIataCode),
370  _cityList.push_back (lCityDetails);
371  }
372 
373  // ////////////////////////////////////////////////////////////////////
375  std::ostringstream oStr;
376  unsigned short idx = 0;
377  for (AltNameShortList_T::const_iterator itName = _itAltNameShortList.begin();
378  itName != _itAltNameShortList.end(); ++itName, ++idx) {
379  if (idx != 0) {
380  oStr << ",";
381  }
382  const AltNameShortListString_T& lAlternateLocation = *itName;
383  oStr << lAlternateLocation;
384  }
385 
386  // Store the short list of alternative names
387  const std::string lAltNameShortListString (oStr.str());
388  setAltNameShortListString (lAltNameShortListString);
389  }
390 
391  // ////////////////////////////////////////////////////////////////////
393  std::ostringstream oStr;
394  unsigned short idx = 0;
395  for (IATACodeList_T::const_iterator itCode = _itTvlPORList.begin();
396  itCode != _itTvlPORList.end(); ++itCode, ++idx) {
397  if (idx != 0) {
398  oStr << ",";
399  }
400  const IATACode_T& lTvlPORCode = *itCode;
401  oStr << lTvlPORCode;
402  }
403 
404  // Store the list of IATA codes of the travel-related POR
405  const std::string lTvlPORCodeList (oStr.str());
406  setTvlPORListString (lTvlPORCodeList);
407  }
408 
409  // ////////////////////////////////////////////////////////////////////
411  FeatureNameList_T oList;
412 
413  // Extract the first two/three characters of the feature code (e.g.,
414  // 'MN' for 'MNCU', 'PPL' for 'PPLA'/'PPLC' or 'ADM' for 'ADM1'/'ADM2')
415  const std::string l2CharFeatCode = iFeatureCode.substr (0, 2);
416  const std::string l3CharFeatCode = iFeatureCode.substr (0, 3);
417 
418  if (iFeatureCode == "AIRP" || iFeatureCode == "AIRF"
419  || iFeatureCode == "AIRQ") {
420  oList.push_back (FeatureName_T ("airport"));
421  oList.push_back (FeatureName_T ("apt"));
422  oList.push_back (FeatureName_T ("airdrome"));
423  oList.push_back (FeatureName_T ("aerodrome"));
424  oList.push_back (FeatureName_T ("airfield"));
425  oList.push_back (FeatureName_T ("air field"));
426  oList.push_back (FeatureName_T ("field"));
427  oList.push_back (FeatureName_T ("airstrip"));
428  oList.push_back (FeatureName_T ("air strip"));
429  oList.push_back (FeatureName_T ("strip"));
430 
431  } else if (iFeatureCode == "AIRB") {
432  oList.push_back (FeatureName_T ("airport"));
433  oList.push_back (FeatureName_T ("apt"));
434  oList.push_back (FeatureName_T ("airbase"));
435  oList.push_back (FeatureName_T ("air base"));
436  oList.push_back (FeatureName_T ("ab"));
437  oList.push_back (FeatureName_T ("base"));
438 
439  } else if (iFeatureCode == "AIRS") {
440  oList.push_back (FeatureName_T ("airport"));
441  oList.push_back (FeatureName_T ("apt"));
442  oList.push_back (FeatureName_T ("spb"));
443  oList.push_back (FeatureName_T ("sea plane base"));
444  oList.push_back (FeatureName_T ("sea plane"));
445  oList.push_back (FeatureName_T ("waterdrome"));
446  oList.push_back (FeatureName_T ("aerodrome"));
447  oList.push_back (FeatureName_T ("water aerodrome"));
448 
449  } else if (iFeatureCode == "AIRH") {
450  oList.push_back (FeatureName_T ("airport"));
451  oList.push_back (FeatureName_T ("apt"));
452  oList.push_back (FeatureName_T ("heliport"));
453  oList.push_back (FeatureName_T ("hpt"));
454 
455  } else if (iFeatureCode == "RSTN") {
456  oList.push_back (FeatureName_T ("railway"));
457  oList.push_back (FeatureName_T ("railroad"));
458  oList.push_back (FeatureName_T ("train"));
459  oList.push_back (FeatureName_T ("station"));
460  oList.push_back (FeatureName_T ("railway station"));
461  oList.push_back (FeatureName_T ("railroad station"));
462  oList.push_back (FeatureName_T ("train station"));
463 
464  } else if (l3CharFeatCode == "BUS") {
465  oList.push_back (FeatureName_T ("bus"));
466  oList.push_back (FeatureName_T ("autobus"));
467  oList.push_back (FeatureName_T ("station"));
468  oList.push_back (FeatureName_T ("stn"));
469  oList.push_back (FeatureName_T ("stop"));
470  oList.push_back (FeatureName_T ("bus station"));
471  oList.push_back (FeatureName_T ("bus stop"));
472  oList.push_back (FeatureName_T ("autobus station"));
473  oList.push_back (FeatureName_T ("autobus stop"));
474 
475  } else if (iFeatureCode == "MTRO") {
476  oList.push_back (FeatureName_T ("metro"));
477  oList.push_back (FeatureName_T ("station"));
478  oList.push_back (FeatureName_T ("stn"));
479  oList.push_back (FeatureName_T ("stop"));
480  oList.push_back (FeatureName_T ("metro station"));
481  oList.push_back (FeatureName_T ("metro stop"));
482 
483  } else if (iFeatureCode == "FY" || iFeatureCode == "PRT"
484  || iFeatureCode == "PORT" || iFeatureCode == "HBR") {
485  oList.push_back (FeatureName_T ("ferry"));
486  oList.push_back (FeatureName_T ("maritime"));
487  oList.push_back (FeatureName_T ("port"));
488  oList.push_back (FeatureName_T ("prt"));
489  oList.push_back (FeatureName_T ("harbor"));
490  oList.push_back (FeatureName_T ("harbour"));
491  oList.push_back (FeatureName_T ("hbr"));
492  oList.push_back (FeatureName_T ("ferry port"));
493  oList.push_back (FeatureName_T ("maritime port"));
494 
495  } else if (l3CharFeatCode == "PPL" || l3CharFeatCode == "ADM"
496  || iFeatureCode == "LCTY") {
497  oList.push_back (FeatureName_T ("city"));
498  oList.push_back (FeatureName_T ("cty"));
499  oList.push_back (FeatureName_T ("town"));
500  oList.push_back (FeatureName_T ("downtown"));
501  oList.push_back (FeatureName_T ("down town"));
502  oList.push_back (FeatureName_T ("center"));
503  oList.push_back (FeatureName_T ("centre"));
504 
505  } else if (l3CharFeatCode == "PCL" || iFeatureCode == "AREA") {
506  oList.push_back (FeatureName_T ("city"));
507  oList.push_back (FeatureName_T ("cty"));
508  oList.push_back (FeatureName_T ("country"));
509  oList.push_back (FeatureName_T ("town"));
510  oList.push_back (FeatureName_T ("downtown"));
511  oList.push_back (FeatureName_T ("down town"));
512  oList.push_back (FeatureName_T ("center"));
513  oList.push_back (FeatureName_T ("centre"));
514  oList.push_back (FeatureName_T ("district"));
515  oList.push_back (FeatureName_T ("prefecture"));
516 
517  } else if (iFeatureCode == "MT") {
518  oList.push_back (FeatureName_T ("city"));
519  oList.push_back (FeatureName_T ("cty"));
520  oList.push_back (FeatureName_T ("mount"));
521  oList.push_back (FeatureName_T ("mt"));
522 
523  } else if (iFeatureCode == "PLAT") {
524  oList.push_back (FeatureName_T ("city"));
525  oList.push_back (FeatureName_T ("cty"));
526  oList.push_back (FeatureName_T ("plateau"));
527 
528  } else if (iFeatureCode == "OAS") {
529  oList.push_back (FeatureName_T ("city"));
530  oList.push_back (FeatureName_T ("cty"));
531  oList.push_back (FeatureName_T ("oasis"));
532 
533  } else if (iFeatureCode == "PRK") {
534  oList.push_back (FeatureName_T ("city"));
535  oList.push_back (FeatureName_T ("cty"));
536  oList.push_back (FeatureName_T ("park"));
537  oList.push_back (FeatureName_T ("prk"));
538 
539  } else if (l3CharFeatCode == "RES") {
540  oList.push_back (FeatureName_T ("city"));
541  oList.push_back (FeatureName_T ("cty"));
542  oList.push_back (FeatureName_T ("reserve"));
543  oList.push_back (FeatureName_T ("rsv"));
544 
545  } else if (iFeatureCode == "CMP") {
546  oList.push_back (FeatureName_T ("city"));
547  oList.push_back (FeatureName_T ("cty"));
548  oList.push_back (FeatureName_T ("camp"));
549  oList.push_back (FeatureName_T ("cmp"));
550 
551  } else if (l2CharFeatCode == "MN") {
552  oList.push_back (FeatureName_T ("city"));
553  oList.push_back (FeatureName_T ("cty"));
554  oList.push_back (FeatureName_T ("mine"));
555 
556  } else if (iFeatureCode == "HMSD") {
557  oList.push_back (FeatureName_T ("city"));
558  oList.push_back (FeatureName_T ("cty"));
559  oList.push_back (FeatureName_T ("homestead"));
560 
561  } else if (l2CharFeatCode == "RK") {
562  oList.push_back (FeatureName_T ("city"));
563  oList.push_back (FeatureName_T ("cty"));
564  oList.push_back (FeatureName_T ("rock"));
565 
566  } else if (iFeatureCode == "PT") {
567  oList.push_back (FeatureName_T ("city"));
568  oList.push_back (FeatureName_T ("cty"));
569  oList.push_back (FeatureName_T ("point"));
570  oList.push_back (FeatureName_T ("pt"));
571 
572  } else if (l3CharFeatCode == "RSV") {
573  oList.push_back (FeatureName_T ("city"));
574  oList.push_back (FeatureName_T ("cty"));
575  oList.push_back (FeatureName_T ("reservoir"));
576  oList.push_back (FeatureName_T ("rsv"));
577 
578  } else if (iFeatureCode == "LK") {
579  oList.push_back (FeatureName_T ("city"));
580  oList.push_back (FeatureName_T ("cty"));
581  oList.push_back (FeatureName_T ("lake"));
582  oList.push_back (FeatureName_T ("lk"));
583 
584  } else if (iFeatureCode == "BAY") {
585  oList.push_back (FeatureName_T ("city"));
586  oList.push_back (FeatureName_T ("cty"));
587  oList.push_back (FeatureName_T ("bay"));
588 
589  } else if (iFeatureCode == "CHN") {
590  oList.push_back (FeatureName_T ("city"));
591  oList.push_back (FeatureName_T ("cty"));
592  oList.push_back (FeatureName_T ("channel"));
593  oList.push_back (FeatureName_T ("chn"));
594 
595  } else if (l3CharFeatCode == "ISL") {
596  oList.push_back (FeatureName_T ("city"));
597  oList.push_back (FeatureName_T ("cty"));
598  oList.push_back (FeatureName_T ("island"));
599  oList.push_back (FeatureName_T ("isl"));
600  oList.push_back (FeatureName_T ("country"));
601 
602  } else if (iFeatureCode == "ATOL") {
603  oList.push_back (FeatureName_T ("city"));
604  oList.push_back (FeatureName_T ("cty"));
605  oList.push_back (FeatureName_T ("island"));
606  oList.push_back (FeatureName_T ("isl"));
607  oList.push_back (FeatureName_T ("atoll"));
608  oList.push_back (FeatureName_T ("atl"));
609  oList.push_back (FeatureName_T ("country"));
610  }
611 
612  //
613  return oList;
614  }
615 
616 }
void fromStream(std::istream &)
Definition: Location.cpp:194
const Percentage_T K_DEFAULT_PAGE_RANK
unsigned int EnvelopeID_T
void consolidateCityDetailsList()
Definition: Location.cpp:365
void consolidateAltNameShortListString()
Definition: Location.cpp:374
Class modelling the elementary details of a city.
Definition: CityDetails.hpp:28
std::string describeUICCodeList() const
Definition: Location.cpp:333
std::string describeUNLOCodeList() const
Definition: Location.cpp:317
std::string toString() const
Definition: Location.cpp:273
unsigned int GeonamesID_T
Structure modelling a (geographical) location.
Definition: Location.hpp:25
unsigned int WAC_T
double PageRank_T
std::string toShortString() const
Definition: Location.cpp:249
std::string _itCityIataCode
Definition: Location.hpp:1403
static FeatureNameList_T getFeatureList(const FeatureCode_T &)
Definition: Location.cpp:410
std::list< FeatureName_T > FeatureNameList_T
boost::gregorian::date Date_T
Date_T calculateDate() const
Definition: Location.cpp:311
float GMTOffset_T
unsigned int Population_T
std::string describe() const
Definition: NameMatrix.cpp:33
std::string describeShortKey() const
Definition: Location.cpp:198
float RawOffset_T
unsigned int UICCode_T
float DSTOffset_T
IATACodeList_T _itTvlPORList
Definition: Location.hpp:1398
unsigned short NbOfErrors_T
void toStream(std::ostream &) const
Definition: Location.cpp:189
std::string toBasicString() const
Definition: Location.cpp:210
void setTvlPORListString(const std::string &iPORListString)
Definition: Location.hpp:534
AltNameShortList_T _itAltNameShortList
Definition: Location.hpp:1393
std::string toSingleLocationString() const
Definition: Location.cpp:266
GeoCoord_T Longitude_T
std::string describeCityDetailsList() const
Definition: Location.cpp:349
void consolidateTvlPORListString()
Definition: Location.cpp:392
void setAltNameShortListString(const std::string &iNameListString)
Definition: Location.hpp:527
std::string _itCityUtfName
Definition: Location.hpp:1405
Enumeration of place/location types with respect to their use for transportation purposes.
Definition: IATAType.hpp:42
std::string _itCityAsciiName
Definition: Location.hpp:1406
GeoCoord_T Latitude_T
std::string describeKey() const
Definition: Location.cpp:205
std::string describe() const
Definition: LocationKey.cpp:51
std::list< CityDetails > CityDetailsList_T
A list of cities, for instance the list of cities served by a travel-related POR (point of reference)...
double MatchingPercentage_T
GeonamesID_T _itCityGeonamesID
Definition: Location.hpp:1404