On Thu 02-08-12 13:34:32, jzvc wrote: > Dne 2.8.2012 10:54, Libor Pechacek napsal(a): > > :) Zrovna jsem se chtěl ozvat. > > > > Za svojí prací si stojím, investoval jsem hodně úsilí do korektnosti > > importů. > > Na druhou stranu vím, že některé importy nejsou až tak důkladně provedené. > > > > Nemám nic proti přepsání svých importů daty z RÚIAN, obsahově by měly být > > totožná. > > Tim bych si nebyl tak jisty ... ;D, opakovane sem narazel na spatne > nazvy ulic (u importovanych adres) - v tom smyslu, ze tam byly zkratky, > blbe mala/velka pismena, pripadne nekde byly pouzity starsi nez aktualni > nazvy ...
Zkratky a neaktuální názvy jdou na účet MVČR, nesprávně malá/velká písmena jsou chybou importovacího softwaru. Sice jsem software opravil, ale původní názvy už v mapě zůstaly. ;) Libor
>From 2ec263cad0d127d5a89662bbd380a3b06dc3e329 Mon Sep 17 00:00:00 2001 From: Libor Pechacek <lpecha...@gmx.com> Date: Fri, 16 Sep 2011 16:43:37 +0200 Subject: [PATCH] Capitalize place names properly Treat space and dash as word separators, capitalize roman numerals. Signed-off-by: Libor Pechacek <lpecha...@gmx.com> --- CUZK.MergeDBCUZK/StringUtilities.cs | 47 ++++++++++++++++++++--------------- 1 files changed, 27 insertions(+), 20 deletions(-) diff --git a/CUZK.MergeDBCUZK/StringUtilities.cs b/CUZK.MergeDBCUZK/StringUtilities.cs index ac4fb88..9ba31a2 100644 --- a/CUZK.MergeDBCUZK/StringUtilities.cs +++ b/CUZK.MergeDBCUZK/StringUtilities.cs @@ -5,31 +5,38 @@ using System.Text; namespace CUZK.MergeDBCUZK { public static class StringUtilities { + static System.Globalization.CultureInfo cultureInfo = System.Globalization.CultureInfo.GetCultureInfo("cs"); + static HashSet<string> noCapitalize = new HashSet<string>(new string[] { + "nad", "pod", "u", "v", "na", "z", + "ledna", "února", "března", "dubna", "května", "máje", "června", + "července", "srpna", "září", "října", "listopadu", "prosince", + "náměstí", "ulice", "třída", "nábřeží", "kraj"}); + static Char[] romanNumerals = { 'i', 'v', 'x', 'l', 'c', 'd', 'm' }; + public static string CorrectLetterSize(string geoName) { - if (geoName == null) + if (geoName == null || geoName == "") return ""; - string[] nameChunks = geoName.Trim().ToLower(System.Globalization.CultureInfo.GetCultureInfo("cs")).Split(' '); - - StringBuilder result = new StringBuilder(); - result.Append(nameChunks[0].Substring(0, 1).ToUpper(System.Globalization.CultureInfo.GetCultureInfo("cs"))); - result.Append(nameChunks[0].Substring(1)); - - string[] noCapitalize = new string[] {"nad", "pod", "u", "v", "na", "z", - "ledna", "února", "března", "dubna", "května", "máje", "června", - "července", "srpna", "září", "října", "listopadu", "prosince", - "náměstí", "ulice", "třída", "nábřeží", "kraj"}; - - for (int i = 1; i < nameChunks.Length; i++) { - result.Append(' '); - if (noCapitalize.SingleOrDefault(s => s == nameChunks[i]) != null) { - result.Append(nameChunks[i]); - } - else { - result.Append(nameChunks[i].Substring(0, 1).ToUpper(System.Globalization.CultureInfo.GetCultureInfo("cs"))); - result.Append(nameChunks[i].Substring(1)); + string source = geoName.Trim().ToLower(cultureInfo); + StringBuilder result = new StringBuilder(source); + source = source + ' '; + + int subStart = 0; + for (int i = 1; i < source.Length; i++) { + if (source[i] == ' ' || source[i] == '-') { + string word = source.Substring(subStart, i-subStart); + if(!noCapitalize.Contains(word)) { + if (word.TrimEnd('.').TrimStart(romanNumerals).Length == 0) { + result.Replace(word, word.ToUpper(cultureInfo), subStart, word.Length); + } else { + result[subStart] = Char.ToUpper(result[subStart], cultureInfo); + } + } + subStart = i+1; } } + + result[0] = Char.ToUpper(result[0], cultureInfo); return result.ToString(); } -- 1.6.0.2
_______________________________________________ Talk-cz mailing list Talk-cz@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz