কোন উচ্চতাগুলি পূর্ণসংখ্যাগুলি নির্বাচন করছে?


18

আমার সাথে 0.2 মিটার ব্যবধানের সাথে একটি কনট্যুর ফিচারক্লাস রয়েছে। আমি কেবলমাত্র 1 মিটার বিরতিতে এমন কনট্যুরগুলি নির্বাচন করতে চাই?

আমি 'অ্যাট্রিবিউট বাছাই করুন' ডায়ালগটিতে (আর্কম্যাপে) নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করার চেষ্টা করেছি, তবে এটি সমস্ত রূপ নির্বাচন করে:

Mod("ELEVATION", 1)=0

আমার কী জিজ্ঞাসা চালানো উচিত?


আমার জন্য প্রচুর সময় বাঁচিয়েছে, সত্যিই ধন্যবাদ! "ফ্লোরি", "উচ্চতা" এবং "মোড" এর মতো এই কোয়েরি কোডগুলি কখনও দেখেনি।

উত্তর:


22

কেবলমাত্র পূর্ণসংখ্যার মানগুলি নির্বাচন করার সহজ কৌশলটি হ'ল নিম্নলিখিত বাক্য গঠনটি ব্যবহার করা:

Mod(Round("ELEVATION", 0)*10, 10)=0

10 দ্বারা এই গুণ, সমস্ত মানকে পূর্ণসংখ্যায় পরিণত করে এবং তারপরে আমরা কেবল 10 টি গুণফলগুলি বেছে নিই।

আপনি যদি অন্য কোনও সংখ্যার গুণক নির্বাচন করতে চান, তবে অন্তর 10 দ্বারা গুণিত করুন।

  • 5 মিটার বিরতিতে রূপক পেতে, ব্যবহার করুন:

    Mod(Round("ELEVATION",0) * 10, 50)=0

  • 100 মিটার ব্যবধানে কনসার্ট পেতে:

    Mod(Round("ELEVATION", 0) * 10, 1000)=0

আপডেট
নীচের মন্তব্যে দেওয়া হুইবারের পরামর্শ অনুসারে, আমি ক্যোয়ারী এক্সপ্রেশনটিতে রাউন্ডিং ফাংশন যুক্ত করেছি।


6
আমি মনে করি না আমি এই সমাধানগুলিতে বিশ্বাস করব। সমস্যাটি হল যে 0.2 এর অ-অবিচ্ছেদ্য অন্তরগুলির সাথে, ডেটাবেস সম্ভবত এগুলি ফ্লোট হিসাবে সংরক্ষণ করে। ফলস্বরূপ MODভাসমান-পয়েন্ট রাউন্ডঅফ ত্রুটির সাপেক্ষে হবে - এবং এটি এখানে সমালোচনামূলক: আপনি যদি খুব স্বল্পতম সংখ্যার চেয়েও কম হন MODতবে ভুল মান (এটি কীভাবে বাস্তবায়িত হয় তার উপর নির্ভর করে) ফিরিয়ে দিতে পারে। আমি এই সূক্ষ্ম (এবং कपटी) ত্রুটিগুলি রোধ করার উপায় হিসাবে প্রয়োগ করার আগে মানগুলি গোল করার পরামর্শ দিতে চাই MOD
whuber

10 দিয়ে গুণ করার পরে আপনাকে গোল করতে হবে, তবে মোডটি আবিষ্কার করার আগে।
স্মিথক্ম

1
যদি আমি 5 মিটার বিরতিতে রূপক নির্বাচন করতে চাই, উপরে উল্লিখিত সূত্রটি অ-পূর্ণসংখ্যাগুলি নির্বাচন করে যা 5 টির সাথে সমানভাবে বিভাজ্য এমন একটি সংখ্যার জন্য পূর্ণ হয় তবে উদাহরণস্বরূপ , 14.5 মি এবং 19.5 মিটি নির্বাচিত হয়েছিল তবে এটি পছন্দসই নয়। আমি যদি ফাংশনের 'রাউন্ড' অংশটি ফেলে রাখি তবে এগুলি নির্বাচন করা হয়নি।
ডিলংটাইম

