Hi, SB79 wrote: > vielen Dank, Frederik, für diese Hinweise! Ich bin leider noch > unerfahren, was PostGIS anbelangt, daher würde ich mich Alexanders > Frage nach einem Pseudocode anschließen - sofern Dir das nicht zu sehr > die Zeit stiehlt. :-)
Also ich hab das jetzt nicht im Detail ausprobiert, aber wenn Du eine mit osm2pgsql eingelesene Datenbank hast, dann kannst Du erstmal gucken, wieviele Briefkaesten Du hast: select count(*) from planet_osm_point where amenity='post_box'; Dann eine Tabelle herstellen, lauter Kreise von 500m um jeden Briefkasten hat (das geht einfach so, weil osm2pgsql ja normalerweise in einer sphaerischen Mercator-Projektion importiert, deren Einheit Meter sind): create table postboxareas as select buffer(way, 500) from planet_osm_point where amenity='post_box'; Die koennte man jetzt mit einer geeigneten Mapnik-Regel bereits sichtbar machen - bei Mapnik hat man ja immer einen "Style" und einen "Layer" dazu, das muesste etwa so aussehen: <Style name="postboxareas"> <Rule> <PolygonSymbolizer> <CssParameter name="fill">#ddd</CssParameter> </PolygonSymbolizer> </Rule> </Style> ... <Layer name="postboxarealayer"> <StyleName>postboxareas</StyleName> <Datasource> <hier die ganzen PostGIS-Zugangsparameter, Username, Passwrd usw.> <Parameter name="table">postboxareas</Parameter> </Datasource> </Layer> Nun wolltet ihr ja nicht die Briefkastenbereiche, sondern die "nicht-Briefkasten-Bereiche". Dazu wuerde ich erstmal ein grosses Polygon herstellen, dass den gesamten interessierenden Bereich umfasst, das geht so: select ST_GeomFromText('POLYGON((-20037508 -19929239,-20037508 19929239,20037508 19929239,20037508 -19929239,-20037508 -19929239))',900913) Das ist ein Polygon, das die ganze Welt umfasst, die Koordinaten sind in der sphaerischen Mercatorprojektion (EPSG:900913) angegeben. Jetzt will ich alle Briefkastenpolygone zu einem zusammenfassen, diese "Summe" dann von o.g. Polygon abziehen, und das Ergebnis wieder in eine Tabelle schreiben: create table wo_keine_briefkaesten_sind as select difference(ST_GeomFromText('POLYGON((-20037508 -19929239,-20037508 19929239,20037508 19929239,20037508 -19929239,-20037508 -19929239))',900913), (select geomunion(buffer) from postboxareas)); Das ergibt eine neue Tabelle namens wo_keine_briefkaesten_sind, die nur ein einziges Polygon enthaelt, in dem nun die gewuenschte Differenz steht. Dieses muesste man wie oben skizziert auch in Mapnik sichtbar machen koennen. Mit dem Open-Source-Programm "Quantum GIS" (qgis) kann man uebrigens auch direkt auf PostGIS zugreifen und die Inhalte von Tabellen sichtbar machen. Dabei ist manchmal der PostGIS-Befehl "alter table xyz add column gid serial unique" nuetzlich (Du merkst dann schon, wann). Wie gesagt, ich hab das jetzt nicht alles durchprobiert, nur schnell die PostGIS-Befehle eingetippt um zu gucken, ob keine Tippfehler drin sind. Vermutlich gibt es noch 1000 andre Wege, um das gleiche zu erreichen, ich glaube, wir haben hier ein paar Spezialisten, die werden sich dann schon melden ,-) Bye Frederik -- Frederik Ramm ## eMail frede...@remote.org ## N49°00'09" E008°23'33" _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de