স্থায়ীভাবে আরকজিআইএস তৈরি করুন ক্ষেত্রগুলি পুনরায় অর্ডার করুন কোয়েরি সারণী সরঞ্জামটি তৈরি করুন?


15

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

যাইহোক, আমি যখন সেই সরঞ্জামটির জন্য ডায়ালগটি খুলি তখন আমি কোথাও দেখতে পাচ্ছি না যা ক্ষেত্রগুলির পুনরায় ক্রম সক্ষম করে। আমি কেবল দেখতে পাচ্ছি যে চেকবক্সগুলি ব্যবহার করে ক্ষেত্রগুলি বহন করা বা ফেলে দেওয়া যেতে পারে তবে একই ক্রমে।

অনুমান করা যায় যে এটি সম্ভব কি কেউ আরও বিস্তারিতভাবে পদক্ষেপগুলি বর্ণনা করতে পারেন, দয়া করে?

ক্যোরি টেবিল সরঞ্জাম সংলাপ করুন

উত্তর:


13

মেক ক্যোরি টেবিল সরঞ্জাম, পাইথন স্নিপেট হিসাবে অনুলিপি করুন , পাইথন উইন্ডো এবং অনুলিপি বৈশিষ্ট্য সরঞ্জামটি ব্যবহার করে এটি কীভাবে করবেন তা অনুধাবন করেছি

জিপিপ্রসেসিং থেকে পাইথন স্নিপেট হিসাবে এই কোডটি অনুলিপি করতে পেরেছি, আউটপুটে আমি উপস্থিত ক্ষেত্রগুলির মধ্যে টানতে ক্যোয়ারী টেবিল টুলটি চালানোর পরে আমি পাইথন স্নিপেট হিসাবে এই কোডটি অনুলিপি করতে সক্ষম হয়েছি | আরক্যাপের পাইথন উইন্ডোতে ফলাফল উইন্ডো।

arcpy.MakeQueryTable_management("'C:/avhome/data/WAregional/wa regional.mdb/schools'","QueryTable","USE_KEY_FIELDS","#","schools.OBJECTID #;schools.Shape #;schools.CODE #;schools.NAME #;schools.TYPE #;schools.Y11STUDENT #;schools.Y12STUDENT #;schools.COORDGEOCO #;schools.ID #","#")

এবং এটিতে সম্পাদনা করুন:

arcpy.MakeQueryTable_management("'C:/avhome/data/WAregional/wa regional.mdb/schools'","QueryTable2","USE_KEY_FIELDS","#","schools.OBJECTID #;schools.Shape #;schools.Y12STUDENT #;schools.Y11STUDENT #;schools.NAME #","#")

নোট করুন যে নতুন কোয়েরি টেবিল 2 শেপ ফিল্ডটি ধরে রেখেছে (তাই আমি এটি কপিরাইটার করতে পারি) এবং আমি নামটি, YR11STUDENT এবং YR12STUDENT ক্ষেত্রটিকে পুনরায় সাজিয়েছি। আমি আরও কয়েকটি ক্ষেত্র বাদ দেওয়ার সুযোগটি ব্যবহার করেছি।

শেষ পদক্ষেপটি কোয়েরি টেবিল 2-এ অনুলিপি করা বৈশিষ্ট্য সরঞ্জামটি ব্যবহার করা যা আমি স্থায়ীভাবে পুনরায় অর্ডারযুক্ত ক্ষেত্রগুলির সাথে একটি নতুন বৈশিষ্ট্য শ্রেণি তৈরি করতে তার সরঞ্জাম সংলাপটির মাধ্যমে করেছি।


2
দ্রষ্টব্য: আপনি ক্ষেত্রের নাম এবং উপাত্তের তালিকা [[[ক্ষেত্রের নাম 1, উপকরণ 1], [ক্ষেত্রের নাম 2, উপকরণ 2] ...]) এর তালিকা ইনপুট করে আপনার ক্ষেত্রের নামগুলি পরিবর্তন করতে আপনি মেককোয়ারি টেবিলটিও ব্যবহার করতে পারেন
ndimhypervol

