Daha çox

QGIS xarici xəritəmi Ubuntu -da etibarlı şəkildə göstərə bilmirəm: QObject :: connect: Qoşula bilmir (sıfır) xətası

QGIS xarici xəritəmi Ubuntu -da etibarlı şəkildə göstərə bilmirəm: QObject :: connect: Qoşula bilmir (sıfır) xətası


"QGIS ilə Xəritəçəkmə Tətbiqləri Yaratmaq" kitabından götürdüyüm nümunələri izləyirəm və həyatım boyu şəkil sənədlərimin niyə Ubuntu sistemi altında tətbiq pəncərəsində yüklənmədiyini və göstərilmədiyini anlaya bilmirəm. Eyni kod Macbook Pro qurğumla yaxşı işləyir.

Linux mühitini qurmaq üçün run.sh faylından istifadə edirəm:

ixrac PYTHONPATH = "/usr/share/qgis/python" ixrac LD_LIBRARY_path = "/usr/share/qgis/lib" export QGIS_PREFIX = "/usr/share/qgis" python externalApp.py

Python -da bütün qgis, qgis.core, qgis.gui və s. Faylları səhvsiz idxal edə biləcəyimi sınadım.

İstifadə etdiyim Linux skripti aşağıda yapışdırılmışdır. Forma faylının adı və yeri ilə oynadım.

sys idxal qgis.core -dan idxal * qgis.gui -dən idxal * PyQt4.QtGui idxal * PyQt4.QtCore idxal * Qt ####################### ################################################### ##### sinif MapViewer (QMainWindow): def __init __ (self, shapefile): QMainWindow .__ init __ (self) self.setWindowTitle ("Map Viewer") kətan = QgsMapCanvas () canvas.useImageToRender (Yanlış) canvas.setCtanaColvasColor .white) canvas.show () layer = QgsVectorLayer (shapefile, "layer1", "ogr") # if layer.isValid (): # IOError ("Invalid shapefile") QgsMapLayerRegistry.instance (). addMapLayer (qat) canvas.setExtent (layer.extent ()) canvas.setLayerSet ([QgsMapCanvasLayer (qat)]) layout = QVBoxLayout () layout.addWidget (kətan) məzmunu = QWidget () content.setLayout (layout) self.setCentralWidget (məzmun) # ################################################### ########################### def main (): "" "Əsas proqramımız." "" QgsApplication.setPrefixPath (os.environ [' QGIS_PREFIX '], Doğru) QgsApplication.initQgis () ap p = QApplication (sys.argv) görüntüleyici = MapViewer ("/home/cary/workspace/temp/alaska.shp") viewer.show () app.exec_ () QgsApplication.exitQgis () ######## ######################################################################################### ################### əgər __ adı__ == "__main__": main ()

İstifadə olunan kompüterlər: 1) Toshiba Satellite Windows maşın, ubuntu 14.04 ilə yenidən qurulmuş 2) Macbook Pro kompüter

Toshiba Satellite maşını yeni bir maşın idi və Ubuntu ilə yeni qurulmuşdu. Əsasən Ubuntu qurdum, sonra sistemi yenilədim və sonra bu skriptlə QGIS qurdum:

sudo sh -c 'echo "deb http://qgis.org/debian trusty main" >> /etc/apt/sources.list' sudo sh -c 'echo "deb -src http://qgis.org/debian etibarlı əsas ">> /etc/apt/sources.list 'gpg --keyserver keyserver.ubuntu.com -recv 47765B75 gpg --export --armor 47765B75 | sudo apt-key add-sudo apt-get update && sudo apt-get install qgis python-qgis

Hər iki kompüter üçün quraşdırma: Hər iki kompüter Python 2.7.6 istifadə edir

Hər iki maşın üçün standart qurğular. Linux qutusu üçün yuxarıdakı skriptdən istifadə etdim.

"/Usr/share/qgis" qovluqlarının Linux -da düzgün qurulduğu təsdiqləndi Mac -dəki strukturların PYTHONPATH, QGIS_PREFIX və s.

Linux fayl quruluşları fərqli idi: kitabda: PYTHONPATH = "/usr/share/qgis/build/output/python/" sistemimdə "/build/output/" qovluqlarının olmadığını gördüm.

Eyni kod Mac quruluşunda işləyirdi, amma Linux quruluşunda deyil. Şəkil fayllarına gedən yolun linux sistemi üçün doğru olduğunu da təsdiqlədim.

Xoşbəxtlikdən Mac qurulması işləyir və bu qutunun qalan hissəsinə davam edə bilərəm, amma Ubuntu qutusunun niyə işləmədiyini bilmək istərdim.


Kodunuzu Ubuntu əsaslı kompüterimdə sınadım, gördüyüm yeganə qəribə şey GNU/Linux-da ümumi QGIS quraşdırılması üçün işləməyən bir QGIS prefiksidir.

QGIS_PREFIX dəyişəninizi dəyişməyə çalışın"/usr". QGIS prefiksi, QGIS -in məlumat təminatçıları və digər mənbələr axtarmağa başlaya biləcəyi yerdir (ətraflı məlumat üçün Linux -da QGIS tətbiqində yaddaş qatları yaradıla bilmədi). Əslində, QGIS_PREFIX istifadə edərək boş bir çərçivə də alıram.


Videoya baxın: Lesson 3: QGIS Tutorial to clip vector layer in Hindi