[Talk-cz] Tracer - nastavení
Jan Bilak
jan.bilak.osm na gmail.com
Pondělí Březen 1 17:13:33 UTC 2010
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.dlouhy na 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.osm na 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 na openstreetmap.org
>> http://lists.openstreetmap.org/listinfo/talk-cz
>
>
> --
> Petr Dlouhý
>
> _______________________________________________
> Talk-cz mailing list
> Talk-cz na openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-cz
>
Další informace o konferenci talk-cz