[Gfoss] ruotare un poligono

salve,
ho una griglia, poligono, su qgis
e la vorrei ruotare di qualche grado su se stessa.

Posso farlo in qualche modo?

Vi ringrazio (e scusate se non uso i termini giusti)

Maurizio Marrese

Ciao Maurizio,

non l'ho provato ma c'è questo script basato su OGR:

http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/vec_tr.py

devi codificare la logica della tua trasformazione (una rototraslazione
o trasformazione affine) nella funzione TransformPoint( xyz ).

Buon lavoro

Sig

Il giorno ven, 25/05/2012 alle 12.42 +0200, Maurizio Marrese ha scritto:

salve,
ho una griglia, poligono, su qgis
e la vorrei ruotare di qualche grado su se stessa.

Posso farlo in qualche modo?

Vi ringrazio (e scusate se non uso i termini giusti)

Maurizio Marrese

_______________________________________________
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.
584 iscritti al 7.4.2012

_____________
PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

On Fri, 25 May 2012 16:31:57 +0200, Luca Sigfrido Percich wrote:

non l'ho provato ma c'è questo script basato su OGR:

http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/vec_tr.py

devi codificare la logica della tua trasformazione (una rototraslazione
o trasformazione affine) nella funzione TransformPoint( xyz ).

lo puoi fare anche con SpatiaLite:

RotateCoordinates( geom Geometry , angleInDegrees Double precision ) : Geometry

"return a geometric object obtained by rotating coordinates
according to angleInDegrees value"

ciao Sandro

--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

Sig

Il giorno ven, 25/05/2012 alle 16.38 +0200, a.furieri@lqt.it ha scritto:

RotateCoordinates( geom Geometry , angleInDegrees Double precision ) :
Geometry

"return a geometric object obtained by rotating coordinates
according to angleInDegrees value"

_____________
PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich wrote:

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

quello piu' scemo ed ovvio ... (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
"return a geometric object obtained by translating coordinates according
to shiftX and shiftY values"

quindi innestando a catena uno shift, un rotate ed un ultimo shift
esattamente simmetrico al primo ti puoi posizionare l'asse di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro

--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e'
risultato non infetto.

In pausa caffè ho creato uno script che potrebbe tornarti comodo:

http://www.giovanniallegri.it/share/rotlayer.txt

Copialo e incollalo dentro la console di Python di Qgis.
e poi scrivi:

rotalyer(‘griglia’,45)

ovvero, nome del layer contenente la griglia di poligoni e l’angolo in gradi.
Vedi questa figura: http://www.giovanniallegri.it/share/rotlayer.png

E’ molto rudimentale, e funziona solo per griglie con poligoni e non multipolygons. Ci vuole poco a sistemarlo, ma la pausa caffè è già finita :slight_smile:

giovanni

Il giorno 25 maggio 2012 17:53, <a.furieri@lqt.it> ha scritto:

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich wrote:

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

quello piu’ scemo ed ovvio … (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
“return a geometric object obtained by translating coordinates according
to shiftX and shiftY values”

quindi innestando a catena uno shift, un rotate ed un ultimo shift
esattamente simmetrico al primo ti puoi posizionare l’asse di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro


Il messaggio e’ stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e’
risultato non infetto.


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.
584 iscritti al 7.4.2012

PS: visto che chiedevi la rotazione su se stessa della griglia, ho posto come centro di rotazione il centro dell’estensione della grigila.

Il giorno 25 maggio 2012 18:15, G. Allegri <giohappy@gmail.com> ha scritto:

In pausa caffè ho creato uno script che potrebbe tornarti comodo:

http://www.giovanniallegri.it/share/rotlayer.txt

Copialo e incollalo dentro la console di Python di Qgis.
e poi scrivi:

rotalyer(‘griglia’,45)

ovvero, nome del layer contenente la griglia di poligoni e l’angolo in gradi.
Vedi questa figura: http://www.giovanniallegri.it/share/rotlayer.png

E’ molto rudimentale, e funziona solo per griglie con poligoni e non multipolygons. Ci vuole poco a sistemarlo, ma la pausa caffè è già finita :slight_smile:

giovanni

Il giorno 25 maggio 2012 17:53, <a.furieri@lqt.it> ha scritto:

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich wrote:

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

quello piu’ scemo ed ovvio … (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
“return a geometric object obtained by translating coordinates according
to shiftX and shiftY values”

quindi innestando a catena uno shift, un rotate ed un ultimo shift
esattamente simmetrico al primo ti puoi posizionare l’asse di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro


Il messaggio e’ stato analizzato alla ricerca di virus o
contenuti pericolosi da MailScanner, ed e’
risultato non infetto.


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.
584 iscritti al 7.4.2012

Infatti temevo potesse essere rispetto al centroide, ma ora che vedo la
rototraslazione implementata con due funzioni piccole e specializzate -
questo si che è programmare - non dubito più :))))

