Ahoj, to se divím, že funguje o dost lépe, protože tam prakticky žádné změny v tomto směru nejsou. Změny se týkají možnosti nastavení a pluginů (filtrů). Pravda je, že jeden ukázkový primitivní filtr SmallHoleRemover, jehož zdroják jsem zde posílal, zaceluje malé díry a tak může někde přinést lepší výsledky (někde zase horší, pokud jsou čáry už tak dost tlusté).
Ten plugin nemá žádné nastavení. Když se koukneš do toho zdrojáku (je velmi krátký a zřejmý), tak zjistíš, že natvrdo obarvuje bílé body, které na jedné ze 4 základních stran sousedí s černým pixelem. Stačí tuto podmínku upravit nebo filtr udělat konfigurovatelný... a může se to chovat jinak. Nebo prostě udělat jiný filtr ... tvorba filtru je jednoduchá věc, stačí referencovat jednu Class Library a implementovat jednoduché rozlišení. Výsledné DLL dát do adresáře plugins a přidat filtr v konfiguráku na vhodné místo Případně "hrubou silou" lze v konfiguráku aplikovat stejný filtr třeba 2x za sebou. Tím se také zacelí trochu větší díry (ale není to moc pěkné řešení). <bitmapFilters> <filter name="SmallHoleRemover" /> <filter name="SmallHoleRemover" /> </bitmapFilters> Honza 2010/3/1 Petr Dlouhý <petr.dlo...@email.cz>: > Ahoj, > > zkoušel jsem tu novou verzi, která opravdu funguje zase o dost lépe. > Zdá se ale, že to na tenkých čarách stále moc nefunguje - většinou to > stejně projde nějakou mezerou. > Dá se někde nastavit, jak velkou mezeru to zacelí? > > On Mon, 01 Mar 2010 13:32:21 +0100, Jan Bilak <jan.bilak....@gmail.com> > wrote: > >> Zdroják SmallHoleRemover filtru vypadá takto: >> >> using System; >> using System.Collections.Generic; >> using System.Linq; >> using System.Text; >> using Osm.Kn.Trace.Server.Trace.Interfaces; >> >> namespace SmallHoleRemover >> { >> [BitmapFilter("SmallHoleRemover")] >> public class SmallHoleRemover : IBitmapFilter >> { >> const byte BACKGROUND = 0; >> const byte PEN = 1; >> const byte TEMP = 2; >> >> #region IBitmapFilter Members >> >> public byte[][] Filter(byte[][] bitmap) >> { >> int h = bitmap.Length; >> int w = bitmap[0].Length; >> >> for (int y = 1; y < h - 1; y++) >> { >> for (int x = 1; x < w - 1; x++) >> { >> if ((bitmap[y][x] == PEN) && >> (bitmap[y][x - 1] != BACKGROUND || bitmap[y][x >> + 1] != BACKGROUND || >> bitmap[y - 1][x] != BACKGROUND || bitmap[y + >> 1][x] != BACKGROUND)) >> bitmap[y][x] = TEMP; >> } >> } >> for (int y = 1; y < h - 1; y++) >> { >> for (int x = 1; x < w - 1; x++) >> { >> if (bitmap[y][x] == TEMP) >> bitmap[y][x] = PEN; >> } >> } >> >> return bitmap; >> } >> >> #endregion >> >> #region IConfigurable Members >> >> public void Init(IDictionary<string, string> confValues) >> { >> } >> >> #endregion >> } >> } >> >> _______________________________________________ >> Talk-cz mailing list >> Talk-cz@openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-cz > > > -- > Petr Dlouhý > > _______________________________________________ > Talk-cz mailing list > Talk-cz@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz > _______________________________________________ Talk-cz mailing list Talk-cz@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz