banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 05 July 2013 10:56

Yaëlle F
Participant actif
Date d'inscription: 27 Sep 2012
Messages: 87

Changer de type de géometrie dans SPATIALITE

Bonjour à tous,

Je suis dans l'impasse depuis quelques jours et j'espère vraiment que quelqu'un puisse m'éclairer.
Je travaille dans spatialite sur une couche de type ligne à laquelle je veux appliquer un buffer. J'ai donc écrit les lignes suivantes :


--Je crée la couche qui recevra le tampon et je lui donne des champs déjà existants dans une table précédente, cette nouvelle table est donc de type ligne :
CREATE TABLE ROUTES_ZE_04_TAMPON25 AS SELECT a.geometry, a.id, a.nature, a.pos_sol FROM ROUTES_ZE_04 AS a;


--Création d'un buffer de 25m autour de chaque polygone
INSERT INTO ROUTES_ZE_04_TAMPON25 (geometry) SELECT  ST_Buffer(geometry, 25.0) FROM ROUTES_ZE_04;

Cette seconde ligne de requête me donne un résultat bisarre. Ma table de tampon possède le double de ligne qu'initialement car il y a eu duplication des objets dont la moitié sont en ligne et l'autre moitié en polygone.

J'ai essayé avec un [...]CastToPolygon( ST_Buffer...)) mais rien à faire.

Comment dois-je m'y prendre ? J'ai besoin au final d'obtenir une table uniquement polygonale.


Merci d'avance,

Yaëlle

Hors ligne

 

#2 Fri 05 July 2013 11:24

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: Changer de type de géometrie dans SPATIALITE

Bonjour,

Code:

CREATE TABLE ROUTES_ZE_04_TAMPON25 AS SELECT a.geometry, a.id, a.nature, a.pos_sol FROM ROUTES_ZE_04 AS a;

vous crée une table ROUTES_ZE_04_TAMPON25 mais la remplit aussi de facto avec les données de ROUTES_ZE_04. Du coup, il est normal qu'à la fin vous obteniez les deux types de géométries, étant donné qu'avant le buffer, vous avez déjà des lignes.
Je ne sais pas si ce sont là toutes les colonnes de la table d'origine (et ne connaît pas la syntaxe pour sélectionner juste celles qui vous intéressent) mais en attendant que quelqu'un apporte la syntaxe efficace, essayez peut-etre

CREATE TABLE ROUTES_ZE_04_TAMPON25 (like ROUTES_ZE_04);


quitte à supprimer les colonnes supplémentaires. Puis recréez votre buffer.

EDIT:
Il semble que

Code:

CREATE TABLE ROUTES_ZE_04_TAMPON25 AS SELECT a.geometry, a.id, a.nature, a.pos_sol FROM ROUTES_ZE_04 AS a where 1=2;

pourrait marcher: la condition étant fausse, aucun enregistrement ne pourrait être récupérée mais la structure de la table l'aura déjà été.

Dernière modification par SANTANNA (Fri 05 July 2013 11:34)

Hors ligne

 

#3 Fri 05 July 2013 11:45

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3940

Re: Changer de type de géometrie dans SPATIALITE

En regardant plus en détail votre deuxième requête, vous ne récupérez que la géométrie des buffers? Quid des autres attributs?

Code:

CREATE TABLE ROUTES_ZE_04_TAMPON25 AS SELECT st_buffer(geometry, 25) as geometry, id, nature, pos_sol FROM ROUTES_ZE_04;

devrait faire tout en un, me semble-t-il.
Et étant donné que vous ne faites appel qu'à une table, vous n'êtes pas forcé de lui filer un alias.

Hors ligne

 

#4 Fri 05 July 2013 11:48

Yaëlle F
Participant actif
Date d'inscription: 27 Sep 2012
Messages: 87

Re: Changer de type de géometrie dans SPATIALITE

Au poil ! smile

Ça fonctionne parfaitement ! Merci !

Hors ligne

 

Pied de page des forums

Powered by FluxBB