স্টিলিং বিচ্ছিন্ন রাস্টার কিউজিআইএস ব্যবহার করে?


11

আমার কাছে পৃথক মান (ল্যান্ডিউজ বিভাগ, বুলিয়ান মান ...) সহ রাস্টার রয়েছে। আমি এগুলি একটি পৃথক উপায়ে স্টাইল করতে সক্ষম হতে চাই:

0 -> Red
1 -> Blue
2 -> Green
...

আমি আর্কজিআইএসে "অনন্য বিভাগ" এর মতো কিছু করতে চাই: http://resources.arcgis.com/en/help/main/10.1/index.html#/mittedasing_unique_categories_such_as_land_use/009t00000074000000/

তবে, আমি যে সমস্ত বিকল্প দেখছি তাতে রঙের র‌্যাম্প জড়িত ... আমি কি কিছু মিস করেছি?


আমি একটি বৈশিষ্ট্য অনুরোধ খুলেছি, যেহেতু কেবলমাত্র কার্যতালিকা উপলব্ধ রয়েছে, কোনও সমাধান নেই: http://hub.qgis.org/issues/14845

উত্তর:


8

আপনি একটি স্বনির্ধারিত স্টাইল স্কিম তৈরি করতে পারেন, অনন্য শ্রেণির মতো কিছু তবে আপনার নিজের পক্ষে সমস্ত বিভাগ ম্যানুয়ালি যোগ করতে হবে (অন্তত আমার থাকতে হবে তবে আমি কিউজিআইএস এর একটি পুরানো সংস্করণ ব্যবহার করছি)।

রাস্টার -> বৈশিষ্ট্য -> শৈলীতে রাইট ক্লিক করুন। সেখানে পছন্দ singleband pseudocolorহিসাবে চয়ন করুন Render typeএবং আপনার নিজস্ব মান এবং সংশ্লিষ্ট রঙ যুক্ত করতে সামান্য লাল প্লাসে ক্লিক করুন। এর লাইন ধরে কিছু: এখানে চিত্র বর্ণনা লিখুন

নোট করুন যে মানগুলি স্বয়ংক্রিয়ভাবে পেতে আপনি শ্রেণিবদ্ধও ব্যবহার করতে পারেন তবে আপনার যদি পৃথক মান থাকে তবে সেগুলি ম্যানুয়ালি যুক্ত করার চেয়ে আপনি আরও ভাল হতে পারেন, আপনার ডেটা কীভাবে বিতরণ করা হবে তার উপর নির্ভর করে।

যদি তা না হয় 0,1,2 .... 10 আপনার ডেটা, একটি প্যাটার্ন অনুসরণ করে থাকে, তাহলে আপনি স্থির করতে পারে Mode, সমান ব্যবধান করার পরিসর নির্ধারণ Min:0, Max:10এবং Classes:11ক্লিক করুন Classifyএবং আপনি সব মান স্বয়ংক্রিয়ভাবে পাবেন। তারপরে আপনি উপযুক্ত দেখতে দেখতে সেগুলি পরিবর্তন করতে পারেন could এখানে চিত্র বর্ণনা লিখুন আমি জানি এটি নিখুঁত নয়, তবে এটি এখন পর্যন্ত আমি খুঁজে পেয়েছি এটি সেরা। এই সমস্যাটি নিয়ে একটি প্লাগইন থাকতে পারে।


আমি আমার বিযুক্ত রাস্টারের সমস্ত সম্ভাব্য মান স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করার সম্ভাবনাটি প্রত্যাশা করছিলাম তবে দৃশ্যত এটি (এখনও?) বিদ্যমান নেই। ধন্যবাদ!
স্টাফেন হেনরিয়ড

যতদূর আমি সচেতন এটি এখনও সম্ভব নয়, তবে এটি এমন একটি প্লাগইন হতে পারে।
হাসান মোস্তফা

@ স্টাফ, স্বয়ংক্রিয়ভাবে মানগুলির পুরো পরিসীমা পাওয়ার জন্য: 'লোড মিনিট / সর্বাধিক মান' এর অধীনে আপনি 'মিনিট / সর্বোচ্চ' নির্বাচন করতে পারেন এবং তারপরে 'লোড' ক্লিক করতে পারেন, তারপরে এই পরিসীমাটি কভার করার জন্য শ্রেণীর সংখ্যা নির্ধারণ করুন (হাসানের নোট অনুসারে) ) এবং 'শ্রেণিবদ্ধ' ক্লিক করুন। আপনার যদি পরিসীমাটিতে মান না থাকে তবে আপনাকে সেগুলি ম্যানুয়ালি মুছতে হবে।
সিম্বামাঙ্গু