1
আপনি যখন ফিচার ক্লাস ফিচার ক্লাসে চালাবেন এবং তারপরে পাইথন স্নিপেট হিসাবে অনুলিপি করবেন তখন একই কার্যকারিতাটি উন্মোচিত হবে।
অ্যালেক্স তেরেশেনকভ

2

সঙ্গে মার্জ টুল আপনি স্থায়ীভাবে সহজে পুনর্বিন্যাস ক্ষেত্র পারেন। এটি টেবিল এবং বৈশিষ্ট্য শ্রেণীর সাথে কাজ করে। পুনর্নির্মাণটি পাইথন স্ক্রিপ্টের মাধ্যমে এমনকি সরঞ্জাম ডায়ালগের মাধ্যমেও করা যেতে পারে (কোনও ক্ষেত্র সরিয়ে এবং ডায়ালগটিতে এটি পুনরায় যুক্ত করে)। যদিও ডায়ালগের মাধ্যমে পুনরায় অর্ডার করা কোনও নিখুঁত পদ্ধতির নয়।

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

এখানে একটি অজগর স্ক্রিপ্ট যা ক্ষেত্রগুলি পুনরায় অর্ডার করতে মার্জ সরঞ্জামটি ব্যবহার করে ( এখান থেকে অনুলিপি করা হয়েছে )

import arcpy

def reorder_fields(table, out_table, field_order, add_missing=True):
    """ 
    Reorders fields in input featureclass/table
    :table:         input table (fc, table, layer, etc)
    :out_table:     output table (fc, table, layer, etc)
    :field_order:   order of fields (objectid, shape not necessary)
    :add_missing:   add missing fields to end if True (leave out if False)
    -> path to output table
    """
    existing_fields = arcpy.ListFields(table)
    existing_field_names = [field.name for field in existing_fields]

    existing_mapping = arcpy.FieldMappings()
    existing_mapping.addTable(table)

    new_mapping = arcpy.FieldMappings()

    def add_mapping(field_name):
        mapping_index = existing_mapping.findFieldMapIndex(field_name)

        # required fields (OBJECTID, etc) will not be in existing mappings
        # they are added automatically
        if mapping_index != -1:
            field_map = existing_mapping.fieldMappings[mapping_index]
            new_mapping.addFieldMap(field_map)

    # add user fields from field_order
    for field_name in field_order:
        if field_name not in existing_field_names:
            raise Exception("Field: {0} not in {1}".format(field_name, table))

        add_mapping(field_name)

    # add missing fields at end
    if add_missing:
        missing_fields = [f for f in existing_field_names if f not in field_order]
        for field_name in missing_fields:
            add_mapping(field_name)

    # use merge with single input just to use new field_mappings
    arcpy.Merge_management(table, out_table, new_mapping)
    return out_table

ব্যবহার:

new_field_order = ["field2", "field3", "field1"]
reorder_fields(in_fc, out_fc, new_field_order)

দয়া করে দয়া করে আপনি এটির সরঞ্জাম সংলাপের মাধ্যমে এটি করতে যে সঠিক পদক্ষেপগুলি ব্যবহার করছেন তা তালিকাভুক্ত করতে সক্ষম হবেন? আমার এখন 10.3.1 পরীক্ষা থেকে দেখে মনে হচ্ছে ফিল্ড ম্যাপিং প্যানেলটি পুনরায় অর্ডার করার অনুমতি দেয় না। এছাড়াও, আমি মনে করি যে এই উত্তরটি আরও একটি প্রশ্নের ( gis.stackexchange.com/questions/32119/… ) এর উপরে আরও ভালভাবে স্থাপন করা হবে কারণ এইটি বিশেষভাবে মেক কোয়েরি টেবিল সরঞ্জামটির সাথে সম্পর্কিত।
পলিজিও

হ্যাঁ, আমি লক্ষ্য করেছি যে আপনার প্রশ্নের শিরোনামে। তবে এই পোস্টটি ভবিষ্যতের দর্শকদের পক্ষে যেতে পারে যাদের কেবল ক্ষেত্রগুলি পুনরায় অর্ডার করতে হবে, সবচেয়ে সহজ উপায়।
ফরিদ চেরাগি

