Daha çox

PyQgis ilə bir neçə Spatialite cədvəlinin girişindən istifadə edərək Bəstəkar Yazdır

PyQgis ilə bir neçə Spatialite cədvəlinin girişindən istifadə edərək Bəstəkar Yazdır


Bir çox mətn (mətn şablonundan) daxil olan Çap Bəstəkar Şablonlarını istifadə edərək QGIS-dən necə PDF yarada bilərəm və mətn daxilində spatiallite verilənlər bazamdan bir neçə məlumat çıxır. Bir xəritə də bunun bir hissəsidir, amma mən yalnız məkan-mətn girişlərində problem yaşayıram.

İş axını:

  • İstifadəçi çoxbucaqlı seçir (Bu yüklənən yeganə qatdır)
  • İstifadəçilər "Bunu mənim üçün çap et" Plugin Düyməsinə basırlar (Çoxbucaqlı addan istifadə edərək Spatialite DB-dəki cədvəllərdən lazım olan bütün məlumatları alıram)
  • İstifadəçi gözəl bir PDF əldə edir

Çoxbucaqlı cədvəl, bütün digər məlumatlara sahib olan cədvəllərdən fərqlidir (bəli, bir neçə var), bu məlumatların daxil edilməsi səbəblərindən qaynaqlanır.

QWebView () istifadə edərək bir həllim var, amma mənim həllim xəritənin özü üçün çox yaxşı deyil və bir istifadəçi şablonlarımı dəyişdirmək istəyirsə, bir az mürəkkəbdir. İşdə mənim həllim:

syQ idxal PyQt4.QtCore idxal * PyQt4.QtGui idxal * PyQt4.QtWebKit idxal * idxal sqlite3 # web görünüşü yaratmaq webview = QWebView () bağlantısı = sqlite3.connect ('D:  allthedata.sqlite') kursoru = əlaqə. cursor.fetchall () sətrində cursor.execute ('WHERE полигон_нр = 2015' dən məlumat seçin): ad = satır [0] # 15 girişdən istifadə edirəm, amma bunu sadələşdirmək üçün yalnız "name" istifadə edirəm "Burada # şablon alın və web baxış şablonuna daxil olun_txt_temp = open (" c: /template1.txt ") # Bir neçə şablon şablonum var_txt = template_txt_temp.read () html = template_txt.replace ('$ adı $', adı) # şablon yalnız bir html, lakin bir neçə səhifədən ibarət ola bilər; html → # 

Salam, bu sadəcə kukla bir mətndir, mən sizə göstərmək istədiyim yerdə harada istədiyimi $ adını $ verilənlər bazasından daxil edin

html çap növü (html) webview.setHtml (html) printer = QPrinter () printer.setPageSize (QPrinter.A4) printer.setOutputFormat (QPrinter.PdfFormat) printer.setOutputFileName (r'C: report.pdf ') veb görünüşü. print_ (printer)

Və bundan gözəl bir PDF alıram. Beləliklə, əsas sual: "ad" məlumatlarını verilənlər bazamdan və Çap Bəstəkarına necə əldə edə bilərəm? (Və sualım başa düşüləndirmi?) Bəlkə də bu şəkil kömək edir:


Məkan təbəqənizlə uyğun olmayan məkan cədvəllərini birləşdirməyi təklif edərdim. Məkan cədvəlinizin xüsusiyyətlərini açaraq bunu edin. Sonra Qoşulma sekmesini açın və müvafiq birləşmələri əlavə edin.

Cədvəllərinizdə ümumi bir açar yoxdursa, hər bir xəritə lövhəniz üçün istifadə etdiyiniz bir dəstək masası yarada bilərsiniz. Bu cədvəl digər cədvəllərdə müvafiq obyektlərlə əlaqələndirilir. Buna tbl_mapcoverage deyə bilərsiniz və atributlarınız belə ola bilər:

  • id - boşqabınızı bənzərsiz şəkildə tanıdır)
  • geom - xəritəniz üçün fokus sahəsini təyin edən çoxbucaqlı. Görünən olması lazım deyil.
  • ref_breadandbutterprices - məkan məlumatı olmayan cədvələ istinad
  • ref_conveniencestore - bir və ya daha çox mağazaya istinad olan geomlu cədvələ istinad.

QGIS atlas funksiyasının] 2 necə işlədiyindən və bu vəzifəni yerinə yetirmək üçün istifadə etdiyinizdən xəbərdar olduğunuzu güman edirəm.

Bir çox əlaqəyə daxil etmək istəyirsinizsə, bu məlumatları bir python skriptindən istifadə edərək çəkə və bir funksiyadan istifadə edərək məlumatlarınızla html cədvəli yarada bilərsiniz.


Videoya baxın: Einen Punkt mit pyQGIS hinzufügen addFeature Point