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?


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.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.