« zpět na výpis měsíce |

[Talk-cz] Tracer - nastavení

Vlákno 27.2. - 5.3.2010, počet zpráv: 11


27.2.2010 07:07:49 (#1)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
Ahoj, p?idal jsem podporu n?jak?ho nastaven? TraceServeru: http://jabi.aspone.cz/osm/TraceServerBeta5.zip Z?rove? podporuje pluginy pro p?edzpracov?n? bitmapy i filtraci bod? (asi nejproblemati?t?j?? ??st trasov?n?). Konfigura?n? soubor je ve form?tu XML a definuje dv? pipelines (bitmapFilters a pointSetFilters). Tyto lze skl?dat z vestaven?ch filtr? a plugin?. Pluginy ve form? t??d v Class Library mus? referencovat Osm.Kn.Trace.Server.Interfaces.dll a implementovat jednoduch? rozhran? IBitmapFilter nebo IPointSetFilter. Schema: http://jabi.aspone.cz/osm/PluginInterface.png Z?rove? je t?eba t??d? p?i?adit atribut BitmapFilterAttribut nebo PointSetFilterAttribute a kontruktoru p?i?adit jm?no, kter? se pak pou??v? pro ozna?en? pluignu v konfigura?n?m souboru. Filtry mohou m?t parametry, kter? lze nastavovat v konf. souboru. Jeden filtr m??e b?t v pipeline v?cekr?t (t?eba i s r?zn?m nastaven?m). Hotov? Class Libraries (jedna knihovna m??e obsahovat v?ce filtr?) je t?eba um?stit do slo?ky plugins, kter? le?? ve slo?ce, ve kter? je Osm.Kn.Trace.Server.exe a Osm.Kn.Trace.Server.Interfaces.dll. Pro pochopen?, co kter? filtr d?l?, doporu?uji v?echny n?sleduj?c? filtry v pipeline zakomentovat a zkusit v JOSM, co z toho bude l?zt. P?i zm?n? bitmapFilters je vhodn? smazat cache soubory. P?i zm?n? pointSetFilters to nen? t?eba. I bez tvorby nov?ch pluign? je mo?n? trasov?n? ovliv?ovat zm?nou pipeline (ub?r?m filtr?, zm?nou po?ad?, p?id?v?m filtr?, zm?nou parametr?, ...). Pomoc? plugin? je mo?n? ??st nebo celou pipeline nahradit. Honza P??klad konfigur?ku: <?xml version="1.0" encoding="utf-8" ?> <config> <bitmapFilters> <!-- Zacel? drobn? d?ry v ?ar?ch t?m, ?e o?ern? v?echny b?l? body, kter? soused? alespo? v jednom ze 4 z?kladn?ch sm?rech s ?ern?m bodem. --> <filter name="SmallHoleRemover" /> </bitmapFilters> <pointSetFilters> <!-- Najde body, ve kter?ch se k?ivka l?me pomoc? metodu obdobnou jako p?i hled?n? extr?m? funkce pomoc? derivace. Ostatn? body vynech?. --> <filter name="FindExtrems"> <!-- Vzd?lenost bodu, od kter?ho se po??taj? vzd?lenosti bod? k?ivky, od objektu. --> <param name="dist" value="10000" /> <!-- Po?et sm?r?, do kter?ch se v??e zm?n?n? bod umis?uje. --> <param name="stepCount" value="27" /> </filter> <!-- Najde body A, B, C, kde |AB| a |BC| je v?t?? ne? minDistance a z?rove? vzd?lenost AC od B je men?? ne? minDistance. V takov?chto p??padech vynech? B. --> <filter name="SimplifyPolyline"> <param name="minDistance" value="15" /> <param name="maxDistance" value="4" /> </filter> <!-- Najde body A, B, C, kde |AB| a |BC| je v?t?? ne? minDistance a z?rove? vzd?lenost AC od B je men?? ne? minDistance. V takov?chto p??padech vynech? B. --> <filter name="SimplifyPolyline"> <param name="minDistance" value="3" /> <param name="maxDistance" value="1.3" /> </filter> <!-- Najde A, B, C, D takov?, ?e - |AB| je v?t?? ne? minOuterDist, - |CD| je v?t?? ne? minOuterDist, - |BC| je men?? ne? maxInnerDist, - ?hel p??mek AB a CD je v?t?? ne? minAngle A pak BC vyhod? a nahrad? pr?se??kem AB a CD. Tedy vlastn? eliminuje "kulat?" rohy. --> <filter name="FindVertexis"> <param name="maxInnerDist" value="15" /> <param name="minOuterDist" value="5" /> <param name="minAngle" value="30" /> <!-- Neprov?d?t, pokud je bod ke smaz?n? d?le ne? tolerance od p??mky AB i CD. --> <param name="tolerance" value="3" /> <!-- Neprov?d?t, pokud je pr?se??k AB a CD d?le ne? tolerance od bodu B nebo C. --> <param name="tolerance2" value="20" /> </filter> <!-- Najde po sob? jdouc? body A, B, C, vzd?lenost AC od B je men?? ne? tolerance. V takov?chto p??padech vynech? B. ??? --> <filter name="FilterPointGroups"> <param name="tolerance" value="2" /> </filter> <!-- Najde body vynechan?, kter? jsou d?le ne? maxDistance od upraven?ho polygonu. A vr?t? je zp?t.--> <filter name="AddMissingPoints"> <param name="maxDistance" value="4" /> </filter> <!-- Pokus? se polygon nafouknout tak, aby segmenty polygonu byly ve st?edu ??ry. --> <filter name="LineWidthCorrection"> </filter> <!-- Najde body A, B, C, kde |AB| a |BC| je v?t?? ne? minDistance a z?rove? vzd?lenost AC od B je men?? ne? minDistance. V takov?chto p??padech vynech? B. --> <filter name="SimplifyPolyline"> <param name="minDistance" value="5" /> <param name="maxDistance" value="1.3" /> </filter> <!-- Najde body A, B, C, kde |AB| a |BC| je v?t?? ne? minDistance a z?rove? vzd?lenost AC od B je men?? ne? minDistance. V takov?chto p??padech vynech? B. --> <filter name="SimplifyPolyline"> <param name="minDistance" value="15" /> <param name="maxDistance" value="2" /> </filter> </pointSetFilters> <webServer> <!-- TCP port, na kter?m server poslouch?. --> <endPoint port="5050" /> </webServer> <wms> <!-- Okol? bodu kliknut? ve stupn?ch lon/lat, kter? se stahuje. St?hne se tedy minim?ln? ?tverec (2*size) x (2*size). --> <surroundingToDownload size="0.001" /> <!-- Jak moc tmav? bod mus? b?t, aby byl pova?ov?n za ?ern? (0-255)? --> <threshold value="127" /> <!-- verticalSkip ... o kolik pixel? se dla?dice st?hne ve vertik?ln?m sm?ru v?t?? a pak se o??zne (naho?e). Kv?li copyrightu. tileSize ....... velikost dla?dice ve stupn?ch lon/lat. resolution ..... rozli?en? dla?dice v px. --> <downloader verticalSkip="560" tileSize="0.002" resolution="1600" /> </wms> </config>

28.2.2010 02:21:34 (#2)
gravatar

MP

<singularita at gmail.com>
306
On 27/02/2010, Jan Bilak <jan.bilak.osm at gmail.com> wrote: zobrazit citaci
> Ahoj, > > p?idal jsem podporu n?jak?ho nastaven? TraceServeru: > http://jabi.aspone.cz/osm/TraceServerBeta5.zip
Tak jsem to zkusil a nefunguje to, h?z? to jakousi exception kv?li nenalezen?mu filtru: zobrazit citaci
> <filter name="SmallHoleRemover" />
Pokud tuhle ??dku v defaultn?m konfigur?ku nezakomentuju, h?z? mi to tuhle chybu: $ mono Osm.Kn.Trace.Server.exe EXPERIMENTALNI VERZE (2) Plugin dir is /m/e/p/josm/tracer/plugins. Plugin SmallHoleRemover.dll loaded. Unhandled Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[System.String,System.Type].get_Item (System.String key) [0x00000] at Osm.Kn.Trace.Server.Wms.BitmapFilterManager.AddFilter (System.String name, IDictionary`2 parameters) [0x00000] at Osm.Kn.Trace.Server.Config.LoadBitmapFilters () [0x00000] at Osm.Kn.Trace.Server.Server.Start () [0x00000] at Osm.Kn.Trace.Server.Program.Main (System.String[] args) [0x00000] Bez t?hle ??dky to sice jde spustit, ale pak to h?z? tuhle chybu: - trace/simple/50.10415000432744;14.36878225455269 http://wms.cuzk.cz/wms.asp?service=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&FORMAT=image/pn g&LAYERS=kn&BBOX=14.3660,50.1040,14.3680,50.1067&WIDTH=1600&HEIGHT=2160 System.NullReferenceException: Object reference not set to an instance of an object at Osm.Kn.Trace.Server.Config.get_Treshold () [0x00000] at Osm.Kn.Trace.Server.Wms.TileDownloader.Download (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000 ] at Osm.Kn.Trace.Server.Wms.TileDownloader.Get (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000] at Osm.Kn.Trace.Server.Server.CreateBitmap (Osm.Kn.Trace.Server.Wms.Tile[,] tiles, Int32 resolution) [0x00000] at Osm.Kn.Trace.Server.Server.TraceCommand (PointGeo point, IExporter exporter) [0x00000] at Osm.Kn.Trace.Server.Server.webServer_GetContent (System.Object sender, Osm.Kn.Trace.Server.WebServer.GetDataEventArgs e) [0x00000] ... tak?e ta nov? verze vlastn? nefunguje .... Martin

28.2.2010 02:24:39 (#3)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
Ahoj, d?ky za reakci ... z?tra (nebo mo?n? je?t? te? ve?er) se kouknu, v ?em je probl?m. Mimochodem zkou??? to na Windows nebo pod Monem? Honza Dne 28. ?nora 2010 2:21 MP <singularita at gmail.com> napsal(a): zobrazit citaci
> On 27/02/2010, Jan Bilak <jan.bilak.osm at gmail.com> wrote: >> Ahoj, >> >> ?p?idal jsem podporu n?jak?ho nastaven? TraceServeru: >> ?http://jabi.aspone.cz/osm/TraceServerBeta5.zip > > Tak jsem to zkusil a nefunguje to, h?z? to jakousi exception kv?li > nenalezen?mu filtru: > >> ? ? <filter name="SmallHoleRemover" /> > > Pokud tuhle ??dku v defaultn?m konfigur?ku nezakomentuju, h?z? mi to > tuhle chybu: > > $ mono Osm.Kn.Trace.Server.exe > EXPERIMENTALNI VERZE (2) > > Plugin dir is /m/e/p/josm/tracer/plugins. > Plugin SmallHoleRemover.dll loaded. > > Unhandled Exception: System.Collections.Generic.KeyNotFoundException: > The given key was not present in the dictionary. > ?at System.Collections.Generic.Dictionary`2[System.String,System.Type].get_Item > (System.String key) [0x00000] > ?at Osm.Kn.Trace.Server.Wms.BitmapFilterManager.AddFilter > (System.String name, IDictionary`2 parameters) [0x00000] > ?at Osm.Kn.Trace.Server.Config.LoadBitmapFilters () [0x00000] > ?at Osm.Kn.Trace.Server.Server.Start () [0x00000] > ?at Osm.Kn.Trace.Server.Program.Main (System.String[] args) [0x00000] > > Bez t?hle ??dky to sice jde spustit, ale pak to h?z? tuhle chybu: > > - trace/simple/50.10415000432744;14.36878225455269 > http://wms.cuzk.cz/wms.asp?service=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&FORMAT=image/pn > > g&LAYERS=kn&BBOX=14.3660,50.1040,14.3680,50.1067&WIDTH=1600&HEIGHT=2160 > System.NullReferenceException: Object reference not set to an instance > of an object > ?at Osm.Kn.Trace.Server.Config.get_Treshold () [0x00000] > ?at Osm.Kn.Trace.Server.Wms.TileDownloader.Download > (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000 > ? ? ? ? ? ? ] > ?at Osm.Kn.Trace.Server.Wms.TileDownloader.Get > (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000] > ?at Osm.Kn.Trace.Server.Server.CreateBitmap > (Osm.Kn.Trace.Server.Wms.Tile[,] tiles, Int32 resolution) [0x00000] > ?at Osm.Kn.Trace.Server.Server.TraceCommand (PointGeo point, > IExporter exporter) [0x00000] > ?at Osm.Kn.Trace.Server.Server.webServer_GetContent (System.Object > sender, Osm.Kn.Trace.Server.WebServer.GetDataEventArgs e) [0x00000] > > ... tak?e ta nov? verze vlastn? nefunguje .... > > Martin > > _______________________________________________ > Talk-cz mailing list > Talk-cz at openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz >

28.2.2010 01:33:15 (#4)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
Ahoj, omlouv?m se za chyby ... opravenou verzi jsem dal na stejn? m?sto. Honza 2010/2/28 Jan Bilak <jan.bilak.osm at gmail.com>: zobrazit citaci
> Ahoj, > > d?ky za reakci ... z?tra (nebo mo?n? je?t? te? ve?er) se kouknu, v ?em > je probl?m. Mimochodem zkou??? to na Windows nebo pod Monem? > > Honza > > > Dne 28. ?nora 2010 2:21 MP <singularita at gmail.com> napsal(a): >> On 27/02/2010, Jan Bilak <jan.bilak.osm at gmail.com> wrote: >>> Ahoj, >>> >>> ?p?idal jsem podporu n?jak?ho nastaven? TraceServeru: >>> ?http://jabi.aspone.cz/osm/TraceServerBeta5.zip >> >> Tak jsem to zkusil a nefunguje to, h?z? to jakousi exception kv?li >> nenalezen?mu filtru: >> >>> ? ? <filter name="SmallHoleRemover" /> >> >> Pokud tuhle ??dku v defaultn?m konfigur?ku nezakomentuju, h?z? mi to >> tuhle chybu: >> >> $ mono Osm.Kn.Trace.Server.exe >> EXPERIMENTALNI VERZE (2) >> >> Plugin dir is /m/e/p/josm/tracer/plugins. >> Plugin SmallHoleRemover.dll loaded. >> >> Unhandled Exception: System.Collections.Generic.KeyNotFoundException: >> The given key was not present in the dictionary. >> ?at System.Collections.Generic.Dictionary`2[System.String,System.Type].get_Item >> (System.String key) [0x00000] >> ?at Osm.Kn.Trace.Server.Wms.BitmapFilterManager.AddFilter >> (System.String name, IDictionary`2 parameters) [0x00000] >> ?at Osm.Kn.Trace.Server.Config.LoadBitmapFilters () [0x00000] >> ?at Osm.Kn.Trace.Server.Server.Start () [0x00000] >> ?at Osm.Kn.Trace.Server.Program.Main (System.String[] args) [0x00000] >> >> Bez t?hle ??dky to sice jde spustit, ale pak to h?z? tuhle chybu: >> >> - trace/simple/50.10415000432744;14.36878225455269 >> http://wms.cuzk.cz/wms.asp?service=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&FORMAT=image/pn >> >> g&LAYERS=kn&BBOX=14.3660,50.1040,14.3680,50.1067&WIDTH=1600&HEIGHT=2160 >> System.NullReferenceException: Object reference not set to an instance >> of an object >> ?at Osm.Kn.Trace.Server.Config.get_Treshold () [0x00000] >> ?at Osm.Kn.Trace.Server.Wms.TileDownloader.Download >> (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000 >> ? ? ? ? ? ? ] >> ?at Osm.Kn.Trace.Server.Wms.TileDownloader.Get >> (Osm.Kn.Trace.Server.Wms.Tile tile) [0x00000] >> ?at Osm.Kn.Trace.Server.Server.CreateBitmap >> (Osm.Kn.Trace.Server.Wms.Tile[,] tiles, Int32 resolution) [0x00000] >> ?at Osm.Kn.Trace.Server.Server.TraceCommand (PointGeo point, >> IExporter exporter) [0x00000] >> ?at Osm.Kn.Trace.Server.Server.webServer_GetContent (System.Object >> sender, Osm.Kn.Trace.Server.WebServer.GetDataEventArgs e) [0x00000] >> >> ... tak?e ta nov? verze vlastn? nefunguje .... >> >> Martin >> >> _______________________________________________ >> Talk-cz mailing list >> Talk-cz at openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-cz >> >

1.3.2010 05:08:38 (#5)
gravatar

MP

<singularita at gmail.com>
306
On 28/02/2010, Jan Bilak <jan.bilak.osm at gmail.com> wrote: zobrazit citaci
> Ahoj, > > d?ky za reakci ... z?tra (nebo mo?n? je?t? te? ve?er) se kouknu, v ?em > je probl?m. Mimochodem zkou??? to na Windows nebo pod Monem?
Pod monem, Windows tu ani nem?m. Nov? verze u? funguje, SmallHoleRemover trochu pom?h?, ale na v?t?inu budov po??d nesta??. Ale snad ?asem vznikne n?jak? lep?? filtr. Mo?n? bych mohl mrknout do zdroj?k? a n?co vymyslet :) Martin

1.3.2010 01:32:21 (#6)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
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 } }

1.3.2010 06:04:38 (#7)
gravatar

Petr Dlouhý

<petr.dlouhy at email.cz>
607
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 at gmail.com> wrote: zobrazit citaci
> 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 at openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz
-- Petr Dlouh?

1.3.2010 06:13:33 (#8)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
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 at email.cz>: zobrazit citaci
> 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 at 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 at openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-cz > > > -- > Petr Dlouh? > > _______________________________________________ > Talk-cz mailing list > Talk-cz at openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz >

1.3.2010 06:39:38 (#9)
gravatar

Petr Dlouhý

<petr.dlouhy at email.cz>
607
Ahoj, t?m funguje l?pe jsem myslel v jin?ch sm?rech - nap??klad ?asto spr?vn? ignoruje nesouvisej?c? ??ry zasahuj?c? do trasovan?ho objektu. Myslel jsem, ?e SmallHoleRemover m? probl?m tenk?ch ?ar ?e?it. Mimochodem: v Traceru jsou st?le n?kter? otravn? chyby z d??v?j?ka - ob?as trasovan? oblast v?bec neobsahuje bod, na kter? jsem kliknul; n?kdy "vyst?eluj?" body z objektu daleko za jeho hranici; ob?as hl?s? "IndexOutOfRangeException". On Mon, 01 Mar 2010 18:13:33 +0100, Jan Bilak <jan.bilak.osm at gmail.com> wrote: zobrazit citaci
> 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 at 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 at 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 at openstreetmap.org >>> http://lists.openstreetmap.org/listinfo/talk-cz >> >> >> -- >> Petr Dlouh? >> >> _______________________________________________ >> Talk-cz mailing list >> Talk-cz at openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-cz >> > > _______________________________________________ > Talk-cz mailing list > Talk-cz at openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz
-- Petr Dlouh?

1.3.2010 07:12:25 (#10)
gravatar

Jan Bilak

<jan.bilak.osm at gmail.com>
149
Ahoj. SmallHoleRemover je sp??e uk?zkov? filtr, ne? filtr, kter? by to opravdu dob?e ?e?il. V r?mci ?pravy traceserveru tak, aby byl konfigovateln?, jsem se rozhodl vytvo?it dva typy filtr?. Jeden typ um? pozm?nit ?ernob?lou bitmapu (a tedy nap?. lze pomoc? takov?ho typu filtru zacelovat d?ry). Druh? typ filtru pak slou?? k redukci (p??padn? i p?id?n?) bod? na obrysu trasovan?ho domu. Filtr? druh?ho typu existuje v programu n?kolik a tvo?? to podstatnou ??st traceserveru. Na vstupu je mno?ina bod? tvo??c? vn?j?? obrys oblasti vypln?n? floodfillem. Pak tato mno?ina projde sadou filtr? a v?sledek posledn?ho filtru je u? vlastn? kone?n? v?sledek (jen se p?epo?tou sou?adnice apod.). P?itom typy filtr?, jejich po?ad? a nastaven? je v?sledek n?jak?ch pokus? zejm?na na jednom typy mapov?ho podkladu. V???m, ?e lze zde dos?hnout i lep??ch v?sledk? - zejm?na v jin?ch oblastech mapy, ne? kde jsem to zkou?el. Filtr prvn?ho typu ale ??dn? neexistoval a SmallHoleRemover je vlastn? takov? uk?zkov? filtr (zacel? opravdu jen mal? d?ry a tak jeho praktick? pou?it? je dosti omezen?, ale zase to n?zorn? uk?zka, jak takov? filtr vytvo?it). Konfigurac? pak lze ovlivnit, kter? filtry se pou?ij?, v jak?m po?ad? a s jak?m nastaven?m filtru (pokud filtr n?jak? nastaven? podporuje). Nyn? si tedy ka?d? (.NET program?tor) m??e vytv??et vlastn? filtry a konfiguraci podle oblasti, kterou trasuje nebo osobn?ch preferenc?. Shrnuto: Tato verze si nekladla za c?l lep?? rozpozn?v?n? nebo opravu n?jak?ch chyb. C?lem bylo zaveden? konfigurovatelnosti, kterou ocen? t?eba n?kte?? v?voj??i nebo pokro?ilej?? u?ivatel?. Honza 2010/3/1 Petr Dlouh? <petr.dlouhy at email.cz>: zobrazit citaci
> Ahoj, > > t?m funguje l?pe jsem myslel v jin?ch sm?rech - nap??klad ?asto spr?vn? > ignoruje nesouvisej?c? ??ry zasahuj?c? do trasovan?ho objektu. > > Myslel jsem, ?e SmallHoleRemover m? probl?m tenk?ch ?ar ?e?it. > > Mimochodem: v Traceru jsou st?le n?kter? otravn? chyby z d??v?j?ka - ob?as > trasovan? oblast v?bec neobsahuje bod, na kter? jsem kliknul; n?kdy > "vyst?eluj?" body z objektu daleko za jeho hranici; ob?as hl?s? > "IndexOutOfRangeException". > > On Mon, 01 Mar 2010 18:13:33 +0100, Jan Bilak <jan.bilak.osm at gmail.com> > wrote: > >> 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 at 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 at 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 at openstreetmap.org >>>> http://lists.openstreetmap.org/listinfo/talk-cz >>> >>> >>> -- >>> Petr Dlouh? >>> >>> _______________________________________________ >>> Talk-cz mailing list >>> Talk-cz at openstreetmap.org >>> http://lists.openstreetmap.org/listinfo/talk-cz >>> >> >> _______________________________________________ >> Talk-cz mailing list >> Talk-cz at openstreetmap.org >> http://lists.openstreetmap.org/listinfo/talk-cz > > > -- > Petr Dlouh? > > _______________________________________________ > Talk-cz mailing list > Talk-cz at openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-cz >

5.3.2010 05:08:48 (#11)
gravatar

MP

<singularita at gmail.com>
306
zobrazit citaci
> SmallHoleRemover je sp??e uk?zkov? filtr, ne? filtr, kter? by to > opravdu dob?e ?e?il. V r?mci ?pravy traceserveru tak, aby byl > konfigovateln?, jsem se rozhodl vytvo?it dva typy filtr?. Jeden typ > um? pozm?nit ?ernob?lou bitmapu (a tedy nap?. lze pomoc? takov?ho typu > filtru zacelovat d?ry). Druh? typ filtru pak slou?? k redukci > (p??padn? i p?id?n?) bod? na obrysu trasovan?ho domu.
Napsal jsem LargeHoleRemover, ten v podstate provede dilataci strukturnim elementem NxN, kde N je od 2 do 15 (default 4). Slozitost ma vzhledem k N linearni. Je to v priloze (zdrojak + Makefile + binarka + README), na tenkostenny katastr to funguje dobre (odzkouseno :), nicmene na katastr se silnejsimi stenami to funguje o neco hure a obcas nespojuje budovy (protoze steny jsou pak moc tluste ...) Takze to bohuzel znamena nutnost prepinat konfiguraci, na "normalnim" katastru nechat starou konfiguraci, na tenkostenem pridat tenhle filtr (viz. README) Mozna by pak stalo za to dat moznost konfiguraci prepinat nejak za behu, ale jelikoz po prepnuti konfigurace to stejne chce promazat *.kn soubory, tak by to vlastne ani moc nepomohlo. Napadla mne ale moznost, jak to prepinani usnadnit upravou traceru: 1) V config.xml by se dal specifikovat adresar, kam si tracer uklada .kn soubory. 2) Tracer by na commandline mohl brat jako argument jmeno konfiguraku ktery ma pouzit Potom by slo vytvorit treba config-tenkostenny.xml a config-normalni.xml, v kazdem definovat vlastni adresar na .kn soubory. Pak by stacilo jen pri prechodu na druhy typ katastru tracer stopnout a spustit znovu s druhym konfigurakem bez nutnosti mazani cache. Navic pak by sel napsat skript ve stylu "while (true) {tracer tenkostenny;tracer tlustostenny}" a pak ESC v okne s tracerem prepina mezi konfiguracemi a zavreni okna ukoncuje tracer :) Martin -------------- next part -------------- A non-text attachment was scrubbed... Name: largehole.zip Type: application/zip Size: 2754 bytes Desc: not available URL: <http://lists.openstreetmap.org/pipermail/talk-cz/attachments/20100305/b2ab8d51/attachment.zip>

« zpět na výpis měsíce