কিউজিআইএস দিয়ে একটি স্বয়ংক্রিয় উপায়ে গুণাবলী তৈরি করা?


11

আমি নতুন বৈশিষ্ট্য তৈরি করার সময় আইডিগুলি স্বয়ংক্রিয়ভাবে তৈরি করতে চাই। সুতরাং যতবারই আমি একটি নতুন পয়েন্ট তৈরি করব, এর আইডি নীচের মতো 1 টি বাড়বে:

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

আমি কীভাবে এটি আক্রমণ করতে পারি?

উত্তর:


8

আপনি যদি আপনার স্তরটিকে ডান-ক্লিক করেন এবং Properties > Fieldsতারপরে ক্লিক করে যান Text Edit, আপনি ডিফল্ট মান সেট করতে পারেন (হয় কোনও মান টাইপ করে বা একটি এক্সপ্রেশন ব্যবহার করে) যা অ্যাট্রিবিউট টেবিলটিতে স্বয়ংক্রিয়ভাবে উপস্থিত হবে।

দুর্ভাগ্যক্রমে, $rownum(যা আপনার বৈশিষ্ট্যগুলির জন্য আপনাকে অনন্য আইডিস্নী হিসাবে গ্রহণ করতে পারে) এর মতো অভিব্যক্তি ব্যবহার করা কার্যকর হয় না (আমার ধারণাটি কারণ বৈশিষ্ট্যটি প্রথমে প্রতিশ্রুতিবদ্ধ হতে হবে?)। তবে আমরা এমন একটি ফাংশন তৈরি করতে পারি যা তৈরি করা এবং সংযোজনের বৈশিষ্ট্যগুলির সংখ্যা গণনা করে 1. চিত্রটিতে প্রদর্শিত হিসাবে আপনি ফাংশন সম্পাদকটি অ্যাক্সেস করতে পারেন :

ফাংশন সম্পাদক

তারপরে ফাংশন সম্পাদকটিতে একটি নতুন ফাইল তৈরি করুন বা একটি বিদ্যমান সম্পাদনা করুন এবং নিম্নলিখিত কোডটি ব্যবহার করুন:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

লোড ক্লিক করুন তার পাশের এক্সপ্রেশন ট্যাবে যান এবং এক্সপ্রেশনটি sertোকান :

update()

তারপরে ওকে ক্লিক করুন এবং আপনার একটি প্রাকদর্শন মানটি দেখতে হবে:

পূর্বরূপ

ঠিক আছে , প্রয়োগ ইত্যাদি ক্লিক করুন এবং এখন আশা করি আপনি যখন কোনও বৈশিষ্ট্য তৈরি করেন, এটি স্বয়ংক্রিয়ভাবে আপনার নির্বাচিত ক্ষেত্রে একটি অনন্য আইডি তৈরি করবে।



3

আমি মনে করি একটি নতুন বৈশিষ্ট্য তৈরি করার সময় আপনি ডিফল্ট মান সেট করতে পারবেন না তবে আপনি নীচের কাজগুলি প্রায় চেষ্টা করতে পারেন:

  • আপনার বৈশিষ্ট্যগুলি তৈরি করার পরে অ্যাট্রিবিউট টেবিলটিতে যান
  • ফিল্ড ক্যালকুলেটরে যান এবং idটাইপ ইন্ট সহ একটি নতুন কলাম তৈরি করুন
  • মান সন্নিবেশ হিসাবে @row_numberযা সারি সংখ্যা অনুসারে অনন্য ভেল দেবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.