Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren

2012-12-04 Diskussionsfäden Fabian Patzke
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

2012-12-04 Diskussionsfäden 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


Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren

2012-12-04 Diskussionsfäden Jochen Topf
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

2012-12-04 Diskussionsfäden Ralf Klammer
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

2012-12-04 Diskussionsfäden Fabian Patzke
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

2012-12-04 Diskussionsfäden Norbert Renner
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


[Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren

2012-12-03 Diskussionsfäden Adrian Stabiszewski
Hi!

Dies ist eine technische Frage, aber vielleicht hat jemand von euch schon
sowas Ähnliches gemacht.

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?
Sprich: Punkte entfernen, wenn sie sowieso nicht mehr zur äußeren Form des
Polygons beitragen.

Für Tipps wäre ich dankbar.

Viele Grüße,
Adrian.


___
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

2012-12-03 Diskussionsfäden Thomas Reincke

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


Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren

2012-12-03 Diskussionsfäden Rainer Kluge
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

2012-12-03 Diskussionsfäden 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


Re: [Talk-de] Anzahl der Punkte in einem Polygon für einen Zoom Level optimieren

2012-12-03 Diskussionsfäden Christoph Hormann
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

2012-12-03 Diskussionsfäden Ralf Klammer
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