diff --git a/src/geonames_disambiguation.c b/src/geonames_disambiguation.c index 078bca62..8e635a85 100644 --- a/src/geonames_disambiguation.c +++ b/src/geonames_disambiguation.c @@ -99,4 +99,23 @@ bool geodisambig_add_geo_features(cstring_array *features, char *name, double la return true; -} \ No newline at end of file +} + + +bool geodisambig_add_geoname_features(cstring_array *features, geoname_t *geoname) { + return (geoname != NULL + && geodisambig_add_name_feature(features, geoname->name) + && geodisambig_add_country_feature(features, geoname->name, geoname->country_code) + && (geoname->admin1_geonames_id == 0 || geodisambig_add_admin1_feature(features, geoname->name, geoname->admin1_geonames_id)) + && (geoname->admin2_geonames_id == 0 || geodisambig_add_admin2_feature(features, geoname->name, geoname->admin2_geonames_id)) + && (geodisambig_add_geo_features(features, geoname->name, geoname->latitude, geoname->longitude)) + ); +} + +bool geodisambig_add_postal_code_features(cstring_array *features, gn_postal_code_t *postal_code) { + return (postal_code != NULL + && geodisambig_add_name_feature(features, postal_code->code) + && geodisambig_add_country_feature(features, postal_code->country_code) + ); +} + diff --git a/src/geonames_disambiguation.h b/src/geonames_disambiguation.h index 179ca182..705af7cd 100644 --- a/src/geonames_disambiguation.h +++ b/src/geonames_disambiguation.h @@ -7,6 +7,7 @@ #include "geohash/geohash.h" #include "features.h" +#include "geonames.h" #include "string_utils.h" #define PLACE_NAME_FEATURES_DEFAULT_LENGTH 128 @@ -22,4 +23,7 @@ bool geodisambig_add_admin1_feature(cstring_array *features, char *name, uint32_ bool geodisambig_add_admin2_feature(cstring_array *features, char *name, uint32_t admin2_id); bool geodisambig_add_geo_features(cstring_array *features, char *name, double latitude, double longitude); +bool geodisambig_add_geoname_features(cstring_array *features, geoname_t *geoname); +bool geodisambig_add_postal_code_features(cstring_array *features, gn_postal_code_t *postal_code); + #endif \ No newline at end of file