[Talk-de] AddGeometryColumn() War: Re: Abstände zu POIs visualisieren?

Stefan Schwan stefan.schwan at googlemail.com
Do Nov 12 18:06:21 UTC 2009


Hallo!

Frederik Ramm schrieb:
> 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>
Als absoluter Anfänger habe ich das mal ausprobiert: Ich bekomme von 
Mapnik so nur eine Fehlermeldung:

UserWarning: PostGIS Driver Error: Geometry column not specified or 
found in geometry_columns table: 'postboxareas'. Try setting the 
'geometry_field' parameter or adding a proper geometry_columns record 
(encountered during parsing of layer 'postboxarealayer')

Ich habe inzwischen herausbekommen, das die Funktion addgeometrycolumn 
hier Abhilfe schaffen soll, und die neue Tabelle mit der fehlenden 
Spalte ausrüstet und sie der Tabelle  geometry_columns einträgt.

Ich habe also versucht, nach 

CREATE TABLE postboxareas AS SELECT buffer(way, 500) FROM 
planet_osm_point WHERE amenity='post_box';

die Abfrage

SELECT AddGeometryColumn ( 'postboxareas', 'geom', 900913, 'POLYGON', 2 );
auszuführen.

Mapnik reagiert darauf allerdings nur mit:
"bad lexical cast: source type value could not be interpreted as target"

Mein nächster Ansatz war, die Tabelle erstmal leer zu erzeugen, und 
AddGeometryColumn darauf anzuwenden, bevor die Daten reinkommen:

CREATE TABLE postboxareas2 (buffer GEOMETRY);
SELECT AddGeometryColumn ( 'postboxareas2', 'geom', 900913, 'POLYGON', 2 );
INSERT INTO postboxareas2 select buffer(way, 500) FROM planet_osm_point 
WHERE amenity='post_box';

Ergebnis ist aber erneut:
"bad lexical cast: source type value could not be interpreted as target"

Stimmt da jetzt etwas an meiner osm.xml nicht, oder bin ich das 
Ausführen von AddGeometryColumn falsch angegangen?
Wie gehts richtig?

Vielen Dank,
Stefan




Mehr Informationen über die Mailingliste Talk-de