ST_OffsetCurve

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

ST_OffsetCurve

PJ Hooker
This post was updated on .
>
> Tra parentesi, la MakeLine (e le MakePoint, MakePoly*) sono figlie mie...
> ... piezz'e'core :)


x Sandro Santilli, complimenti per le figlie!

ma... visto che allora sono in gioco, per la creazione dei marciapiedi, ho
sentito il bisogno di *ST_OffsetCurve* che all'esucuzione della query di
prova in pgadmin mi da errore.

QUERY:


SELECT ST_AsText(ST_OffsetCurve(ST_GeomFromText(
'LINESTRING(164 16,144 16,124 16,104 16,84 16,64 16,
        44 16,24 16,20 16,18 16,17 17,
        16 18,16 20,16 40,16 60,16 80,16 100,
        16 120,16 140,16 160,16 180,16 195)'),
        15, 'quad_segs=4 join=round'));

presa da:
http://postgis.refractions.net/documentation/manual-svn/ST_OffsetCurve.html

ERRORE:

ERROR:  function st_offsetcurve(geometry, integer, unknown) does not exist
RIGA 1: SELECT ST_AsText(ST_OffsetCurve(ST_GeomFromText(
                         ^
HINT: No function matches the given name and argument types. You might need
to add explicit type casts.


********** Errore **********

ERROR: function st_offsetcurve(geometry, integer, unknown) does not exist
Stato SQL: 42883
Suggerimento: No function matches the given name and argument types. You
might need to add explicit type casts.
Carattere: 18

Ho l'impressione che non sappia che *ST_OffsetCurve* sia una funzione,
quindi ho controllato le versione delle mie installazioni: Postgis 1.5.2.2,
Postgresql 8.4.8, libgeos 3.2.0 e 3.2.2 (uso il PPA di Launchpad UbuntuGis)

*Cosa faccio?*

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
527 iscritti al 7.7.2011
Reply | Threaded
Open this post in threaded view
|

Re: ST_OffsetCurve

Andrea Peri
>SELECT ST_AsText(ST_OffsetCurve(ST_GeomFromText(
>'LINESTRING(164 16,144 16,124 16,104 16,84 16,64 16,
>	44 16,24 16,20 16,18 16,17 17,
>	16 18,16 20,16 40,16 60,16 80,16 100,
>	16 120,16 140,16 160,16 180,16 195)'),
>	15, 'quad_segs=4 join=round'));
>
>presa da:
>http://postgis.refractions.net/documentation/manual-svn/ST_OffsetCurve.html
>
>ERRORE:
>
>ERROR:  function st_offsetcurve(geometry, integer, unknown) does not exist
>RIGA 1: SELECT ST_AsText(ST_OffsetCurve(ST_GeomFromText(
>
>*Cosa faccio?*

Fai caso a quello che ti dice l'errore e quello che dice il manuale che hai preso.

function st_offsetcurve(geometry, integer, unknown) 

L'errore ti dice che chiami una funzione che possiede come primo parametro
una geometria, come secondo un intero e come terzo un qualcosa di sconosciuto.

se leggi il manuale al link che hai indicato, ci trovi scritto che la funzione
come secondo parametro si aspetta un Float, non in Integer.

Da qui l'errore.

E infatti te ci metti un integer (15). Se lo vuoi indicare come float devi metterci una virgola e uno zero.
Poi ricordati che in inglese la virgola si indica con il punto.

per cui
15.0

Saluti,

--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
527 iscritti al 7.7.2011
Reply | Threaded
Open this post in threaded view
|

Re: ST_OffsetCurve

PJ Hooker
This post was updated on .
Ho capito una cosa... non ho la funzione, come immaginavo e quindi ho tentato di capire se è colpa di un mio aggiornamento oppure no...

insomma sto cercando di aggiungere la funzione, visto che ho verificato in pgadmin che non è nell'elenco, tramite quello che ho capito di questo post:
http://trac.osgeo.org/postgis/ticket/413
che spiega di una patch by rafalmag

di cui non riesco a capire come usare gli Attachments:

postgis-1.5.0-RafalMagda.patch  (5.2 KB) - added by rafalmag 20 months ago.
Usage: tar xvfz postgis-1.5.0.tar.gz && patch -p0 < postgis-1.5.0-RafalMagda?.patch
postgis-offsetCurve-RafalMagda.patch  (6.4 KB) - added by rafalmag 19 months ago.
usage: svn co  http://svn.osgeo.org/postgis/trunk/ -r 5389 && patch -p0 < postgis-offsetCurve-RafalMagda?.patch
postgres_geos_OffsetCurve_stacktrace-20110510.txt  (21.5 KB) - added by sholl 5 monthsago.
Stacktrace for comment28 of a segfaulting postgres-backend.

ma come si fa per tabelle, viste, spatial_rel, ecc... sono in cerca di fare l'add function così ho trovato:
http://trac.osgeo.org/postgis/attachment/ticket/413/postgis-offsetCurve-RafalMagda.patch
che in fondo alla pagina incomincia ad indicarmi del testo per fare add function

-- Availability: 2.0.0 - requires GEOS-3.2 or higher
CREATE OR REPLACE FUNCTION _ST_OffsetCurve(geometry,float8,cstring,cstring)
RETURNS geometry
AS '$libdir/postgis-1.5','offsetcurve'
LANGUAGE 'C' IMMUTABLE STRICT
COST 100;
...
 
e a questo punto, restituendomi un errore:
could not find function "offsetcurve" in file "/usr/lib/postgresql/8.4/lib/postgis-1.5.so
 sto scaricando il DVD live di OSGeo, per vedere se li è tutto a posto... e posso continuare col mio grafo, ma in questo momento ho problemi a scaricarlo, e ne ho già avuti anche nei giorni precedenti...

ho fatto diversi tentativi per installare postgis2.0.0, ma non sono riuscito.

infatti ho provato a fare la stessa query cambiando postgis-1.5 con postgis2.0 e mi da un errore diverso:

ERROR:  could not load library "/usr/lib/postgresql/8.4/lib/postgis-2.0.so": /usr/lib/postgresql/8.4/lib/postgis-2.0.so: undefined symbol: GEOSRelatePatternMatch

ps. per Andrea Peri ho visto la risposta e oltre ad aver preso l'esempio sulla pagina di documentazione e avendo quindi fatto un paio di prove 15.0 o mettendo ::float, ma evidentemente quello è passo successivo, a questo punto; a proposito ho anche una specie di stratagemma per individuare questi errori, cioè quello di partire da funzioni simili come ST_Buffer e sapendo che in una funzionano, dovrebbero funzionare anche nell'altra e se non è così, l'errore non è quello; infatti all'inizio pensavo che l'errore era dovuto al 'quad_segs=4 join=bevel' ma poi ho scoperto che essendo simile in ST_Buffer e che li funzionava, allora sono passato oltre...

 ps2. sinceramente se ci fosse una guida con le varie procedure per avere un sistema postgresql/postgis/geos/qgis tipo nightly build o simili, da installare da capo su una macchina virtuale nuova... non mi dispiacerebbe passarci il weekend... :-)

ps3. ho trovato questo bel doc: GEOS-advanced (http://www.gaia-gis.it/GEOS-advanced.pdf)