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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème sur notre serveur une intervention est planifiée demain matin entre 8h et 9h. La coupure ne devrait pas exéder 5 mn.

L'équipe GeoRezo

#1 jeu. 24 novembre 2016 17:33

vincent52
Membre
Date d'inscription: 21 sept. 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 jeu. 24 novembre 2016 23:08

Lsam
Membre
Date d'inscription: 27 nov. 2013
Messages: 98

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 ven. 25 novembre 2016 13:37

vincent52
Membre
Date d'inscription: 21 sept. 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 ven. 25 novembre 2016 13:42

Yves
Moderateur
Lieu: Aix-les-Bains
Date d'inscription: 22 mars 2006
Messages: 8811
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 ven. 25 novembre 2016 13:47

Yves
Moderateur
Lieu: Aix-les-Bains
Date d'inscription: 22 mars 2006
Messages: 8811
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 ven. 25 novembre 2016 14:47

Lsam
Membre
Date d'inscription: 27 nov. 2013
Messages: 98

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 (ven. 25 novembre 2016 14:48)

Hors ligne

 

#7 sam. 26 novembre 2016 11:51

vincent52
Membre
Date d'inscription: 21 sept. 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

Partagez  |