[Mapserver-DE] getshape auf Postgis braucht oid?
Martin Spott
Martin.Spott at mgras.net
Don Mar 2 10:12:01 CET 2006
Moin !
Frank Koormann wrote:
> * Martin Spott <Martin.Spott at mgras.net> [060301 18:25]:
>>
>> Setze den Parameter 'log_statement' in der 'postgresql.conf' auf "all",
>> dann siehst Du im Log der Datenbank, dass PostGIS explizit eine Query
>> formuliert, die das Vorhandensein einer OID erfordert. Ist keine
>> Vorhanden, gibt's auch keine Ergebnismenge - obgleich die Daten
>> eigentlich in der DB stehen,
>
> Das kann ich mit einer Kombination PostgreSQL 8.1.3, PostGIS 1.1.1 und
> MapServer 4.6/4.8 nicht bestätigen. Welche Versionen setzt Du ein?
PostgreSQL 8.1.3, PostGIS 1.1.1 und Mapserver 4.6.2. Ich hatte mir die
Query mal aus dem Logfile gepflueckt nud zu Fuss ausgefuehrt: Das
Ergebis war tatsaechlich leer. In der Map-Datei steht als Deklaration
der Daten nur der standard-Text, z.B.:
DATA "wkb_geometry from lakes_lake"
Dann sucht der Mapserver natuerlich nach
asbinary(force_collection(force_2d(wkb_geometry)),'XDR')
aber auch nach:
gid::text
Die 'gid' hab' ich nicht, aber das kann ich ihm beibringen, indem ich
die Deklaration um:
USING UNIQUE <irgendwas>
erweitere. Wirklich ein Ergebnis bekomme ich jedenfalls nur dann, wenn
ich als UNIQUE die OID abgebe - gesetzt den Fall, sie ist vorhanden.
Stoert es, wenn ich an dieser Stelle weiterfuehrende Probleme mit
Mapserver und PostGIS schildere ? Ich haenge naemlich nun am naechsten
Problem und habe noch keine Loesung dazu. Meistens, aber nicht immer
bekomme ich beim Ausfuehren meiner Query, also diejenige, die der
Mapserver zusammenbaut:
BEGIN;
DECLARE mycursor BINARY CURSOR FOR SELECT asbinary(force_collection(force_2d(wkb_geometry)),'XDR'),oid::text from lakes_lake WHERE wkb_geometry && setSRID('BOX3D(8.09 46.57, 11.25 49)'::BOX3D, find_srid('','lakes_lake','wkb_geometry') );
FETCH ALL in mycursor;
COMMIT;
.... einen Fehler zurueck, und der sieht so aus:
ERROR: Operation on two geometries with different SRIDs
Ich habe die Daten zumindest in der Tabelle 'lakes_lake' alle fein mit
einer SRID von '-1' importiert (mittels 'shp2pgsql' und dann in einen
'psql' gepfiffen). Lasse ich die SRID aus, sehe ich denselben Fehler.
Der Fehler tritt nicht immer auf, aber ich habe noch nicht ermittelt,
wann genau er nicht auftritt. Das Trial-and-Error braucht in diesem
Fall so ewig viel Zeit ....
Hast Du dazu eine flinke Idee ?
Tschuess,
Martin.
--
Unix _IS_ user friendly - it's just selective about who its friends are !
--------------------------------------------------------------------------
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)