2
ধন্যবাদ, এটি সত্যই আমি ব্যবহার করি তবে আমি এটিকে খুব স্বজ্ঞাত মনে করি না, বেশিরভাগ সময় আমি যখন নতুন ব্যবহারকারীদের কিউগিস পড়ি। তদুপরি, আমার যদি আমার "6" মান থাকে যা আমি আমার রাস্টারগুলিতে প্রদর্শন করতে চাই না, আমার একটি সমস্যা রয়েছে: "6" সহ সমস্ত পিক্সেল "5" এবং "7" এর মধ্যে একটি বর্ণকে বিভক্ত করে তুলবে। আমি অবশ্যই বলতে পারি যে "6" কে নোডাটা হিসাবে বিবেচনা করা উচিত বা আমি "6" ছাড়াই একটি নতুন রাস্টার তৈরি করতে রাস্টার ক্যালকুলেটর ব্যবহার করতে পারি তবে আবার, সেগুলি সমস্ত কর্মক্ষেত্র। আদর্শভাবে, আমি একটি বোতাম "সমস্ত একক মান পুনরুদ্ধার" করতে চাই। ভবিষ্যতের সংস্করণগুলির জন্য এটি পরিকল্পনা করা হয়েছে কিনা তা আমি
খতিয়ে দেখব

1
আমি সম্পর্কিত বিষয়ে একটি টিকিট তৈরি করেছি: hub.qgis.org/issues/14449
কুর্ট মেনকে

5

এখানে একটি দ্রুত এবং নোংরা প্রসেসিং স্ক্রিপ্ট যা আপনি যা চেয়েছিলেন ঠিক তা করে (রঙের পছন্দগুলির জন্য ক্ষমা প্রার্থনা করে!)। এটি আপনার প্রসেসিং স্ক্রিপ্ট ডিরেক্টরিতে রাখুন (উদাহরণস্বরূপ: সি: \ ব্যবহারকারীগণ q .কিগিস 2 \ প্রসেসিং \ স্ক্রিপ্ট) এবং এটি স্ক্রিপ্টস> রাস্টার এর অধীনে প্রসেসিং সরঞ্জামবাক্সে প্রদর্শিত হবে।

এটি ভিত্তিক ইউনিক_ভ্যালু_কাউন্ট.পি স্ক্রিপ্টের জন্য ইউরি রিয়াবভকে ক্রেডিট।

সম্পাদনা: প্রসেসিং স্ক্রিপ্টস সংগ্রহস্থলটিতে এটি পেতে আমি কেবল একটি টান অনুরোধ জমা দিচ্ছি।

##Raster=group
##Generate unique values style=name
##Raster_to_extract_unique_values=raster
##round_values_to_ndigits=number 0

from osgeo import gdal
from random import randint
import math
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.utils import iface

# Rename verbose input vars
input = Raster_to_extract_unique_values
rdig = round_values_to_ndigits

# Initialize unique values list
sort_values = []
# create set for unique values list
cell_values = set()

# load raster
gdalData =  gdal.Open(str(input))

# get width and heights of the raster
xsize = gdalData.RasterXSize
ysize = gdalData.RasterYSize

# get number of bands
bands = gdalData.RasterCount

# process the raster
for i in xrange(1, bands + 1):
    progress.setText("processing band " + str(i) + " of " + str(bands))
    band_i = gdalData.GetRasterBand(i)
    raster = band_i.ReadAsArray() # This loads the entire raster into memory!
    # count unique values for the given band
    for col in range( xsize ):
        if col % 10 == 0: progress.setPercentage(int(100*col/xsize))
        for row in range( ysize ):
            cell_value = raster[row, col]
            # check if cell_value is NaN - don't add if it is
            if not math.isnan(cell_value):
                # round floats if needed
                if rdig:
                    try:
                        cell_value = round(cell_value, int(rdig))
                    except:
                        cell_value = round(cell_value)
                # Add to the unique values set
                cell_values.add(cell_value)

del(gdalData)

# decide whether to sort by the count-column or the value-column
sort_values = sorted(cell_values)

# Now load the layer and apply styling
layer = processing.getObjectFromUri(input)

qCRS = QgsColorRampShader()

# Build the colour ramp using random colours
colList = ['#ff0000','#ffff00','#0000ff','#00ffff','#00ff00','#ff00ff']

lst = []
for i,val in enumerate(sort_values):
    lst.append(QgsColorRampShader.ColorRampItem(val,QColor(colList[i % 6]),str(val)))

qCRS.setColorRampItemList(lst)
qCRS.setColorRampType(QgsColorRampShader.EXACT)

shader = QgsRasterShader()
shader.setRasterShaderFunction(qCRS)

renderer = QgsSingleBandPseudoColorRenderer(layer.dataProvider(), layer.type(), shader)
layer.setRenderer(renderer)
layer.triggerRepaint()

