#1 Mon 08 April 2013 19:48
- yasmine07
- Participant occasionnel
- Date d'inscription: 4 Mar 2013
- Messages: 21
Problème avec ogr2ogr
Bonjour,
Je veux récupérer le résultat de mes requêtes sous format d'un shape file.
J'utilise la commande "ogr2ogr -f..."
J'ai remarqué que cette commande ne marche correctement et je ne récupère un shape file que si la géométrie sur laquelle j'effectue la requête (je n'ai le droit de requêter que sur une seule d'ailleurs) est de type Linestring ou multilinestring.
ça ne marche pas si c'est une géométrie de type POINT par exemple et un message d'erreur apparaît :
Code:
Error : attempt to write non-linestring <POINT> geometry to ARC type shapefile
Est ce normal?
Merci pour votre aide.
Hors ligne
#2 Tue 09 April 2013 08:51
Re: Problème avec ogr2ogr
Bonjour,
Le fichier d'origine doit contenir autre chose que des points ?
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Tue 09 April 2013 09:41
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Problème avec ogr2ogr
Bonjour,
Vous pouvez verifier cela avec une requete de type:
Code:
select distinct geometryType(geom) from matable;
Nicolas
En ligne
#4 Thu 11 April 2013 12:37
- yasmine07
- Participant occasionnel
- Date d'inscription: 4 Mar 2013
- Messages: 21
Re: Problème avec ogr2ogr
Bonjour,
En fait ma requête est écrite à peu près comme ceci :
Code:
Select Mafonction(arguments) from ma table
Tel que Mafonction retourne soit une géométrie de type POINT soit la valeur NULL
Donc : en appliquant la requête de Nicolas j'ai comme retour deux types : Point et type vide rien en retour!
En essayant de modifier la requête comme ceci:
Code:
Select geometrytype(Mafonction(arguments)) from ma table where geometrytype(Mafonction(arguments) = 'POINT'
pour ne plus avoir en résultat que les géométries de type POINT...mais rien à faire!
Toujours le type 'vide' qui apparaît! à cause du NULL je suppose!
une idée?
Dois je éliminer le null dans Mafonction? Dans ce cas quel serait la valeur de retour de la géométrie si la condition n'est pas vérifiée?
Hors ligne
#5 Thu 11 April 2013 13:43
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Problème avec ogr2ogr
Bonjour,
C'est souvent le probleme avec la valeur NULL: des qu'on s'en sert ou qu'on l'evalue, le resultat obtenu est null aussi.
Vous avez plusieurs choix:
• Ne pas retourner de valeur nulle dans la fonction, par exemple en utilisant 'POINT EMPTY'::geometry comme geometrie vide
• Proteger l'appel de la fonction avec une autre fonction, coalesce, dont le but est d'eviter de manipuler des valeurs nulles:
Code:
select coalesce (colonne, 1);
Va renvoyer 1 si la colonne a une valeur nulle, et renvoyer sinon la valeur de la colone.
Votre appel pourrait etre:
Code:
Select geometrytype(coalesce(Mafonction(arguments), 'POINT EMPTY'::geometry)) from ma table;
Vous pouvez aussi appeler votre fonction apres le from, dans une sous requete pour filtrer les retours NULL de la fonction:
Code:
select * from (select col1 from mafonction()) as foo where col1 is not null;
Nicolas
En ligne
#6 Thu 11 April 2013 14:23
- yasmine07
- Participant occasionnel
- Date d'inscription: 4 Mar 2013
- Messages: 21
Re: Problème avec ogr2ogr
Ok. Merci Nicolas.
Je vais essayer ces astuces .
Hors ligne