আমার অনুরূপ প্রয়োজনীয়তা ছিল এবং সমস্ত প্রজাতির জন্য বিন্দু লোকাল সহ একটি শেফফিলের উপর ভিত্তি করে মানচিত্র উত্পন্ন করতে কিউজিআইএস প্লাগইন একসাথে রেখেছিলাম (এটি সাধারণ সনাক্তকারী হিসাবে বিশিষ্ট টেবিলে একটি অনন্য ট্যাক্সনের নাম ধরে নেয়)। আমার প্রয়োজনীয়তাগুলি তেমন জটিল ছিল না - আমার মৌসুমী তথ্য, শিরোনাম বা কিংবদন্তির প্রয়োজন ছিল না, তবে এটি আপনার জন্য কার্যকর সূচনা পয়েন্ট হতে পারে। আরও জটিল দিকগুলির জন্য আপনাকে মানচিত্রের সুরকার ব্যবহার করতে হবে। সে সম্পর্কে আরও জানতে পাইকিজিআইএস কুকবুকটি দেখুন ।
প্লাগ লাগানো
প্লাগইন মানচিত্র তৈরি করতে স্বয়ংক্রিয় করে এবং আপনাকে এক্সটেন্টস, রেজোলিউশন এবং অন্যান্য দিকগুলি কনফিগার করতে দেয়। এটি আপনার গ্রিড ওভারলে হিসাবে আউটপুট একই স্টাইল প্রয়োগ করে। বর্তমানে এটি কেবল কিউজিআইএস (1.9 বা তার পরে) এর বিকাশ সংস্করণে চলে।
Sextante লিপি
প্লাগইনটি তৈরি করার আগে আমি এক্সস্ট্যান্ট ব্যবহার করে যুক্তি দিয়ে কাজ করেছি। এই ব্যবহারকারীর স্ক্রিপ্টটিও 1.8 এ কাজ করা উচিত (এটি পরীক্ষা করা হয়নি)। বিতরণ শৈলী ফাইল (.QML) আউটপুট বিতরণের স্টাইল (এটি বিতরণ ওভারলেয়ের স্টাইলটিকে উপেক্ষা করে)। বর্তমানে এটি আপনার অপারেটিং সিস্টেমের ডিফল্ট (/ লিনাক্সে টিএমপি, এবং উইন্ডোজের বিভিন্ন জায়গাগুলির উপর ভিত্তি করে টেম্প ডিরেক্টরিতে আউটপুট মানচিত্র রাখে - টিএমপি পরিবেশগত পরিবর্তনশীল দ্বারা সংজ্ঞায়িত)। আপনি কোডে নিজেকে সহজেই সংজ্ঞায়িত করতে পারেন। আপনাকে কোডের পরিমাণ এবং আউটপুট রেজোলিউশনও সম্পাদনা করতে হবে (এবং আপনি যদি সমুদ্রের জন্য আলাদা রঙ চান তবে পটভূমি রঙ)।
#Definition of inputs and outputs
#==================================
##[Scratch]=group
##all_localities=vector
##taxon_field=field all_localities
##africa_map=vector
##sa_map=vector
##grid_layer=vector
##distribution_style_file=file
#Algorithm body
#==================================
from qgis.core import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from sextante.core.QGisLayers import QGisLayers
from sextante.core.SextanteVectorWriter import SextanteVectorWriter
import tempfile
import os
def print_map(taxon,taxon_shp):
#load taxon layer (necessary?)
#QGisLayers.load(taxon_shp,name = "taxon",style = distribution_style_file)
taxon_layer = QgsVectorLayer(taxon_shp,"taxon","ogr")
QgsMapLayerRegistry.instance().addMapLayer(taxon_layer)
taxon_layer.loadNamedStyle(distribution_style_file)
# create image (dimensions 325x299)
img = QImage(QSize(325,299), QImage.Format_ARGB32_Premultiplied)
# set image's background color
color = QColor(192,192,255) # blue sea
img.fill(color.rgb())
# create painter
p = QPainter()
p.begin(img)
p.setRenderHint(QPainter.Antialiasing)
render = QgsMapRenderer()
# create layer set
africa_layer = QGisLayers.getObjectFromUri(africa_map)
sa_layer = QGisLayers.getObjectFromUri(sa_map)
#taxon_layer = QGisLayers.getObjectFromUri(taxon_shp)
lst = []
lst.append(taxon_layer.id())
lst.append(sa_layer.id())
lst.append(africa_layer.id())
render.setLayerSet(lst)
# set extent (xmin,ymin,xmax,ymax)
rect = QgsRectangle(14.75,-36.00,34.00,-21.00)
render.setExtent(rect)
# set output size
render.setOutputSize(img.size(), img.logicalDpiX())
# do the rendering
render.render(p)
p.end()
# save image
#outdir = os.path.dirname(os.path.abspath(output))
tempdir = tempfile.gettempdir()
img.save(os.path.join(tempdir,taxon+".png"),"png")
# remove taxon layer from project
QgsMapLayerRegistry.instance().removeMapLayers([taxon_layer.id()])
tempdir = tempfile.gettempdir()
taxa = sextante.runalg('qgis:listuniquevalues', all_localities, taxon_field, None)['UNIQUE_VALUES'].split(";")
for taxon in taxa:
sextante.runalg('qgis:selectbyattribute', all_localities, taxon_field, 0, taxon)
sextante.runalg('qgis:selectbylocation', grid_layer, all_localities, 0)
filename = os.path.join(tempdir,"taxon.shp") #memory file better?
sextante.runalg('qgis:saveselectedfeatures', grid_layer, filename)
print_map(taxon,filename)