Ahoj, přidal jsem podporu nějakého nastavení TraceServeru: http://jabi.aspone.cz/osm/TraceServerBeta5.zip
<filter name="SmallHoleRemover" />
Ahoj, přidal jsem podporu nějakého nastavení TraceServeru: http://jabi.aspone.cz/osm/TraceServerBeta5.zip
<filter name="SmallHoleRemover" />
On 27/02/2010, Jan Bilak <jan.bilak.osm na gmail.com> wrote:Ahoj, přidal jsem podporu nějakého nastavení TraceServeru: http://jabi.aspone.cz/osm/TraceServerBeta5.zipTak 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 na openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz
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 na gmail.com> napsal(a):On 27/02/2010, Jan Bilak <jan.bilak.osm na gmail.com> wrote:Ahoj, přidal jsem podporu nějakého nastavení TraceServeru: http://jabi.aspone.cz/osm/TraceServerBeta5.zipTak 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 na openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz
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?
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?
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
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
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>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 } }
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_______________________________________________ Talk-cz mailing list Talk-cz na openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-cz
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 na 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 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_______________________________________________ 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
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.
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.
Otevře váš e-mailový klient. Odpovědi pak sledujte zde na webu.