Daha çox

Gdal_rasterize xətası: “0x0 məlumat dəsti yaratmağa cəhd qanunsuzdur ...”


Gdal_rasterize istifadə edərək dəyərin 'COVTYPE' atributundan gəldiyi bir çoxbucaqlı formalı rasterə çevirmək üçün istifadə edirəm. Gdal rasterize-i belə çağırmağa çalışıram (bir python skriptindən çağırıram, buna görə os.system çağırmalıyam):

os.system ("gdal_rasterize -a COVTYPE -l% s -a_nodata 999 -a_srs EPSG: 102001 -t 30 30% s% s"% (bname, inshp, outrast))

Bname shapefile'nin əsas adı olduğu təqdirdə (qatı adı), inshp 'inpath / bname.shp' və outrast 'outpath / bname.tif' dir.

Və səhv alın: "XATA 1: 0x0 verilənlər bazası yaratmağa cəhd qanunsuzdur, ölçülər sıfırdan böyük olmalıdır. Outpath / bname.tif yaratmaq olmur"

Anladım ki, gdal> 1.8 ilə (gdal 1.9.2 işləyirəm), gdal_rasterize -tr (hədəf qətnaməsi) və ya -ts (hədəf ölçüsü) ayarlandığı müddətdə yeni bir raster faylı yarada bilər (bax http: / /www.gdal.org/gdal_rasterize.html). Hədəf qətnaməsini təyin edirəm, buna görə niyə 0x0 raster yaratmağa çalışdığımı düşündüyünü görmürəm. Əlavə olaraq sənədlərdə deyilir ki, hədəf dərəcəsi təyin olunmasa, istədiyim vektor qatının miqyasını alacaq.

Python xaricində gdal_rasterize axtarmağa çalışdım və eyni xətanı aldım. Bəzi açar sözləri yenidən düzəltməyə və problem yaratdığını düşünərək a_srs açar sözünü götürməyə çalışdım (a_srs çıxış faylı üçün standart proyeksiyanı ləğv edir), amma yenə də nəticə vermədi.

Nə baş verdiyinə dair bir kimsə var?


Beləliklə, əvvəlcə shapefile yenidən proqnozlaşdırmaq üçün gdal_translate istifadə etdikdən sonra gdal_rasterize üçün giriş olaraq istifadə etdikdən sonra hər şey işlədi. Gdal şəklin təsvirini tanımadığını (bu da gördüyüm bir şey deyildi) və yalnız hər şeyin uğursuz olmasına səbəb olduğunu düşünürəm. Mənalı, amma kaş ki qaldırılan səhv buna işarə edərdi və çox vaxt qazana bilərdim. Beləliklə, son həll:

os.system ("ogr2ogr -t_srs EPSG: 102001% s% s"% (rpshp, inshp)) # output then input os.system ("gdal_rasterize -a COVTYPE -l% s -a_nodata 999 -tr 30 30% s% s "% (rbname, rpout, outrast)) # layername (reprojected shp əsas adı), giriş sonra çıxış

Problem vektor xüsusiyyət ölçüsündə görünür. Giriş faylındakı ümumi vektor xüsusiyyətləri 1x1 piksel kvadratdan az olan ərazini əhatə edə bilər, yəni -tr 30 30, 30x30 vahid sahədən azdır.

Yəni həll ola bilər

1) giriş vektor sənədinin ölçüləri ilə uyğunlaşaraq qətnaməni daha da azaltın (-tr 1 1 deyin)

Və ya

2) Çözüm - giriş vektor faylının birləşdirilmiş dərəcəsi 1 kvadrat pikseldən çox olması üçün bir əlavə vektor xüsusiyyətini giriş faylına yerləşdirin.