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

Printemps des cartes 2024

#61 Mon 05 August 2019 15:53

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Pour répondre à la deuxième question elle reste en texte car vous l'explicitez vous-même dans trunc(st_area(parcelle.geom)::numeric, 2)::text c'est le ::text qui type la colonne

--> Donc si je suis ton raisonnement, je mets ::numeric à la place de ::text?

Hors ligne

 

#62 Mon 05 August 2019 16:00

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: calcul surface parcelle

oui ça devrait être bon.
je dirais même avec trunc(st_area(parcelle.geom)::numeric, 2). En fait, sans rien cela devrait donner du numeric. Voir http://www.postgresqltutorial.com/postgresql-trunc/

Hors ligne

 

#63 Mon 05 August 2019 16:07

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

Juste une chose là-dessus que je ne suis pas absolument sur : j'aurais utilisé round pour qu'il arrondisse la dernière décimale car je ne sais pas si fonctio trunc le fait (après peu d'importance à mon avis car vous ne devez pas être à 1 cm carré près).


Trunc n'arrondit pas en effet, il tronque après n décimales.
Si on désire arrondir, on peut utiliser comme vous l'indiquez
la fonction round.

Pour ce qui est du formatage :
J'ai testé sous excel (2007), le fait d'encadrer
la valeur par des double quotes (") n'affecte pas
le formatage des chiffres à virgule,
excel les formate bien en valeurs numériques.
Est ce que le séparateur de décimal dans excel
est bien , ?
Il faut regarder dans Options>Options avancées

Sur le fait qu'Excel évalue tout de même la somme
de valeurs "textes", ben, c'est une fonctionnalité
je pense, Excel tente de convertir le texte en numérique
de manière cachée.
Ca permet à Excel d'être souple, et de
pas forcer l'utilisateur à spécifier le bon format de données
pour avoir un résultat rapide, comme une somme.
Ca permet de pas être hyper rigoureux.

Par contre, y'a pas grande utilité à caster un flottant/numeric
en text, remplacer le séparateur de décimale par ",",
pour ensuite le re caster en numeric, à part si on a des
actions chez Intel et qu'on veut user le processeur
de la machine plus rapidement.


[Edit]
j'avais pas lu les messages précédents

Dernière modification par tumasgiu (Mon 05 August 2019 16:22)

Hors ligne

 

#64 Mon 05 August 2019 16:45

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: calcul surface parcelle

La méthode indiquée dans Options - Options avancées du logiciel excel est intéressante et doit résoudre le problème, à voir sur combien de poste il va falloir qu'il aille réaliser le changement et si ça va poser problème chez les utilisateurs après car ils ont éventuellement des fichiers avec le séparateur "." provenant d'autres sources .
A ma connaissance on peut le faire aussi en réglage Windows mais là attention car ça peut poser des problèmes sur d'autres logiciels, de ce fait j'y toucherais pas si j'avais ce type de problème.

Je suis tout à fait d'accord sur l'optimisation de la requête sql.
Disons que ça fait un bon exercice pour comprendre le fonctionnement des requêtes avec l'utilisation des fonctions et typages :-)

Courage. La solution à l'air proche !

Hors ligne

 

#65 Mon 05 August 2019 16:48

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Si je mets :: numeric à la place de :: text, cela ne fonctionne pas.

Hors ligne

 

#66 Mon 05 August 2019 17:09

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

Si je mets :: numeric à la place de :: text, cela ne fonctionne pas.


Oui c'est logique, vu que votre serveur Postgres utilise "." comme
séparateur décimal, il refusera de transformer un texte du type 'X,Y'
en numérique.
D'autant plus que l'on y concatene le texte " m²" !

Hors ligne

 

#67 Mon 05 August 2019 17:15

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

Ce que vous devriez faire c'est :

1. Regarder quel est le sep. décimal utilisé par excel.
2. Utiliser le même symbole dans votre vue.

Comme l'a dit francis, il faut que tout vous utilisateurs
partagent le même symbole de sep. decimal.

Le meilleur selon moi, si c'est possible,
serait de laisser le type de la colonne
de votre vue en numeric, et pouvoir spécifier
dans votre export le symbole a utiliser.

Hors ligne

 

#68 Mon 05 August 2019 17:17

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: calcul surface parcelle

à mon avis :

si vous avez mis : trunc(st_area(parcelle.geom)::numeric, 2) sans le replace avant ça doit donner du numeric à la fin
si vous avez mis: trunc(st_area(parcelle.geom)::numeric, 2)::numeric sans le replace ça sert pas vous aurez aussi du numeric
si vous avez mis: replace(trunc(st_area(parcelle.geom)::numeric, 2)::text,'.', ',') AS superficie ça donne du texte
si vous avez mis: replace(trunc(st_area(parcelle.geom)::numeric, 2)::text,'.', ',')::numeric AS superficie soit ça fonctionne et ça donne du numeric et ça répond à votre question (mais à mon sens ça risque de pas passer car postgresql ne voudra pas typer une colonne en nombre si pour lui une virgule n'est pas un séparateur de décimale, ça reste à tester on ne sait jamais).
si vous avez mis: replace(trunc(st_area(parcelle.geom)::numeric, 2),'.', ',')::numeric AS superficie ça risque de pas fonctionner parceque la fonction replace attend à mon avis une chaine de caractère en premier paramètre et non pas un numeric ce qui est le cas ici.

Ainsi, et au vu des différents messages ce serait moi je ferai :
round(st_area(parcelle.geom)::numeric, 2) ce qui donnera une valeur qui est un nombre et pas un texte, qui sera arrondi à la dernière décimale mais qui conservera le point comme séparateur de décimale.
Ensuite, je testerai l'option indiquée par tumasgiu dans excel et les options avancées.

C'est ce qui me semble dans votre cas le plus adapté à défaut d'une solution idéale.
Après il faudrait passer probablement par un développement spécifique VMap qui vous permettrait via un fichier xsl fop d'avoir une colonne typée avec le séparateur que vous souhaitez mais là on entre dans du plus compliqué car il faudrait à priori du code php associé à un fichier xsl.
C'est pour cela que je vous suggérai de voir si un export VMap associé au module cadastre déjà mis à disposition ne pourrait pas convenir car le travail est peut-être fait.

En espérant que ces éléments pourront vous aider.

Hors ligne

 

#69 Mon 05 August 2019 17:20

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: calcul surface parcelle

dsl j'étais entrain décrire, je n'ai pas vu la réponse de 17h15 (tumasgiu) mais ça semble être à peu près la même solution.
bonne fin d'apm !

Hors ligne

 

#70 Mon 05 August 2019 17:33

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Voici les tests :

trunc(st_area(parcelle.geom)::numeric, 2) : ERROR:  cannot change data type of view column "superficie" from text to numeric

trunc(st_area(parcelle.geom)::numeric, 2)::numeric : ERROR:  cannot change data type of view column "superficie" from text to numeric

replace(trunc(st_area(parcelle.geom)::numeric, 2)::text,'.', ',') : Fonctionne mais donne du texte sous excel

replace(trunc(st_area(parcelle.geom)::numeric, 2)::text,'.', ',')::numeric : ERROR:  cannot change data type of view column "superficie" from text to numeric

round(st_area(parcelle.geom)::numeric, 2) : ERROR:  cannot change data type of view column "superficie" from text to numeric


Sinon, dans excel, sélection de la colonne >>- Données>>- Convertir en mode standard.

Hors ligne

 

#71 Mon 05 August 2019 18:42

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

Vous avez le même problème qu'au départ.

REPLACE ne fonctionne pas si le type d'une des colonnes de votre vue
change (ici en l'occurence text->numeric).

Il faut dropper la vue et la recréer.

Hors ligne

 

#72 Tue 06 August 2019 08:56

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Voici la requete DROP puis CREATE :

-- View: cadastre.v_vmap_parcelle_proprietaire

DROP VIEW cadastre.v_vmap_parcelle_proprietaire;

CREATE VIEW cadastre.v_vmap_parcelle_proprietaire AS
SELECT nb_10_parcelle.id_par,
    proprietaire.dnupro,
    proprietaire.dnuper,
    proprietaire.ddenom,
    proprietaire.dqualp,
    proprietaire.dnomlp,
    proprietaire.dprnlp,
    proprietaire.dlign3,
    proprietaire.dlign4,
    proprietaire.dlign5,
    proprietaire.dlign6,
    parcelle.geom,
    proprietaire.id_dnupro,
    proprietaire.gdesip,
    replace(trunc(st_area(parcelle.geom)::numeric, 2)::numeric, '.'::text, ','::text) AS superficie,
    nb_10_parcelle.id_com
   FROM s_majic.nb_10_parcelle,
    s_majic.proprietaire,
    s_cadastre.parcelle
  WHERE nb_10_parcelle.id_dnupro = proprietaire.id_dnupro AND proprietaire.gdesip = '1'::bpchar AND nb_10_parcelle.id_par = parcelle.id_par AND nb_10_parcelle.id_com ~ similar_escape(( SELECT "user".restriction
           FROM s_vitis."user"
          WHERE "user".login::name = "current_user"()), NULL::text);

ALTER TABLE cadastre.v_vmap_parcelle_proprietaire
    OWNER TO u_vitis;
COMMENT ON VIEW cadastre.v_vmap_parcelle_proprietaire
    IS 'Nom, prénom et adresse du propriétaire de chaque parcelle. La géométrie est associée à chaque parcelle se qui permet d''en faire une vue.';

GRANT ALL ON TABLE cadastre.v_vmap_parcelle_proprietaire TO u_vitis;
GRANT SELECT ON TABLE cadastre.v_vmap_parcelle_proprietaire TO vmap_cadastre_user;




Ne fonctionne pas : ERROR:  function replace(numeric, text, text) does not exist

Hors ligne

 

#73 Tue 06 August 2019 10:10

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

si vous voulez conservez superficie en numeric :

    trunc(st_area(parcelle.geom)::numeric, 2)::numeric

Hors ligne

 

#74 Tue 06 August 2019 10:22

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

si vous voulez conservez superficie en numeric :

    trunc(st_area(parcelle.geom)::numeric, 2)::numeric

>>-C'est toujours considéré comme du texte

De toute façon, je veux toujours remplacer le point par une virgule.

Hors ligne

 

#75 Tue 06 August 2019 10:39

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: calcul surface parcelle

alors

Code:

trunc(st_area(parcelle.geom)::numeric, 2)::text

Hors ligne

 

#76 Tue 06 August 2019 10:43

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Non, même résultat.

Hors ligne

 

#77 Wed 07 August 2019 08:22

francis_31
Participant actif
Date d'inscription: 24 Nov 2010
Messages: 86

Re: calcul surface parcelle

Bonjour,

je ne pense pas que ce soit possible de faire en sorte que postgresql interprète les données en format type numérique avec un séparateur ",".
Le séparateur décimal en tant que nombre restera un "." quoiqu'il en soit à mon sens.
Le seul moyen, et vous l'avez déjà réalisé, est de convertir en texte mais ce n'est pas ce que vous souhaitez.

Après cela devient un développement logiciel qui réalise la conversion et affiche une colonne en forçant le type décimal dans un fichier de sortie excel mais ce n'est plus le même sujet car cela devient du développement applicatif spécifique propre à chaque logiciel, peut-être voir avec l'éditeur du logiciel si il y a une solution simple pour faire cela.

Si je me trompe et que quelqu'un trouve la solution je serai également intéressé de la connaitre.

Bonne journée.

Hors ligne

 

#78 Wed 07 August 2019 10:40

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1623

Re: calcul surface parcelle

Bon, je pense que je vais en rester sur la modif sur excel (données, convertir la colonne...).

Merci.

Hors ligne

 

Pied de page des forums

Powered by FluxBB