Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Thu 24 November 2016 17:33

vincent52
Participant occasionnel
Date d'inscription: 21 Sep 2016
Messages: 15

Spatialite

Bonjour à tous,

dans le cadre de mon travail, j'ai calculé les distances de chaque communes par rapport aux limites départementales qui l'entourent.
J'ai fait une requête Spatialite en utilisant la fonction st_distance.

Je me retrouve avec un résultat de cette forme :

code_commune            limite dpt          DISTANCE
21                                52                        XX
21                                89                        XX
21                                58                        XX
21                                71
22                                ETC
22
22

Pour me permettre d'agencer le tableau comme je veux ( en l'occurence une ligne par commune), je cherche à assigner au sein de chaque code commune, un id unique à chaque distance (une sous clé primaire en quelque sorte :p). Voila ce que j'aimerais faire :

code_commune       ID        limite dpt          DISTANCE
21                           1            21                        XX
21                           2            89                        XX
21                           3            58                        XX
21                           4            71
22                           1           ETC
22                           2
22                           3



Est ce quelqu'un sait comment faut il s'y prendre ?

Merci d'avance et bonne soirée

Hors ligne

 

#2 Thu 24 November 2016 23:08

Lsam
Participant assidu
Date d'inscription: 27 Nov 2013
Messages: 157

Re: Spatialite

Bonsoir,

L'ID que tu veux créer ne semble être qu'un ID de département. Que veux-tu faire ensuite exactement ?
Sinon tu peux faire une commande du genre :

Code:

select code_commune, case "limite dpt" when 21 then 1 when 89 then 2 when ETC end

ou mieux ajouter cet ID dans ta table dpts puis le sélectionner lors de ta jointure spatiale.

Hors ligne

 

#3 Fri 25 November 2016 13:37

vincent52
Participant occasionnel
Date d'inscription: 21 Sep 2016
Messages: 15

Re: Spatialite

Bonjour et merci pour votre réponse,

Non ça ne correspond pas à un ID département puisque les départements reviennent dans plusieurs communes. J'ai environ 200 000 distances pour 36000 communes (de 6 à 7 limites inter départementales par commune)
En fait je voudrais mettre ces résultats en colonnes afin d'avoir une seule ligne par commune :

code_commune  dep        dep1(le plus proche)        dep 2        dep 3       distance 1         distance 2        distance 3 etc

Du coup l'idée d'affecter un ID à chaque distance au sein de chaque code commune me semble la plus simple pour transposer mon tableau...(en sachant que les distance sont déja classées du plus petit au plus grand pour chaque code com). Mais je ne connais pas la manip SQL adéquate (si elle existe).

Hors ligne

 

#4 Fri 25 November 2016 13:42

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: Spatialite

Vincent,

Lit cette page : https://www.postgresql.org/docs/9.1/sta … indow.html avec un generate_series(1, 1000) tu dois pouvoir t'en sortir.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Fri 25 November 2016 13:47

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9853
Site web

Re: Spatialite

Aouch, c'est du spatialite ;(


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#6 Fri 25 November 2016 14:47

Lsam
Participant assidu
Date d'inscription: 27 Nov 2013
Messages: 157

Re: Spatialite

Bonjour,

Je ferais une agrégation avec :

Code:

WITH tri as (SELECT x.code_commune, x.dep, y.dep dpt, st_distance(x.geom,y.geom) distance from <ta_jointure> order by 4)
SELECT tri.code_commune, tri.dep, group_concat(tri.dpt,','), group_concat(tri.distance,',') from tri GROUP BY 1,2

En espérant qu'il conserve bien l'ordre des départements selon les distances à ta commune... (pas vérifié)
Puis export en CSV et traitement dans un tableur en important avec ',' comme séparateur de champ
Mais si tu veux un rendu selon tes colonnes directement dans spatialite, là je sèche.

Dernière modification par Lsam (Fri 25 November 2016 14:48)

Hors ligne

 

#7 Sat 26 November 2016 11:51

vincent52
Participant occasionnel
Date d'inscription: 21 Sep 2016
Messages: 15

Re: Spatialite

Merci Lsam, ça devrait le faire! avant de convertir les données dans excel, il faut juste supprimer les guillemets et le tour est joué!

ps : dans mon test, l'ordre est bien conservé

Hors ligne

 

Pied de page des forums

Powered by FluxBB