1
@ ডালংটাইম আপনার যদি এমন সংলগ্ন অংশ রয়েছে যা অ-অবিচ্ছেদ্য স্তরের বলে মনে করা ROUNDহয় তবে রাউন্ডিংয়ে আরও স্পষ্টতা অর্জনের জন্য দ্বিতীয় যুক্তিটি কেবল পরিবর্তন করুন ।
হোয়বার

9

এখানে আরও একটি ক্যোয়ারী বিকল্প রয়েছে। এটি মূলত উপরে তালিকাভুক্ত উত্তরগুলির মতো একই রকম হয় তবে (আমার মতে) বিভিন্ন পরিস্থিতিতে কাস্টমাইজ করা কিছুটা সহজ।

10 দ্বারা বিভাজ্য কোনও কনট্যুর প্রদর্শন করতে

Floor(Elevation/10)=Elevation/10

50 দ্বারা বিভাজ্য কোনও কনট্যুর প্রদর্শন করতে

Floor(Elevation/50)=Elevation/50

অর্ধ মিটার রূপক প্রদর্শন করতে display

Floor(Elevation/0.5)=Elevation/0.5

একটি সালিসী অফসেট সহ 10 মিটার কনট্যুরগুলি প্রদর্শন করতে (যেমন 10.2, 20.2, 30.2)

Floor((Elevation-0.2)/10)=(Elevation-0.2)/10

দিনের শেষে, এটি বিবেচনা করার জন্য অন্য একটি বিকল্প।


2

এটি উপরের উত্তরের মন্তব্য হিসাবে বোঝানো হয়েছিল - দুঃখিত

আপনার কনট্যুরগুলি ডিবিতে সংরক্ষণ করা হয় এমন ধরণের উপর নির্ভর করে সিনট্যাক্স পরিবর্তিত হতে পারে তবে প্রদত্ত সমাধানটি তাদের মানগুলি গোল করার পরে সূচীগুলি বেছে নেবে বলে মনে হচ্ছে। সুতরাং উদাহরণস্বরূপ আমার পরীক্ষায় এটি একটি নির্বাচিত সেট অর্জন করেছিল যা .3 মিটার পাশাপাশি .4 মিটার অন্তর্ভুক্ত করে। আসলে, এটি মানগুলির কোনওটিই বাদ দেয় না।

এই সমীকরণ

Mod(Round("ELEVATION" * 10, 0), 2)=0

আমাকে এমন ফলাফল দিয়েছেন যা দেখে মনে হয় প্রশ্নকর্তা যা জিজ্ঞাসা করছে তার সাথে মেলে।


1

সূচকের সারসংক্ষেপ পেতে আমি এটি ফিল্ড ক্যালকুলেটরটিতে ব্যবহার করি:

এআরসিএমএপ-এ

dim dIndexInterval
dim dCont
dim i
dim j
dim k
dim c

dIndexInterval = 200 ' set to interval of index contours
dCont = [level] ' Set to contour height field

i = ROUND(dCont, 0) * 10
j = dIndexInterval * 10
k = i MOD j

if k = 0 then
 c = 1 ' is an index contour
else
 c = 0 ' is not an index contour
end if

ডায়ালগ বক্সের নীচে পাঠ্য ইনপুট ক্ষেত্রে 'সি' (উদ্ধৃতি ব্যতীত) টাইপ করুন এবং ঠিক আছে ক্লিক করুন।

কিউজিসে

if(((round("level", 0) * 10) % (200 * 10)) = 0, 1, 0)

"" স্তর "" উচ্চতা ক্ষেত্রের কনট্যুর করতে সেট করুন "200" সূচী সূচকের বিরতিতে সেট করুন

তারপরে: "1" একটি সূচক কনট্যুর এবং "0" কোনও সূচী রূপক নয়


0

কোনও বাকি আছে কিনা তা নির্ধারণের জন্য কনট্যুরটি 10 ​​দ্বারা এবং তারপরে মডিউলাস 10 দ্বারা গুণন করুন। যদি এটি পূর্ণসংখ্যা ছাড়া আর কিছু না থাকে তবে তা ভাসা।

def contour_class(contour):
    if ((contour * 10) % 10) == 0:
        return "Integer"
    else:
        return "Float"

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