Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Hab's selbst nicht ausprobiert, aber für Osmosis gibt es ein simplifyways Plugin: https://github.com/podolsir/osmosis-simplifyways Für JavaScript gibt es Simplify.js vom Leaflet-Autor: http://mourner.github.com/simplify-js/ Laut Beschreibung aus Leaflet extrahiert, müsste also auch direkt in Leaflet zu finden sein. Gruß, Norbert ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Moin, da hier schon wieder die alten JTS Quellen angegeben wurden, kurz der Hinweis, dass JTS schon länger hier: http://tsusiatsoftware.net/ zu finden ist. Da gibt es dann auch eine neuere Version, als auf der veralteten Seite. JavaDoc: http://tsusiatsoftware.net/jts/javadoc/ http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html Ändert am besten gleich alle Eure Links. Ich bin da auch schon drauf reingefallen. Grüße, Fabian -- View this message in context: http://gis.19327.n5.nabble.com/Anzahl-der-Punkte-in-einem-Polygon-fur-einen-Zoom-Level-optimieren-tp5738871p5739038.html Sent from the Germany mailing list archive at Nabble.com. ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Brauchst du noch nicht einmal: http://www.vividsolutions.com/jts/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html Das ist so ein alter Hut...da haben sie schon genug die Hörner dran abgestoßen ;-) Grüße Am 04.12.2012 15:59, schrieb Adrian Stabiszewski: Vielen Dank für die Hinweise. Douglas-Peucker sieht vielversprechend aus. Werde wohl aber eine Implementierung für Java selber schreiben müssen ;) Viele Grüße, Adrian -Ursprüngliche Nachricht- Von: Ralf Klammer [mailto:ralf_klam...@gmx.de] Gesendet: Dienstag, 4. Dezember 2012 08:10 An: Openstreetmap allgemeines in Deutsch Betreff: Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren Richtige Libraries gibt es dafür nicht...allerdings gibt es in PostGIS die Funktion ST_Simplify() in der Douglas-Peucker umgesetzt ist...http://postgis.org/docs/ST_Simplify.html Ebenso ist diese Funktion auch in gdal vorhanden...hier mal für Python: http://gdal.org/python/osgeo.ogr.Geometry-class.html#Simplify Laut Dokumentationen soll die Funktion ST_SimplifyPreserveTopology() speziell für Polygone geeignet sein...kann man aber nur bedingt empfehlen. Ich habe letztens auch mitbekommen, dass in den neuesten Mapnik Releases auch Linienvereinfachungsalgorithmen implementiert sind, finde aber gerade den spez. Link nicht mehr...nur das hier: https://github.com/mapnik/mapnik/pull/1385 Grüße Am 03.12.2012 18:49, schrieb Adrian Stabiszewski: Am 03.12.2012 18:21, schrieb Adrian Stabiszewski: Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt jemand euch noch einen Algorithmus mit dem ich die Anzahl der Punkte in einem Polygon für einen bestimmten Zoom Level optimieren kann? Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren Form des Polygons beitragen. Ich würde die Abweichung in Pixeln zwischen drei benachbarten Punkten ausrechnen. Genauer gesagt den Abstand des mittleren Punktes von der Tangente von Start und Ziel. Dazu die Auflösung. Wenn der Abstand weniger als 1 Pixel brauchst Du Dir keine Gedanken machen. Du kannst natürlich auch einen Schwellwert bestimmen. Ansonsten: ggf. Mindestabstand in Pixeln bestimmen. Wenn Punkt nicht dargestellt wird, mit nächstem Zielpunkt weiter. Start beibehalten. Ja, genau. Gibt es sowas schon fertig als Library? ;) ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
On Tue, Dec 04, 2012 at 03:59:06PM +0100, Adrian Stabiszewski wrote: > Douglas-Peucker sieht vielversprechend aus. > Werde wohl aber eine Implementierung für Java selber schreiben müssen ;) http://www.vividsolutions.com/jts/jtshome.htm Jochen -- Jochen Topf joc...@remote.org http://www.remote.org/jochen/ +49-721-388298 ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Vielen Dank für die Hinweise. Douglas-Peucker sieht vielversprechend aus. Werde wohl aber eine Implementierung für Java selber schreiben müssen ;) Viele Grüße, Adrian > -Ursprüngliche Nachricht- > Von: Ralf Klammer [mailto:ralf_klam...@gmx.de] > Gesendet: Dienstag, 4. Dezember 2012 08:10 > An: Openstreetmap allgemeines in Deutsch > Betreff: Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom > Level optimieren > > Richtige Libraries gibt es dafür nicht...allerdings gibt es in PostGIS die > Funktion ST_Simplify() in der Douglas-Peucker umgesetzt > ist...http://postgis.org/docs/ST_Simplify.html > > Ebenso ist diese Funktion auch in gdal vorhanden...hier mal für Python: > http://gdal.org/python/osgeo.ogr.Geometry-class.html#Simplify > > Laut Dokumentationen soll die Funktion ST_SimplifyPreserveTopology() > speziell für Polygone geeignet sein...kann man aber nur bedingt empfehlen. > > Ich habe letztens auch mitbekommen, dass in den neuesten Mapnik > Releases auch Linienvereinfachungsalgorithmen implementiert sind, finde > aber gerade den spez. Link nicht mehr...nur das hier: > https://github.com/mapnik/mapnik/pull/1385 > > Grüße > > > Am 03.12.2012 18:49, schrieb Adrian Stabiszewski: > >> Am 03.12.2012 18:21, schrieb Adrian Stabiszewski: > >>> Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt > >>> jemand euch noch einen Algorithmus mit dem ich die Anzahl der Punkte > >>> in einem Polygon für einen bestimmten Zoom Level optimieren kann? > >>> Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren > >>> Form des Polygons beitragen. > >> Ich würde die Abweichung in Pixeln zwischen drei benachbarten Punkten > >> ausrechnen. > >> > >> Genauer gesagt den Abstand des mittleren Punktes von der Tangente > von > >> Start und Ziel. Dazu die Auflösung. > >> > >> Wenn der Abstand weniger als 1 Pixel brauchst Du Dir keine Gedanken > >> machen. Du kannst natürlich auch einen Schwellwert bestimmen. > >> > >> Ansonsten: ggf. Mindestabstand in Pixeln bestimmen. Wenn Punkt nicht > >> dargestellt wird, mit nächstem Zielpunkt weiter. Start beibehalten. > >> > > Ja, genau. > > Gibt es sowas schon fertig als Library? ;) > > > > > > > > > > ___ > > Talk-de mailing list > > Talk-de@openstreetmap.org > > http://lists.openstreetmap.org/listinfo/talk-de > > > ___ > Talk-de mailing list > Talk-de@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-de ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Eine völlig andere Möglichkeit wäre es, die Grenzen per WMS oder ähnlichem darzustellen und nur die Hover-/Auswahl-Polygone als Vektoren zu laden. Für Openlayers gitb es hier: http://openlayers.org/dev/examples/getfeature-wfs.html ein Beispiel. Allerdings brauchst du halt dafür die Ganzen Geo-Server Geschichten zusätzlich. Grüße, Fabian -- View this message in context: http://gis.19327.n5.nabble.com/Anzahl-der-Punkte-in-einem-Polygon-fur-einen-Zoom-Level-optimieren-tp5738871p5739032.html Sent from the Germany mailing list archive at Nabble.com. ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Richtige Libraries gibt es dafür nicht...allerdings gibt es in PostGIS die Funktion ST_Simplify() in der Douglas-Peucker umgesetzt ist...http://postgis.org/docs/ST_Simplify.html Ebenso ist diese Funktion auch in gdal vorhanden...hier mal für Python: http://gdal.org/python/osgeo.ogr.Geometry-class.html#Simplify Laut Dokumentationen soll die Funktion ST_SimplifyPreserveTopology() speziell für Polygone geeignet sein...kann man aber nur bedingt empfehlen. Ich habe letztens auch mitbekommen, dass in den neuesten Mapnik Releases auch Linienvereinfachungsalgorithmen implementiert sind, finde aber gerade den spez. Link nicht mehr...nur das hier: https://github.com/mapnik/mapnik/pull/1385 Grüße Am 03.12.2012 18:49, schrieb Adrian Stabiszewski: Am 03.12.2012 18:21, schrieb Adrian Stabiszewski: Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt jemand euch noch einen Algorithmus mit dem ich die Anzahl der Punkte in einem Polygon für einen bestimmten Zoom Level optimieren kann? Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren Form des Polygons beitragen. Ich würde die Abweichung in Pixeln zwischen drei benachbarten Punkten ausrechnen. Genauer gesagt den Abstand des mittleren Punktes von der Tangente von Start und Ziel. Dazu die Auflösung. Wenn der Abstand weniger als 1 Pixel brauchst Du Dir keine Gedanken machen. Du kannst natürlich auch einen Schwellwert bestimmen. Ansonsten: ggf. Mindestabstand in Pixeln bestimmen. Wenn Punkt nicht dargestellt wird, mit nächstem Zielpunkt weiter. Start beibehalten. Ja, genau. Gibt es sowas schon fertig als Library? ;) ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
On Monday 03 December 2012, Adrian Stabiszewski wrote: > > Ich spiele gerade mit einer Karte rum, wo man Gemeinden auswählen > kann: http://grundid.de/data/gemeinden/ > > Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt jemand > euch noch einen Algorithmus mit dem ich die Anzahl der Punkte in > einem Polygon für einen bestimmten Zoom Level optimieren kann? Zur Vereinfachung von Linien gibt es die gängigen Methoden Douglas– Peucker[1] und Visvalingam[2]. Bei der Anwendung an Polygonen ist allerdings Vorsicht geboten, da die Vereinfachung zu ungültigen Topologien führen kann. Douglas–Peucker kannst Du mit OGR ausprobieren (ogr2ogr -simplify). Eigentlich ist es auch etwas heikel, derart vereinfachte Linien direkt in einer Karte darzustellen, da die entstehenden scharfen Ecken künstlich sind. Für Grenzen ist das jedoch nicht so problematisch (denn die haben sowieso oft Ecken). [1] http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm [2] http://www2.dcs.hull.ac.uk/CISRG/publications/DPs/DP10/DP10.html Grüße, -- Christoph Hormann http://www.imagico.de/ ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
> Am 03.12.2012 18:21, schrieb Adrian Stabiszewski: > > Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt jemand > > euch noch einen Algorithmus mit dem ich die Anzahl der Punkte in einem > > Polygon für einen bestimmten Zoom Level optimieren kann? > > Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren Form > > des Polygons beitragen. > > Ich würde die Abweichung in Pixeln zwischen drei benachbarten Punkten > ausrechnen. > > Genauer gesagt den Abstand des mittleren Punktes von der Tangente von > Start und Ziel. Dazu die Auflösung. > > Wenn der Abstand weniger als 1 Pixel brauchst Du Dir keine Gedanken > machen. Du kannst natürlich auch einen Schwellwert bestimmen. > > Ansonsten: ggf. Mindestabstand in Pixeln bestimmen. Wenn Punkt nicht > dargestellt wird, mit nächstem Zielpunkt weiter. Start beibehalten. > Ja, genau. Gibt es sowas schon fertig als Library? ;) ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Der Douglas-Peucker-Algorithmus könnte sowas bewerkstelligen: http://de.wikipedia.org/wiki/Douglas-Peucker-Algorithmus Gruß rainer ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de
Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren
Am 03.12.2012 18:21, schrieb Adrian Stabiszewski: Das Ganze ist noch etwas langsam weil halt viele Punkte. Kennt jemand euch noch einen Algorithmus mit dem ich die Anzahl der Punkte in einem Polygon für einen bestimmten Zoom Level optimieren kann? Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren Form des Polygons beitragen. Ich würde die Abweichung in Pixeln zwischen drei benachbarten Punkten ausrechnen. Genauer gesagt den Abstand des mittleren Punktes von der Tangente von Start und Ziel. Dazu die Auflösung. Wenn der Abstand weniger als 1 Pixel brauchst Du Dir keine Gedanken machen. Du kannst natürlich auch einen Schwellwert bestimmen. Ansonsten: ggf. Mindestabstand in Pixeln bestimmen. Wenn Punkt nicht dargestellt wird, mit nächstem Zielpunkt weiter. Start beibehalten. ___ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de