@@ -28,7 +28,13 @@ osml10n_get_streetname_from_tags
osml10n_get_name_without_brackets_from_tags
*/
CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore, loc_in_brackets boolean, targetlang text DEFAULT 'de', place geometry DEFAULT NULL) RETURNS TEXT AS $$
CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore,
loc_in_brackets boolean,
show_brackets boolean DEFAULT false,
separator text DEFAULT chr(10),
targetlang text DEFAULT 'de',
place geometry DEFAULT NULL
) RETURNS TEXT AS $$
DECLARE
-- 5 most commonly spoken languages using latin script (hopefully)
latin_langs text[] := '{"en","fr","es","pt","de"}';
@@ -38,7 +44,7 @@ CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore, loc_in_b
BEGIN
target_tag := 'name:' || targetlang;
IF tags ? target_tag THEN
return osml10n_gen_bracketed_name(tags->target_tag,tags->'name',loc_in_brackets);
return osml10n_gen_combined_name(tags->target_tag,tags->'name',loc_in_brackets,show_brackets,separator);
END IF;
IF tags ? 'name' THEN
if (tags->'name' = '') THEN
@@ -51,7 +57,7 @@ CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore, loc_in_b
-- these are currently int_name, common latin scripts and romanized version of the name
IF tags ? 'int_name' THEN
if osml10n_is_latin(tags->'int_name') THEN
return osml10n_gen_bracketed_name(tags->'int_name',tags->'name',loc_in_brackets);
return osml10n_gen_combined_name(tags->'int_name',tags->'name',loc_in_brackets,show_brackets,separator);
END IF;
END IF;

@@ -65,7 +71,7 @@ CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore, loc_in_b
target_tag := 'name:' || lang;
if tags ? target_tag THEN
-- raise notice 'found roman language tag %', target_tag;
return osml10n_gen_bracketed_name(tags->target_tag,tags->'name',loc_in_brackets);
return osml10n_gen_combined_name(tags->target_tag,tags->'name',loc_in_brackets,show_brackets,separator);
END IF;
END LOOP;
-- try to find a romanized version of the name
@@ -77,11 +83,11 @@ CREATE or REPLACE FUNCTION osml10n_get_placename_from_tags(tags hstore, loc_in_b
LOOP
IF (tag ~ '^name:.+_rm$') THEN
-- raise notice 'found romanization name tag %', tag;
return osml10n_gen_bracketed_name(tags->tag,tags->'name',loc_in_brackets);
return osml10n_gen_combined_name(tags->tag,tags->'name',loc_in_brackets,show_brackets,separator);
END IF;
END LOOP;
-- raise notice 'last resort: doing transliteration';
return osml10n_gen_bracketed_name(osml10n_geo_translit(tags->'name',place),tags->'name',loc_in_brackets);
return osml10n_gen_combined_name(osml10n_geo_translit(tags->'name',place),tags->'name',loc_in_brackets,false,separator);
ELSE
return NULL;
END IF;
@@ -93,7 +99,12 @@ $$ LANGUAGE 'plpgsql' STABLE;
Same as osml10n_get_placename_from_tags but with streetname abbreviations
*/
CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore, loc_in_brackets boolean, targetlang text DEFAULT 'de', place geometry DEFAULT NULL) RETURNS TEXT AS $$
CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore,
loc_in_brackets boolean,
show_brackets boolean DEFAULT false,
separator text DEFAULT ' - ',
targetlang text DEFAULT 'de',
place geometry DEFAULT NULL) RETURNS TEXT AS $$
DECLARE
-- 5 most commonly spoken languages using latin script (hopefully)
latin_langs text[] := '{"en","fr","es","pt","de"}';
@@ -104,8 +115,8 @@ CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore, loc_in_
BEGIN
target_tag := 'name:' || targetlang;
IF tags ? target_tag THEN
return osml10n_gen_bracketed_name(osml10n_street_abbrev(tags->target_tag,targetlang),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets);
return osml10n_gen_combined_name(osml10n_street_abbrev(tags->target_tag,targetlang),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets,show_brackets,separator);
END IF;
IF tags ? 'name' THEN
if (tags->'name' = '') THEN
@@ -118,8 +129,8 @@ CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore, loc_in_
-- these are currently int_name, common latin scripts and romanized version of the name
IF tags ? 'int_name' THEN
if osml10n_is_latin(tags->'int_name') THEN
return osml10n_gen_bracketed_name(osml10n_street_abbrev_en(tags->'int_name'),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets);
return osml10n_gen_combined_name(osml10n_street_abbrev_en(tags->'int_name'),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets,show_brackets,separator);
END IF;
END IF;

@@ -133,8 +144,8 @@ CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore, loc_in_
target_tag := 'name:' || lang;
if tags ? target_tag THEN
-- raise notice 'found roman language tag %', target_tag;
return osml10n_gen_bracketed_name(osml10n_street_abbrev(tags->target_tag,lang),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets);
return osml10n_gen_combined_name(osml10n_street_abbrev(tags->target_tag,lang),
osml10n_street_abbrev_all(tags->'name'),loc_in_brackets,show_brackets,separator);
END IF;
END LOOP;
-- try to find a romanized version of the name
@@ -146,13 +157,13 @@ CREATE or REPLACE FUNCTION osml10n_get_streetname_from_tags(tags hstore, loc_in_
LOOP
IF (tag ~ '^name:.+_rm$') THEN
-- raise notice 'found romanization name tag %', tag;
return osml10n_gen_bracketed_name(osml10n_street_abbrev_all_latin(tags->tag),
osml10n_street_abbrev_non_latin(tags->'name'),loc_in_brackets);
return osml10n_gen_combined_name(osml10n_street_abbrev_all_latin(tags->tag),
osml10n_street_abbrev_non_latin(tags->'name'),loc_in_brackets,show_brackets,separator);
END IF;
END LOOP;
-- raise notice 'last resort: doing transliteration';
abbrev = osml10n_street_abbrev_non_latin(tags->'name');
return osml10n_gen_bracketed_name(osml10n_geo_translit(abbrev,place),abbrev,loc_in_brackets);
return osml10n_gen_combined_name(osml10n_geo_translit(abbrev,place),abbrev,loc_in_brackets,show_brackets,separator);
ELSE
return NULL;
END IF;