ক্ষেত্রটি সরানো এবং ডায়লগে এটি পুনরায় যুক্ত করে পুনঃক্রম করা যায়। যদিও নিখুঁত পদ্ধতির নয়।
ফরিদ চেরাগি

1
আমি অন্য প্রশ্নের উপরে এই উত্তরটির পক্ষে ভোট দিয়েছি যেখানে আমি মনে করি এটি এখন সেরা উত্তর তবে এটি একটি "সদৃশ উত্তর", এবং এখানে জিজ্ঞাসা করা প্রশ্নের সরাসরি উত্তর নয়, আমি মনে করি না যে দ্বিতীয় ভোটটি উপযুক্ত হবে।
পলিজিও

@ ফরিদচের, কোডটি ভাগ করে নেওয়ার জন্য ধন্যবাদ। পাইথনে সত্যিই দ্রুত ক্ষেত্রগুলি পুনরায় অর্ডার করার দরকার হয়েছিল এবং এটি দুর্দান্ত কাজ করেছে। অসাধারণ.
অ্যালেক্স তেরেশেনকভ

1

এই টেবিলের বৈশিষ্ট্যের ক্রম পরিবর্তন করে এবং ক্ষেত্রগুলির ক্রম পুনরায় সাজানোর চেষ্টা করে আমি এই সহজ সমাধানটি আর্কম্যাপ 10,1 এ পেয়েছি ...

  1. আপনি সামগ্রীর সারণিতে যে বৈশিষ্ট্যটি পরিবর্তন করতে চান তাতে ডান ক্লিক করুন
  2. বৈশিষ্ট্য ক্লিক করুন
  3. ক্ষেত্র ট্যাব ক্লিক করুন
  4. একটি মাঠে ক্লিক করুন
  5. "উপরে সরান" বা "নীচে সরুন" তীরটি ক্লিক করুন
  6. ঠিক আছে

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


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

1

অপেক্ষাকৃত শক্তিশালী উপায়ে মডেল নির্মাতার মধ্যে এটি সম্পূর্ণরূপে করার আমার একটি পদ্ধতি রয়েছে। এটি সেট আপ করা একটু ক্লান্তিকর তবে কমপক্ষে এটি বৃহত্তর মডেল-নির্মাতা বিশ্লেষণের অংশ হিসাবে সন্নিবেশ করা যেতে পারে:

দ্রবীভূত সরঞ্জাম - দ্রবীভূত ক্ষেত্র হিসাবে অবজেক্টআইডি । পছন্দসই ক্রমে অবশিষ্ট (পরিসংখ্যান) ক্ষেত্রগুলি যুক্ত করুন এবং স্ট্যাটাসটিক প্রকারের ড্রপ ডাউনের বাইরে বিকল্পটি (প্রথম) বেছে নিন। নীচের উদাহরণে আমি ক্ষেত্রের তালিকায় সল্টমার্শ_প্যাক্ট আপ ফর্মটি সরিয়ে নিয়েছি fields নম্বরে

পুনরায় সাজানো ক্ষেত্রগুলির সাথে মডেল দ্রবীভূত করুন

আমি সাধারণত ফলাফলগুলি অনুলিপি করি তারপরে প্রতিটি ক্ষেত্রের নাম পরিবর্তন করে (অনুলিপিটি কার্যত অপ্রয়োজনীয় এবং পুনরায় নামটি সেখানেও করা যেতে পারে তবে এটি অদৃশ্য)

প্রতিটি ক্ষেত্রের নতুন নামকরণের জন্য অল্টার ফিল্ড সরঞ্জামটি ব্যবহার করুন

ক্ষেত্রের নামগুলি আসলটিতে ফিরিয়ে দিন (FIRST অপসারণ)

সমস্ত একসাথে কোনও মডেলটিতে এটির মতো দেখাচ্ছে:

পুনঃক্রম করার উদাহরণ মডেল

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