Tôi đang cố gắng theo dõi phần kết xuất bản đồ từ sách dạy nấu ăn pyqgis, nhưng tôi muốn thử nghiệm đây là một ứng dụng độc lập. Tôi có thể thực hiện phần đầu tiên, sử dụng kết xuất đơn giản, nhưng tôi hơi bị mắc kẹt khi thực hiện ví dụ thứ hai bằng cách sử dụng trình soạn thảo bản đồ làm tập lệnh độc lập.
Đây là một ví dụ độc lập cho bit tôi có thể làm:
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtXml import *
QgsApplication.setPrefixPath("/usr/", True)
QgsApplication.initQgis()
fh = open("eg.csv","w")
fh.write("""
x,y,name
153.0278, -27.4679, Brisbane
144.2500, -23.4500, Longreach
145.7753, -16.9256, Cairns
""")
fh.close()
uri = "eg.csv?delimiter=%s&xField=%s&yField=%s" % (",", "x", "y")
layer = QgsVectorLayer(uri, "eglayer", "delimitedtext")
QgsMapLayerRegistry.instance().addMapLayer(layer)
img = QImage(QSize(800,600), QImage.Format_ARGB32_Premultiplied)
color = QColor(255,255,255)
img.fill(color.rgb())
p = QPainter()
p.begin(img)
render = QgsMapRenderer()
lst = [ layer.getLayerID() ] # add ID of every layer
render.setLayerSet(lst)
rect = QgsRectangle(render.fullExtent())
rect.scale(1.1)
render.setExtent(rect)
render.setOutputSize(img.size(), img.logicalDpiX())
render.render(p)
p.end()
img.save("render.png","png")
Những gì tôi thực sự muốn làm là giống nhau, nhưng sử dụng QgsComposition
và lưu như ví dụ pdf. Sách dạy nấu ăn nói:
Khi sử dụng trình soạn thảo trong một ứng dụng độc lập, bạn có thể tạo cá thể trình kết xuất bản đồ của riêng mình theo cách tương tự như được hiển thị trong phần trên và chuyển nó vào bố cục.
Điều này tôi không thể làm được, tất cả những nỗ lực của tôi đều có được một bản đồ trống hoặc một segfault. Tôi đang chạy linux mint 13, sử dụng qgis 1.8.0. Sẽ thật tuyệt nếu ai đó có thể chỉ cho tôi cách sửa đổi ví dụ đơn giản thành ví dụ sử dụng trình soạn nhạc.