Daha çox

Python xətası ilə dəyişən GDAL raster: 'NoneType' obyektində 'GetGeoTransform' atributu yoxdur


Python konsolundan istifadə edərək QGIS-də yerləşmiş bir rasteri 0,5m N və 0,5m W dəyişdirməyə çalışıram:

osgeo import gdal # Oxu / yazma rejimində açın rast_src = gdal.Open ('test_raster.tif', 1) # Affin çevirmə əmsalı əldə edin gt = rast_src.GetGeoTransform () # tuple-ni siyahıya çevirin, beləliklə onu dəyişdirə bilərik gtl = list (gt) gtl [0] - = 0.5 # Qərbə 0,5 m gtl [3] + = 0.5 # Şimala 0,5 m irəliləyin # Geotransformanı rastrda rast_src.SetGeoTransform (tuple (gtl)) rast_src = Heç birinə # bərabər Saxla / bağla

Lakin sətir # 7 (gt = rast_src.GetGeoTransform ()) atır AttributeError: 'NoneType' obyektində 'GetGeoTransform' atributu yoxdur. Quraşdırılmış GDAL versiyası 1.11.0-dır. Raster yaxşı görünür. Yaxşı nə olub?


Qeyd: bu yuxarıdakı şərhlərin yalnız bir qədər genişləndirilmiş versiyasıdır.

Aydındır kiAç ()zəng uğursuz oldu (geri qaytarılmadı).

Bu bir sıra səbəblərə görə baş verə bilər (məsələn, ACL kimi əməliyyat sistemi icazələri səbəbi ilə sənədi oxumaq üçün icazələrin olmadığı), lakin şərhlərdə göstərildiyi kimi, bu vəziyyətdə problem düşündüyün qovluqdur ' yenidən çalışmaq əslində axtardığınız biri deyil. Xüsusilə QGIS.exe ikili yaşadığı yerdə Windows-da QGIS-dən python "homed" olunur (qeyd: Administrator hüquqlarınız varsa Windows tətbiqetmələrində işləmə müddətləri qovluqlarını dəyişə bilərsiniz. - bir qısayol yaradın və "Başla" seçin.

Bununla irəliləməyin ən asan yolu yalnız tam yolu təmin etməkdir:

rast_src = gdal.Open ('C:  temp  raster1.tif', 1)

Karakterinin pitonda xüsusi olduğuna diqqət yetirin, buna görə də ondan qaçmaq üçün onları ikiqat artırmalısınız.

Sərt kodlu bir yol təqdim etmək istəmirsinizsə, onu bir mühit dəyişənindən və ya başqa bir mənbədən (kodun ana qovluq kimi qəbul etməsindən asılı olmayaraq) qura bilərsiniz. Bu, həqiqətən də GIS-ə xas deyil.


Eyni məsələ mənim başıma gəldi və yol adı ilə heç bir əlaqəsi yox idi. Rasteri aça bildim, amma sonra öyrəndim ki, əvvəllər mövcud olan metodlar artıq yoxdur ...


Bir konsolda sınayın:

gdalinfo yourfile.tif

Hər şey normal görünürsə (geotransform mövcuddur), onda faylınızı yenidən yazmağa cəhd edə bilərsinizgdal_translate.

Bənzər bir problemlə qarşılaşdım, böyük bir sıra ilə və python ilə faylı yenidən yazaraq əldə edə bildim:

gdal_translate -co "COMPRESS = LZW" -co "TILED = EVET" yourfile.tif newname.tif


Videoya baxın: الاعداد المركبة 06 التحويلات النقطية (Oktyabr 2021).