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.