Grazie ancora

Sig

Il giorno ven, 25/05/2012 alle 17.53 +0200, a.furieri@lqt.it ha scritto:

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich wrote:
> Grazie delle info, Sandro.
>
> Rispetto a quale punto viene applicata la rotazione?
>

quello piu' scemo ed ovvio ... (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY
Double precision ) : Geometry
"return a geometric object obtained by translating coordinates
according
to shiftX and shiftY values"

quindi innestando a catena uno shift, un rotate ed un ultimo shift
esattamente simmetrico al primo ti puoi posizionare l'asse di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro

_____________
PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

Il giorno 25 maggio 2012 18:23, Luca Sigfrido Percich <sigfrido@tiscali.it> ha scritto:

Infatti temevo potesse essere rispetto al centroide, ma ora che vedo la
rototraslazione implementata con due funzioni piccole e specializzate -
questo si che è programmare - non dubito più :))))

Se ti riferisci allo script, per cambiare il centro di rotazione basta che setti bboxcx e bboxcy diversamente.

Ciao,
giovanni

Grazie ancora

Sig

Il giorno ven, 25/05/2012 alle 17.53 +0200, a.furieri@lqt.it ha scritto:

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich wrote:

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

quello piu’ scemo ed ovvio … (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY
Double precision ) : Geometry
“return a geometric object obtained by translating coordinates
according
to shiftX and shiftY values”

quindi innestando a catena uno shift, un rotate ed un ultimo shift
esattamente simmetrico al primo ti puoi posizionare l’asse di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro


PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e’ consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e’ contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e’ consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e’ contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).


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.
584 iscritti al 7.4.2012

No, mi riferivo alle due funzioni disponibili in spatialite di cui
parlava Sandro.

Grazie per lo script, molto illuminante!

Se il modello di accesso alle geometrie di QGIS è (lo stesso di /
compatibile con) OGR, si può modificare direttamente vertice per vertice
la geometria trattandola come Geometry, vedi la funzione
WalkAndTransform( geom ) da [1] che va sia con le (multi) che con le
geometrie semplici indipendentemente dal tipo. Che dici?

Sig

[1] http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/vec_tr.py

Il giorno ven, 25/05/2012 alle 18.27 +0200, G. Allegri ha scritto:

Il giorno 25 maggio 2012 18:23, Luca Sigfrido Percich
<sigfrido@tiscali.it> ha scritto:
        
        Infatti temevo potesse essere rispetto al centroide, ma ora
        che vedo la
        rototraslazione implementata con due funzioni piccole e
        specializzate -
        questo si che è programmare - non dubito più :))))

Se ti riferisci allo script, per cambiare il centro di rotazione basta
che setti bboxcx e bboxcy diversamente.

