Şu anda python küçük bir komut dosyası oluşturmak için buldum tek yolu, belki bu bir eklentiye geçiş olabilir ama bu konuda hiçbir deneyimim yok.
Doğru besteci ve haritaları seçerek gerçekten temel bir koddur:
from qgis.core import *
from qgis.utils import *
composerList = iface.activeComposers()
comp = composerList[4]
maps = comp.composition().composerMapItems()
masterMap = maps[0]
slave1 = maps[1]
slave2 = maps[4]
slave1.setNewExtent(masterMap.extent())
slave2.setNewExtent(masterMap.extent())
Diğer seçenek, haritalar farklı şekillere sahipse, yeni kapsamdan sonra ayarlamak için köle haritalarındaki başlangıç ölçeğini korumak olurdu, ancak benim kişisel durumumda bu kodla yeterliydi:
Bu çözümü geliştirmek için açığım (neredeyse hiç deneyimim yok PyQGIS
).
Farklı boyutlarda ve ölçeklerde işlem yapma
Yukarıdaki kod aynı ölçüde (ve dolayısıyla şekil olarak) ve ölçekle harika çalışır. Şimdi farklı uzantıları, şekilleri ve ölçekleri ile test geliştirilmiş bir kod var:
from qgis.core import *
from qgis.utils import *
composerList = iface.activeComposers()
comp = composerList[0]
maps = comp.composition().composerMapItems()
masterMap = maps[2]
slave1 = maps[1]
slave2 = maps[0]
centroid = masterMap.extent().center()
diffx1 = slave1.extent().xMaximum() - slave1.extent().xMinimum()
diffy1 = slave1.extent().yMaximum() - slave1.extent().yMinimum()
diffx2 = slave2.extent().xMaximum() - slave2.extent().xMinimum()
diffy2 = slave2.extent().yMaximum() - slave2.extent().yMinimum()
newExtent1 = QgsRectangle(centroid[0]-(diffx1/2),centroid[1]-(diffy1/2),centroid[0]+(diffx1/2),centroid[1]+(diffy1/2))
newExtent2 = QgsRectangle(centroid[0]-(diffx2/2),centroid[1]-(diffy2/2),centroid[0]+(diffx2/2),centroid[1]+(diffy2/2))
slave1.setNewExtent(newExtent1)
slave2.setNewExtent(newExtent2)
Ve ortaya çıkan test: