কিউজিআইএস প্রকল্পের সুরকার স্বয়ংক্রিয়করণ?


9

আমার কাছে একটি বড় প্রকল্প রয়েছে যা প্রায় 10x কিউজিআইএস প্রকল্প ফাইল নিয়ে গঠিত। প্রতিটি প্রকল্পে 10 টি মানচিত্র তৈরি করতে একটি অ্যাটলাস সেটযুক্ত একটি মুদ্রণ রচয়িতা থাকে।

প্রতিটি প্রকল্পের খোলার স্বয়ংক্রিয়তা এবং সুরকার অ্যাটলাস ব্যবহার করে একটি পিডিএফ তৈরি করার সহজতম উপায় কী?

(এরকম কিছু আদর্শ হবে - এটি সম্ভব কিনা তা নিশ্চিত নয়)

সি: \ ওএসজিও 4 ডাব্লু \ বিন \ কিগিস.ব্যাট - মাইপ্রোজ 1

উত্তর:


9

এটি পাইথন ফাইলে সংরক্ষণ করা এবং - কোড কোডটি ব্যবহার করে আপনার যা করা দরকার তা করা উচিত:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os

from qgis.core import *
from qgis.gui import *
from qgis.utils import iface

for comp in iface.activeComposers():
    print comp
    folder = r"C:\temp"
    title = "testing"
    printer = QPrinter()
    painter = QPainter()
    comp.composition().setUseAdvancedEffects(False)
    myAtlas = comp.composition().atlasComposition()

    if myAtlas.enabled():
        myAtlas.beginRender()
        comp.composition().setAtlasMode(QgsComposition.ExportAtlas)
        myAtlas.setFilenamePattern(u"'{}_'||$feature".format(title))
        for i in range(0, myAtlas.numFeatures()):
            myAtlas.prepareForFeature(i)
            filename = os.path.join(folder, title + '.pdf')
            print filename
            comp.composition().beginPrintAsPDF(printer, filename)
            comp.composition().beginPrint(printer)
            printReady = painter.begin(printer)
            if i > 0:
                printer.newPage()
            comp.composition().doPrint(printer, painter)
        myAtlas.endRender()
        painter.end()

এটি সমস্ত রচয়িতা লুপ করবে এবং এগুলির মুদ্রণ করবে যদি তারা প্রতিটিের জন্য একটি একক পিডিএলে অ্যাটলাস সক্ষম করে থাকে।

দ্রষ্টব্য আপনি একটি QGIS সেশনে ব্যবহার করে একটি প্রকল্প ফাইল খুলতে পারেন iface.addProject। তাই আপনি অনেকগুলি কিউজিআইএস সেশন না খোলার জন্য এটি করতে পারেন।

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os

from qgis.core import *
from qgis.gui import *
from qgis.utils import iface

def print_it():
    for comp in iface.activeComposers():
        print comp
        folder = r"C:\temp"
        title = "testing"
        printer = QPrinter()
        painter = QPainter()
        comp.composition().setUseAdvancedEffects(False)
        myAtlas = comp.composition().atlasComposition()

        if myAtlas.enabled():
            myAtlas.beginRender()
            comp.composition().setAtlasMode(QgsComposition.ExportAtlas)
            myAtlas.setFilenamePattern(u"'{}_'||$feature".format(title))
            for i in range(0, myAtlas.numFeatures()):
                myAtlas.prepareForFeature(i)
                filename = os.path.join(folder, title + '.pdf')
                print filename
                comp.composition().beginPrintAsPDF(printer, filename)
                comp.composition().beginPrint(printer)
                printReady = painter.begin(printer)
                if i > 0:
                    printer.newPage()
                comp.composition().doPrint(printer, painter)
            myAtlas.endRender()
            painter.end()

for project in projectlist:
    iface.addProject(project)
    print_it()

প্রাসঙ্গিক পোস্ট এবং দুর্দান্ত উত্তর!
কার্টোজ

আমি কি এটা ধরে নিব? sys.exit()কাজ শেষ হয়ে গেলে আপনি QGIS বন্ধ করতে ব্যবহার করতে পারেন ।
নাথান ডাব্লু

হ্যাঁ, এটি পুরোপুরি কাজ করে। আমি ছিল আসলে প্রস্থান একটি উপায় খুঁজে বের করার চেষ্টা করছে। আমি iface.actionExit ()। ট্রিগার () এবং sys.exit () চেষ্টা করেছি কিন্তু কিছু কারণে তারা কাজ করছে না।
ড্যামিয়েন

চেষ্টা করুনQgsApplication.exit()
নাথান ডাব্লু

iface.actionExit()যদি প্রকল্পটি পরিবর্তিত হয় এবং প্রস্থানটিকে অবরুদ্ধ করে দেয় তবে একটি ডায়ালগ প্রদর্শন করতে চলেছে, QgsApplication.exit()যার ফলে প্রক্রিয়াটি কেবল অবিরাম হবে।
নাথান ডাব্লু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.