এটি নির্দোষভাবে কাজ করে, উজ্জ্বল স্টাফ! চটকদার অনুরোধ, তবে লেবেলটি আপডেট করার কোনও সুযোগ যাতে এটি টিওটিতে মানগুলি দেখায়? কিছু কারণে এটি তাদের দেখায় না।
এড রোলসন

সম্পন্ন - সবে স্ক্রিপ্টটি সম্পাদিত হয়েছে
অ্যান্ডি হারফুট

অনেক ধন্যবাদ! বিটিডব্লিউ আমি এই জাতীয় রেন্ডারারের 3.0 এর মধ্যে অন্তর্ভুক্ত করার জন্য কিছু বৈশিষ্ট্য বিবরণ এক সাথে রাখছি: docs.google.com/docament/d/… যে কেউ, নির্দ্বিধায় চেক / মন্তব্য / সংশোধন করতে পারেন। যে কোনও
ওয়ার্কআউন্ড

4

আপনি এটি চেষ্টা করতে পারেন:

1) স্তর বৈশিষ্ট্যগুলিতে একটি সাধারণ স্টাইল তৈরি করুন, তারপরে সেভ বোতামটি ব্যবহার করে একটি রফতানিতে সংরক্ষণ করুন। এগুলি ফর্মটিতে রয়েছে:

মান, আর, জি, বি, আলফা, লেবেল

2) প্রসেসিং মডিউলটির ঘাস (6 বা 7) সরঞ্জামবাক্সে আর সি ক্যাটাগরি ব্যবহার করুন। এটি রাস্টার মানগুলির একটি তালিকা সরবরাহ করা উচিত। এই মানগুলি অনুলিপি করুন। অবিচ্ছিন্ন ডেটার জন্য আপনি r.quantile ব্যবহার করতে পারেন।

3) আপনি রেকর্ড ফাইলটি আগে কোনও পাঠ্য সম্পাদকটিতে সংরক্ষণ করেছেন (যেমন উইন্ডোতে নোটপ্যাড ++, লিনাক্সে পছন্দসই লোড)। মানগুলি পেস্ট করুন এবং অনুসারে পুনরায় ফর্ম্যাট করুন।

@Stephane

3 এ) বিচ্ছিন্ন মানগুলির জন্য, আপনি আলফাটি 0 তে সেট করতে পারেন, বা মুছতে বা মন্তব্য করতে পারেন (লাইনের শুরুতে # ব্যবহার করে) আপনি বিভাগ ফাইলটিতে যে ডেটা প্রদর্শন করতে চান না।

3 বি) অবিচ্ছিন্ন মানগুলির জন্য, প্রারম্ভিক মানটির জন্য একটি সারি তৈরি করুন এবং শেষ মানেরটির জন্য আরেকটি করুন। উভয়ের জন্য 0 এ আলফা সেট করুন।

4) উদাহরণস্বরূপ, বলুন আপনি তিনটি ফাইল তৈরি করেছেন:

श्रेणিগুলি। টেক্সট - আর সি ক্যাটাগরির আউটপুট, কপি এবং পেস্ট করুন, শীর্ষে দুটি ফাঁকা রেখা যুক্ত করুন। মোট দৈর্ঘ্য 1 কলাম। অনন্য মানের সংখ্যা পরীক্ষা করে দেখুন এবং কিউজিআইএস-তে একই সংখ্যক এন্ট্রি সহ একটি স্টাইল তৈরি করুন।

colours.txt - আপনার পছন্দ মতো রঙের সাথে একটি কিউজিআইএস জেনারেটেড কালার ম্যাপ এক্সপোর্ট ফাইল। মোট দৈর্ঘ্য 6 কলাম।

Labels.txt - আপনি যে লেবেলগুলি চান তা ফাইল করুন, শীর্ষে দুটি ফাঁকা রেখা যুক্ত করুন। মোট দৈর্ঘ্য 1 কলাম।

ফাইলগুলিকে মার্জ করার জন্য একটি স্প্রেডশিট ব্যবহার করুন এবং সিএসভি হিসাবে সংরক্ষণ করুন। কিউজিআইএস এ এটি খুলুন।

বিকল্পভাবে, কমান্ড লাইনে (ব্যাশ বা মিসেস):

paste -d, categories.txt colours.txt labels.txt |cut -d, -f 1,3-6,8 > new_style.txt

আরো দেখুন:

https://pvanb.wordpress.com/2014/02/05/creating-a-qgis-color-map-from-text-file/

রাস্টার ডেটার জন্য উন্নত রঙের প্যালেট


খুব সুন্দর পদ্ধতি! তবে এখনও, যদি আমার
রাস্টারগুলিতে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.