IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Remplacement d'une chaine de caracteres aléatoires


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gambie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Remplacement d'une chaine de caracteres aléatoires
    Bonjour
    Désolé par avance si je commets des erreurs sur ce forum.... C'est mon premier message...

    Je récupère des données prises par un GPS sur Android. Les traces (STREET_TRACE dans table KMC_STREETVIEWS_CORE) sont sous ce format :
    13.144297 -16.764637999999998 39 12.0;13.144364999999999 -16.764284 38 3.0;13.144395 -16.763987 40 3.0;13.144409999999999 -16.763704999999998 40 4.0;13.144419 -16.763382 39 4.0;
    13.144426999999999 -16.763233 39 8.0;13.144426999999999 -16.763233 39 8.0;
    13.143345 -16.763057 38 8.0;13.143345 -16.763057 38 8.0;13.143345 -16.763057 38 8.0;
    13.14177 -16.764297 42 8.0;13.14177 -16.764297 42 8.0;13.14177 -16.764297 42 8.0;
    Il y a donc par point 4 valeurs x y alt accuracy....
    et le multipoint n'en prend en compte que 3 : xyz

    Comment supprimer automatiquement par requête postgis les valeurs d'accuracy?
    Après je pensais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ST_AsEWKT(ST_LineFromMultiPoint(ST_GeomFromEWKT(REPLACE("STREET_TRACE",';',',')))) FROM "KMC_STREETVIEWS_CORE";
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ST_LineFromText(REPLACE("STREET_TRACE",';',',') AS aline FROM "KMC_STREETVIEWS_CORE";
    Merci par avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Pour moi le plus "normal" serait d'alimenter une table, mettons KMC_records, dans laquelle on retrouve les colonnes :
    Id_KMC_RECORD (Pk de la table)
    Id_KMC_STREETVIEWS_CORE (FK vers l'id correpondant)
    x
    y
    Alt
    Accurancy

    Dans le processus d'alimentation des données, au lieu d'alimenter en vrac STREET_TRACE on alimente une ligne par relevé (le ; sépare les relevés) sachant que les espaces séparent les 4 valeurs.
    Pour faire ça COPY peut être utile : https://www.postgresql.org/docs/9.2/sql-copy.html
    En plus, si la donnée est mal formatée, tu le sauras immédiatement

    Ensuite, se sera simple de manipuler les ensemble de données voulues.
    La concaténation des x,y ou x,y,alt associée à la fonction array_agg() te permettront d'atteindre facilement tes objectifs
    https://www.postgresql.org/docs/9.5/...aggregate.html
    Le savoir est une nourriture qui exige des efforts.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Tous les points PosGis incorporent les 4 coordonnées conforme à l'OGC : X, Y, Z et m. Il faut utiliser le commande ST_MakePointM puis avec la série de point générer l'objet considéré.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gambie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut suite
    Bonjour
    Tous d'abord merci a vous deux pour vos réponses ...
    Comme je suis un vrai "nul" (si si j'assume...) J'essaye de comprendre vos réponses ...

    en regardant les aides en ligne ... :
    COPY semble écrire ou lire a partir d'un fichier situé sur le disque dur ( ou STDIN / STDOUT) Je me trompe??? ... or mes données sont déjà dans un champ d'une table... Faut il que je passe par cet intermediaire fichier texte?


    et l'aide sur ST_MAKEPOINTM ne parle que de 3 parametres
    geometry ST_MakePointM(float x, float y, float m);
    Description
    Creates a point with x, y and measure coordinates.

    Merci encore de votre aide

    Cordialement

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    pardon... ST_MakePoint :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ST_MakePoint(1, 2, 3, 4)
    Et donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ST_Z(ST_MakePoint(1, 2, 3, 4));
    --> 3


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ST_M(ST_MakePoint(1, 2, 3, 4));
    --> 4

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gambie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Impeccable!! Ca marche parfaitement

    un grand merci!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Remplacement d'une chaine de caracteres avec XSL
    Par HyoGz dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 24/01/2008, 09h15
  2. remplacer / supprimer une chaine de caractere
    Par john123 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/05/2007, 13h51
  3. Réponses: 10
    Dernier message: 16/06/2006, 13h53
  4. [debutant][String] Remplacer une chaine de caractère contenant un ?
    Par Jarodnet dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 12/10/2005, 12h47
  5. Réponses: 9
    Dernier message: 31/05/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo