পয়েন্ট-টাচিং-এ-লাইন বৈশিষ্ট্যগুলি কিউজিআইএস ব্যবহার করে লাইন লেয়ারে ফিরে আসছেন?


12

আমি কিউজিআইএস 2.14.4-এসেন ব্যবহার করছি। আমার দুটি স্তর রয়েছে:

  • point.shp যাতে YEAR কলাম সহ পয়েন্ট থাকে
  • lines.shp এর মধ্যে এমন রেখাগুলি রয়েছে যা পয়েন্টস.এসপি থেকে পয়েন্টগুলি একেবারে সংযুক্ত করে

আমি ইয়ারের বৈশিষ্ট্যটি পয়েন্টস.এসপি থেকে লাইন.এসপি-তে ফিরে পেতে চাই। প্রতিটি লাইন প্রতিটি প্রান্তে এক পয়েন্ট সহ একক বিভাগ (নীচের চিত্র দেখুন)। আমি যেটি পেতে চাই তা হ'ল প্রথম বিন্দু থেকে YEAR এবং দ্বিতীয় পয়েন্ট থেকে YEAR প্রতিটি লাইনের বৈশিষ্ট্যে ফিরে।

উদাহরণস্বরূপ: লাইন 1 হ'ল YEAR = 2010 এবং প্রথম পয়েন্টটি YEAR = 2011 এর সাথে স্পর্শ করছে with আমি লাইন 1 বৈশিষ্ট্যে '2010-2011' এর মতো কিছু ফিরে পেতে চাই। ফলাফলটি দেখতে এমন হওয়া উচিত:

id  | points
----+-----------------
1   | 2010-2011
2   | 2011-2012
3   | 2012-2016

এখানে চিত্র বর্ণনা লিখুন

কিউজিআইএস ব্যবহার করে এটি অর্জন করার কোনও উপায় আছে?

উত্তর:


9

যদিও @radouxju উত্তরটি বৈধ, তবে আমি এটিকে আরও বিশদভাবে ব্যাখ্যা করব।

  1. আপনাকে নিশ্চিত করতে হবে যে পললাইন বৈশিষ্ট্যটি বিন্দুর অবস্থানগুলির ঠিক উপরে বিভক্ত।
  2. ব্যবহার Join attribute by location। লক্ষ্য স্তর হিসাবে পয়েন্ট লোকেশনগুলিতে বিভক্ত লাইন বৈশিষ্ট্যটি চয়ন করুন - আমার ক্ষেত্রে আমি এটির নাম "বিস্ফোরিত" করেছি।
  3. সংক্ষিপ্ত বিভাগে, "ছেদ করা বৈশিষ্ট্যের সংক্ষিপ্তসার নিন" নির্বাচন করুন। এখানে, দুটি বার চালনার পরিবর্তে; মিনের জন্য একটি এবং ম্যাক্সের জন্য অন্য সময়, আপনি এটি একবার চালাতে পারেন এবং ন্যূনতম এবং ম্যাক্স উভয়ই চয়ন করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

  1. আউট ফাইলের নিম্নলিখিত বৈশিষ্ট্য থাকবে:

এখানে চিত্র বর্ণনা লিখুন

  1. পদক্ষেপ 4 থেকে নতুন শেফফিলিতে "বছর" নামের সাথে একটি নতুন টাইপের স্ট্রিং যুক্ত করুন।
  2. ফিল্ড ক্যালকুলেটর ব্যবহার করুন এবং বিদ্যমান ক্ষেত্রটি আপডেট করতে যান। "বছর" নির্বাচন করুন এবং নিম্নলিখিত প্রকাশটি লিখুন:

    টু স্ট্রিং ("MINYEAR2") + '-' + টু স্ট্রিং ("MAXYEAR2")

  3. চূড়ান্ত আউটপুট বৈশিষ্ট্যটি এর মতো দেখাবে:

এখানে চিত্র বর্ণনা লিখুন

  1. চূড়ান্ত আউটপুটটি এর মতো হবে:

এখানে চিত্র বর্ণনা লিখুন


আপনার ডেটা পরীক্ষা করার পরে এখানে আউটপুট দেওয়া হচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

বামদিকে সারণীটি টাইপ পূর্ণসংখ্যার একটি নতুন ক্ষেত্র তৈরি করার পরে পয়েন্ট ডেটা এবং ডানদিকে টেবিলটি উপরে উল্লিখিত পদক্ষেপ 2 ব্যবহার করে পয়েন্ট ডেটা সহ লাইনে যোগদানের পরে। তারপরে আমি চূড়ান্ত ডেটা তৈরি করতে 5-6 পদক্ষেপ ব্যবহার করেছি।

হালনাগাদ

আমি YEAR ফিল্ডটিকে স্ট্রিং থেকে পূর্ণসংখ্যায়___ () ব্যবহার করে রূপান্তর করার চেষ্টা করেছি এবং এটি কার্যকর হয়েছে worked সুতরাং আপনাকে এটি ম্যানুয়ালি করার দরকার নেই। যাইহোক, ক্ষেত্র প্রকার ধরনের হওয়া উচিত Integerনয় Integer64। ক্ষেত্রের দৈর্ঘ্য 9 অবধি রয়েছে কিনা তা নিশ্চিত করুন আপনি যদি 10 এর ক্ষেত্রের দৈর্ঘ্য চয়ন করেন তবে এটি রূপান্তরিত হবে Interger64, এবং এটির সাথে কাজ করবে না Interger64। তারপরে আপনি পদক্ষেপটি 2-6 থেকে অনুসরণ করতে পারেন

To_int () এক্সপ্রেশনটি ব্যবহার করার পরে এখানে চূড়ান্ত আউটপুট দেওয়া হল:

এখানে চিত্র বর্ণনা লিখুন

বামদিকে উপরের অ্যাট্রিবিউট টেবিলের মধ্যে, YEAR টাইপ স্ট্রিং এবং YEAR2 টাইপ পূর্ণসংখ্যার রূপান্তর__ (এক্সপ্রেশন) ব্যবহার করে রূপান্তরিত হয়। আপনি 2-6 পদক্ষেপ অনুসরণ করার পরে ডানদিকে অ্যাট্রিবিউট টেবিলটিতে দেখতে পাচ্ছেন, আমি MINYEAR2 এবং MAXYEAR2 পেয়েছি, তারপরে আবার স্ট্রিংয়ে রূপান্তরিত হয়ে YEAR ফিল্ডের সাথে একসাথে সমস্ত কিছু একত্রিত করতে।


অনেক ধন্যবাদ! আমি বেশ কয়েকবার ঠিক তাই করেছি। আমি অনুমান করি যে পললাইন বৈশিষ্ট্যগুলি পয়েন্টের অবস্থানগুলির ঠিক উপরে বিভক্ত কারণ আমি পয়েন্ট 2 ওয়ান প্লাগইন ব্যবহার করে পয়েন্ট স্তরগুলি থেকে লাইন তৈরি করেছি। আপনি কি এই ডেটা উপসেটটি দিয়ে চেষ্টা করতে পারবেন: drive.google.com/file/d/0B7ZWEFkkfYgheG92Q29sa0I3LW8/view ? আবার ধন্যবাদ!
wiltomap

বৈশিষ্ট্য সারণীতে YEAR ক্ষেত্র টাইপ স্ট্রিংয়ের। আপনাকে পূর্ণসংখ্যার টাইপ এবং বছরগুলিতে ম্যানুয়ালি ইনপুট দেওয়ার একটি নতুন ক্ষেত্র যুক্ত করতে হবে। পূর্ণসংখ্যা টাইপ ক্ষেত্র তৈরি করার পরে এবং সম্পাদনাগুলি সংরক্ষণ করার পরে, পুরানো স্ট্রিং ক্ষেত্রটি সরিয়ে দিন। তারপরে, উপরের বিস্তারিত প্রক্রিয়াটি অনুসরণ করুন।
আহমাদব

আমি YEAR ফিল্ডটি স্ট্রিং থেকে পূর্ণসংখ্যায়___ () ব্যবহার করে রূপান্তরিত করার চেষ্টা করেছি, কিন্তু কাজ করে নি। আমি যখন বছরগুলিতে ম্যানুয়ালি প্রবেশ করি তখন এটি প্রত্যাশার মতো কাজ করে।
আহমাদব

পরিষ্কার ব্যাখ্যা @ আহমাদনব
শিকো

ধন্যবাদ @ আহমাদানব! আসল বিষয়টি হ'ল আমি উপরে যে ডেটা ভাগ করেছি তা একটি উপসেট। আমার কয়েক হাজার লাইন এবং পয়েন্ট রয়েছে তাই কয়েক বছর ধরে ম্যানুয়ালি প্রবেশ করা বেশ কাজ হবে! এটি কি বাগ?
wiltomap

5

লাইনে যোগদানের পয়েন্টগুলিতে যোগদান করার সময় আপনার একাধিক সম্পর্ক থাকবে। "অবস্থান অনুসারে অ্যাট্রিবিউট যোগ দিন" দিয়ে আপনি প্রদত্ত সংক্ষিপ্ত পদ্ধতিটি জিজ্ঞাসা করতে সক্ষম হবেন। আপনার ক্ষেত্রে, এটি দু'বার করুন: একবার সর্বনিম্ন সহ এবং একবার সর্বোচ্চ সহ। এর পরে আপনি দুটি ক্ষেত্রকে একটি নতুন ক্ষেত্রে একত্রিত করতে পারেন এবং আপনার যা প্রয়োজন তা শেষ করুন।

এখানে চিত্র বর্ণনা লিখুন

ফিল্ড ক্যালকুলেটর:

tostring(minYEAR) + '-' + tostring(maxYEAR)

এই পদ্ধতিটি প্রতিটি লাইনের জন্য নামযুক্ত COUNTএবং একটি অতিরিক্ত কলাম 2প্রদান করে। মিন এবং সর্বাধিক বিকল্পগুলি এই তথ্যগুলি ফেরত দেয়। আমি লাইন স্তরটিকে লক্ষ্য স্তর হিসাবে এবং পয়েন্ট স্তরটিকে জোয়ার স্তর হিসাবে নির্বাচন করেছি, আমি কি ঠিক আছি?
wiltomap

আপনি বছরের ক্ষেত্রের সংখ্যা বা পাঠ্য?
Radouxju

YEARক্ষেত্র পূর্ণসংখ্যা। আমি সঙ্গে একটি নতুন কলাম তৈরি করার চেষ্টা করেছেন to_string("YEAR")কিন্তু ফলাফলের ঠিক একই ... হয়
wiltomap

আমি নিশ্চিত হওয়ার জন্য একটি দ্রুত পরীক্ষা করেছি (কিউজিআইএস ২.৮.৩) এবং এটি কার্যকর হয়েছে। যদি আপনার গণনা 2 হয় তবে এর অর্থ হ'ল প্রতিটি বিভাগের জন্য আপনার 2 পয়েন্ট রয়েছে যা সঠিক। তবে আমার সাথে স্থানিক জোড় দ্বারা নির্মিত নতুন লাইন ভেক্টরটিতে MINYEAR MAXYEAR গুণযুক্ত মান রয়েছে। এটি আপনার ক্ষেত্রে কেন কাজ করে না তা আমি বুঝতে পারি না। আপনি অন্য ফাইল দিয়ে চেষ্টা করতে পারেন?
Radouxju

4

টপোলজি নিখুঁত বলে ধরে নিচ্ছি, এক্সপ্রেশন দিয়ে একটি ফিল্ড 'ডব্লু কেটি' তৈরি করবে

geom_to_wkt( $geometry) 

আপনার বিন্দু স্তরে, আপনি প্রকাশটি ব্যবহার করতে পারেন:

min( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry)  )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year'))||'-'|| max( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry)  )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year'))

পাইপের স্তরটির ক্ষেত্র ক্যালকুলেটরটিতে একটি পাঠ্য স্ট্রিং তৈরি করে।

  • অ্যাট্রিবিউট (বৈশিষ্ট্য, বৈশিষ্ট্য_নাম) এখানে একটি বৈশিষ্ট্য থেকে নির্দিষ্ট বৈশিষ্ট্যের মান প্রদান করে, এখানে, পয়েন্ট বৈশিষ্ট্যের
    প্রাপ্তির বছর ।
  • get_feचर (স্তর, বৈশিষ্ট্য, মান) প্রদত্ত বৈশিষ্ট্য মানের সাথে মিলিয়ে একটি স্তরটির প্রথম বৈশিষ্ট্যটি প্রদান করে।
    আপনার লাইনের শুরু এবং শেষের কোণটিকে আমরা একই স্থানাঙ্কগুলির সাথে (ডাব্লুকেটি ফর্ম্যাটে) কোনও পয়েন্ট পেতে পারি কিনা তা এখানে পরীক্ষা করে দেখুন ।
  • স্টার্টপয়েন্ট (জ্যামিতি) জ্যামিতি থেকে প্রথম নোড দেয়। আপনার লাইনের প্রথম শীর্ষটি এখানে।
  • শেষ_পয়েন্ট (জ্যামিতি) জ্যামিতি থেকে সর্বশেষ নোড প্রদান করে। এখানে আপনার লাইনের শেষ প্রান্তটি।
  • geom_to_wkt (জ্যামিতি) জ্যামিতির সুপরিচিত পাঠ্য (ডব্লু কেটি) উপস্থাপন করে। এখানে চিত্র বর্ণনা লিখুন

আপনি এটিতে আপডেটও করতে পারেন:

CASE
WHEN attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry)  )),'year') = attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year')
THEN attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year')
ELSE min( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry)  )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year'))||'-'|| max( attribute( get_feature('points','WKT', geom_to_wkt(start_point($geometry)  )),'year'),attribute( get_feature('points','WKT', geom_to_wkt(end_point($geometry)  )),'year'))
END

একই বছরের দুটি পয়েন্ট যদি সংযুক্ত থাকে কেবলমাত্র এক বছর দেখানোর জন্য (200X-200X এর পরিবর্তে 200X পাচ্ছে)।

এই পদ্ধতির মূল সুবিধাটি হ'ল যদি আপনার ডেটা আপনার পয়েন্টগুলিতে পরিবর্তন হয় তবে আপনি কেবলমাত্র একটি ফিল্ড ক্যালকুলেটর দিয়ে খুব দ্রুত এটি আপডেট করতে পারেন।
এমনকি আপনি যখন নতুন লাইন তৈরি করেন তখন আপনি এই নিয়মটিকে একটি অটোফিল্ড হিসাবে যুক্ত করতে পারেন।
চিয়ার্স,

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