+ extern const char *_srtm_continent_data[];
+ static GHashTable *srtm_continent = NULL;
+ const gchar *continent;
+ gchar name[16];
+
+ if (!srtm_continent) {
+ const gchar **s;
+
+ srtm_continent = g_hash_table_new(g_str_hash, g_str_equal);
+ s = _srtm_continent_data;
+ while (*s != (gchar *)-1) {
+ continent = *s++;
+ while (*s) {
+ g_hash_table_insert(srtm_continent, *s, continent);
+ s++;
+ }
+ s++;
+ }
+ }
+ g_snprintf(name, sizeof(name), "%c%02d%c%03d",
+ (lat >= 0) ? 'N' : 'S', ABS(lat),
+ (lon >= 0) ? 'E' : 'W', ABS(lon));
+
+ return(g_hash_table_lookup(srtm_continent, name));