Özellikleri ogr2ogr kullanarak özniteliklere göre seçme?


17

Bazı işlemlerden sonra şekil dosyası yazıyorum; ancak, son adımda şekil dosyasındaki niteliklere göre bazı seçimler yapmam gerekiyor.

Komutu çalıştığında bir Python komut dosyasında kullanmak amacıyla bir kabukta kullanıyorum.

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

Hata mesajını alıyorum:

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

Neyi yanlış yapabilirdim?


Bu komut için gerçekten doğru mesaj bu mu?
BradHards

Yanıtlar:


30

Daha önce eksi işaretini kaçırıyorsunuz whereve selectgerekli değil, bu yüzden olmalı:

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

veya giriş verilerinizde daha karmaşık bir sorgu yapmanız gerekiyorsa:

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

Eğer IDtamsayı tipi, yerine bir alandır ID='1'ile ID=1.

Notlar:

  1. -f "ESRI Shapefile"gerekli değildir "ESRI Shapefile", çünkü ogr2ogrvarsayılan çıktı biçimi;
  2. tüm alanları seçmek istediğinizde, -selectdoğrudan -wheremaddeyi atlayıp kullanmanız uygundur .

1
Çok teşekkürler işe yarıyor. Kullanıyorum: ogr2ogr -where "ID = '1'" output.shp input.shp
user2757128

? Bu kodu nasıl kullanabilirim: ogr2ogr -SQL Python outfile.shp infile.shp" "NEREDE kimliği = '1' infile SELECT * FROM"
Shiuli Pervin

1
@ShiuliPervin kullanarak python deyimini kullanabilirsiniz os.system('''ogr2ogr ... ''') . import ospython betiğinizin en üstünde olun
geoeye

@afalciano, ogr2ogr -sql "SELECT * FROM infile WHERE ID='1'" outfile.shp infile.shpsadece ID = 1 yerine ifade için bunun yerine bir vektör veya sayı kümesi sağlamanın bir yolu var ogr2ogr -sql "SELECT * FROM infile WHERE ID IN ['1','5','29']" outfile.shp infile.shpmı , örneğin ?
hlm

@afalciano başka bir şey ... başka bir shp dosyası yazmak yerine, sadece seçilen kimlik çokgenlerinin koordinatlarını almanın bir yolu var mı?
hlm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.