Ciao,
giovanni

        Grazie ancora
        
        Sig
        
        Il giorno ven, 25/05/2012 alle 17.53 +0200, a.furieri@lqt.it
        ha scritto:
        > On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich
        wrote:
        > > Grazie delle info, Sandro.
        > >
        > > Rispetto a quale punto viene applicata la rotazione?
        > >
        >
        > quello piu' scemo ed ovvio ... (0,0) :slight_smile:
        > insomma, ti fa semplicemente ruotare tutto il piano
        >
        > ma esiste anche questa qua:
        > ShiftCoordinates( geom Geometry , shiftX Double precision ,
        shiftY
        > Double precision ) : Geometry
        > "return a geometric object obtained by translating
        coordinates
        > according
        > to shiftX and shiftY values"
        >
        > quindi innestando a catena uno shift, un rotate ed un ultimo
        shift
        > esattamente simmetrico al primo ti puoi posizionare l'asse
        di rotazione
        > dove meglio credi ((p.es. sul centroide del poligono).
        >
        > ciao Sandro
        >
        
        _____________
        PRIVACY
        Le informazioni contenute in questo messaggio sono riservate e
        confidenziali. Il loro utilizzo e' consentito esclusivamente
        al destinatario del messaggio, per le finalità indicate nel
        messaggio stesso. Qualora Lei non fosse la persona a cui il
        presente messaggio è destinato, La invitiamo ad eliminarlo dal
        Suo Sistema e a distruggere le varie copie o stampe, dandone
        gentilmente comunicazione all’indirizzo mail del mittente.
        Ogni utilizzo improprio e' contrario ai principi del D.lgs
        196/03 e alla legislazione europea (Direttiva 2002/58/CE).
        
        PRIVACY
        Le informazioni contenute in questo messaggio sono riservate e
        confidenziali. Il loro utilizzo e' consentito esclusivamente
        al destinatario del messaggio, per le finalità indicate nel
        messaggio stesso. Qualora Lei non fosse la persona a cui il
        presente messaggio è destinato, La invitiamo ad eliminarlo dal
        Suo Sistema e a distruggere le varie copie o stampe, dandone
        gentilmente comunicazione all’indirizzo mail del mittente.
        Ogni utilizzo improprio e' contrario ai principi del D.lgs
        196/03 e alla legislazione europea (Direttiva 2002/58/CE).
        
        _______________________________________________
        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.
        584 iscritti al 7.4.2012

_____________
PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e' consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e' contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

Bhè, certo che si può generalizzare. La funzioncina era solo per rispondere alla richiesta specifica di Murizio (che ne frattempo avrà sicuramente risolto in altro modo!).

ciao

Il giorno 25 maggio 2012 18:33, Luca Sigfrido Percich <sigfrido@tiscali.it> ha scritto:

No, mi riferivo alle due funzioni disponibili in spatialite di cui
parlava Sandro.

Grazie per lo script, molto illuminante!

Se il modello di accesso alle geometrie di QGIS è (lo stesso di /
compatibile con) OGR, si può modificare direttamente vertice per vertice
la geometria trattandola come Geometry, vedi la funzione
WalkAndTransform( geom ) da [1] che va sia con le (multi) che con le
geometrie semplici indipendentemente dal tipo. Che dici?

Sig

[1] http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/vec_tr.py

Il giorno ven, 25/05/2012 alle 18.27 +0200, G. Allegri ha scritto:

Il giorno 25 maggio 2012 18:23, Luca Sigfrido Percich
<sigfrido@tiscali.it> ha scritto:

Infatti temevo potesse essere rispetto al centroide, ma ora
che vedo la
rototraslazione implementata con due funzioni piccole e
specializzate -
questo si che è programmare - non dubito più :))))

Se ti riferisci allo script, per cambiare il centro di rotazione basta
che setti bboxcx e bboxcy diversamente.

Ciao,
giovanni

Grazie ancora

Sig

Il giorno ven, 25/05/2012 alle 17.53 +0200, a.furieri@lqt.it
ha scritto:

On Fri, 25 May 2012 17:36:43 +0200, Luca Sigfrido Percich
wrote:

Grazie delle info, Sandro.

Rispetto a quale punto viene applicata la rotazione?

quello piu’ scemo ed ovvio … (0,0) :slight_smile:
insomma, ti fa semplicemente ruotare tutto il piano

ma esiste anche questa qua:
ShiftCoordinates( geom Geometry , shiftX Double precision ,
shiftY
Double precision ) : Geometry
“return a geometric object obtained by translating
coordinates
according
to shiftX and shiftY values”

quindi innestando a catena uno shift, un rotate ed un ultimo
shift
esattamente simmetrico al primo ti puoi posizionare l’asse
di rotazione
dove meglio credi ((p.es. sul centroide del poligono).

ciao Sandro


PRIVACY
Le informazioni contenute in questo messaggio sono riservate e
confidenziali. Il loro utilizzo e’ consentito esclusivamente
al destinatario del messaggio, per le finalità indicate nel
messaggio stesso. Qualora Lei non fosse la persona a cui il
presente messaggio è destinato, La invitiamo ad eliminarlo dal
Suo Sistema e a distruggere le varie copie o stampe, dandone
gentilmente comunicazione all’indirizzo mail del mittente.
Ogni utilizzo improprio e’ contrario ai principi del D.lgs
196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e
confidenziali. Il loro utilizzo e’ consentito esclusivamente
al destinatario del messaggio, per le finalità indicate nel
messaggio stesso. Qualora Lei non fosse la persona a cui il
presente messaggio è destinato, La invitiamo ad eliminarlo dal
Suo Sistema e a distruggere le varie copie o stampe, dandone
gentilmente comunicazione all’indirizzo mail del mittente.
Ogni utilizzo improprio e’ contrario ai principi del D.lgs
196/03 e alla legislazione europea (Direttiva 2002/58/CE).


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.
584 iscritti al 7.4.2012


PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e’ consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e’ contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).

PRIVACY
Le informazioni contenute in questo messaggio sono riservate e confidenziali. Il loro utilizzo e’ consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora Lei non fosse la persona a cui il presente messaggio è destinato, La invitiamo ad eliminarlo dal Suo Sistema e a distruggere le varie copie o stampe, dandone gentilmente comunicazione all’indirizzo mail del mittente. Ogni utilizzo improprio e’ contrario ai principi del D.lgs 196/03 e alla legislazione europea (Direttiva 2002/58/CE).