postgis / buffer / mapfile

Hallo Liste!

Ich will auf ein Punkt-Shape, das in einer Postgresql-DB gespeichert ist, eine Puffer-Funktion anwenden, welche ich über ein Mapfile aufrufe. Meine misslungenen Versuche füge ich bei.

LAYER
   #an dieser Stelle wird der moos-Layer dargestellt
END

LAYER 
  NAME "buffer"
  TYPE POINT
  #TYPE LINE
  STATUS ON 
  CONNECTIONTYPE postgis
  CONNECTION "user=postgres dbname=geo host=localhost
              password=password port=5432" 
  DATA "the_geom from (select gid, buffer(the_geom,5)) 
        FROM moos) foo USING UNIQUE gid USING SRID=31467"
  #DATA "the_geom from moos"
  #FILTER "(BUFFER (the_geom,5))"
 PROJECTION 
    "init=epsg:31467"
 END 		
 CLASS
  #EXPRESSION (buffer[the_geom],5)
  NAME "Moospunkte"
 STYLE	
  #SYMBOL 'kreis'
  #SIZE 5
  OUTLINECOLOR 50 50 50 
  COLOR 0 0 255 
 END
 END    
 METADATA
  "wms_title" "Puffer"
 END   
END

Ich bin mir nicht sicher welches TYPE ich wählen und wo die buffer-Funktion verankert werden muss.

Ich bin für jede Hilfe dankbar,
mfg,
Lukas

Was gibt Buffer denn als Geometry zurück, das würde ich mal einstellen (Ich vermute mal Polygon, dann sollten LINE und POLYGON funktionieren).
Kannst du den Buffer in der DB in einer Abfrage erzeugen?
Kommen irgendwelche Fehlermeldungen?
Ich kenn mich jetzt mit mapfiles net sooo gut aus, kann dir also leider grad nicht die entsprechende Position auf Anhieb sagen. Der SQL-Code sieht auch seltsam aus, hab aber selbst noch nicht damit im UMN gearbeitet)
Im Mapserver wiki solltes du aber was dazu finden.

http://mapserver.gis.umn.edu/

Gruß Uwe

Hallo Lukas,

auch wenn die Frage lange her und das Problem wahrscheinlich längst gelöst ist trotzdem eine Antwort, auch falls andere noch diesen Beitrag lesen und ein ähnliches Problem haben.

DATA “the_geom from (select gid, buffer(the_geom,5)) FROM moos) foo USING UNIQUE gid USING SRID=31467”

Da ist u.a. eine Klammer zuviel bei )) und vor foo muss ein AS stehen, ein weiteres AS fehlt. Wichtig ist noch zu schauen, ob die SRID richtig und gid vorhanden ist.

Das nachfolgende Beispiel zeichnet Kreise um die Centroide eines Polygonlayers.

DATA “buffer FROM (SELECT oid, buffer((centroid(the_geom)),50000) AS buffer FROM karte_1_40567_land) AS foo USING UNIQUE oid USING SRID=3035”

Viele Grüße,
Christian