Sélection d'entités par attributs à l'aide d'ogr2ogr?

17

J'écris un fichier de formes après un traitement; cependant, dans la dernière étape, je dois faire une sélection par attributs à partir du fichier de formes.

J'utilise la commande dans un shell dans le but de l'utiliser dans un script Python quand cela fonctionne.

ogr2ogr -f "ESRI Shapefile" -select * where ID="1" outfile.shp infile.shp

Je reçois le message d'erreur:

FAILURE: 
Unable to open datasource `Downloads' with the following drivers.

Que pourrais-je faire de mal?

user2757128
la source
Est-ce vraiment le message exact pour cette commande?
BradHards

Réponses:

30

Vous manquez un signe moins avant whereet ce selectn'est pas nécessaire, il devrait donc être:

ogr2ogr -where ID="1" outfile.shp infile.shp

ou si vous devez effectuer une requête plus complexe sur vos données d'entrée:

ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shp

Si IDest un champ de type Entier, remplacez ID='1'par ID=1.

Remarques:

  1. -f "ESRI Shapefile"n'est pas nécessaire car il "ESRI Shapefile"s'agit du ogr2ogrformat de sortie par défaut;
  2. il est pratique d'ignorer -selectet d'utiliser directement la -whereclause lorsque vous souhaitez sélectionner tous les champs.
Antonio Falciano
la source
1
Merci beaucoup ça marche. J'utilise: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128
Comment puis-je utiliser ce code: ogr2ogr -sql "SELECT * FROM infile WHERE ID = '1'" outfile.shp infile.shp "en python?
Shiuli Pervin
1
@ShiuliPervin vous pouvez utiliser l'instruction en python en utilisant os.system('''ogr2ogr ... ''') . assurez-vous d'être import osen haut de votre script python
geoeye
@afalciano, pour l'instruction ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpau lieu de simplement ID = 1, existe-t-il un moyen de fournir un vecteur ou un ensemble de nombres, par exemple ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shp?
hlm
@afalciano une autre chose ... au lieu d'écrire un autre fichier shp, existe-t-il un moyen d'obtenir simplement les coordonnées des polygones ID sélectionnés?
hlm