আর্কম্যাপ / আর্কপাই ব্যবহার করে একাধিক স্তরগুলির সিম্বলজি পরিবর্তন করছেন?


10

আর্কম্যাপ বা আরকগ্যাটালগে একাধিক স্তরগুলির জন্য প্রতীক পরিবর্তন করার কোনও উপায় আছে কি? আমি এক সাথে একাধিক স্তরগুলির প্রতীকটি পরিবর্তন করতে চাই।


3
আপনি অ্যাপ্লিকেশন সিম্বোলজি ফ্রমলায়ার ব্যবহার করে সত্যিই একটি সহজ স্ক্রিপ্ট সরঞ্জাম তৈরি করতে পারেন । আপনাকে যা করতে হবে তা হ'ল স্তরগুলি ডায়ালগ বাক্সে টেনে আনুন drop
রায়

আপনি যদি একাধিক স্তরের লির ফাইল তৈরি করেন এবং এটিকে টেনে আনুন (বা এ্যাড ডেটা বোতাম থেকে এটি যোগ করুন) এটি সমস্ত চিহ্ন এবং লেবেল সেটিংস প্রয়োগ করবে যা লিরের মধ্যে সংরক্ষিত আছে। মনে রাখবেন আপনি এটি বিদ্যমান স্তরগুলিতে প্রয়োগ করেন না তবে এই পদ্ধতিটি দিয়ে আবার এনে দেন।
ব্র্যাড নেসম

@ ব্র্যাডনেসম- এই পরামর্শের জন্য ধন্যবাদ তবে আমি বিশেষত টিওসিতে থাকা একাধিক স্তরগুলির প্রতীকটি পরিবর্তনের বিষয়ে কথা বলছি। মূলত একটি (বিদ্যমান) স্তর থেকে টিওসি-তে অন্য অনেক (বিদ্যমান) স্তরগুলিতে একটি (প্রতীকী) স্তর থেকে প্রতীকের একটি "টেম্পলেট" প্রয়োগ করা হয়।
রায়ানকডাল্টন

2
এই ক্রিয়াকলাপটি কেন আর্কম্যাপে নির্মিত হয়নি তা আমাকে অবাক করে দেয় ...
জবাউমস

কেন কেবল সমস্ত স্তরগুলিকে একের সাথে একীভূত করা যায় না, এবং তারপরে সেই এক স্তরটির রঙ পরিবর্তন করা যায় না?
রবার্ট

উত্তর:


11

সম্পাদনা আপনি হাতের কাজটি সম্পূর্ণ করতে ESRI দ্বারা সরবরাহিত এই স্ক্রিপ্টটি ব্যবহার করতে পারেন (নীচের মত একই ধারণা):

import arcpy
arcpy.ApplySymbologyFromLayer_management("in_layer", "in_symbology_layer")

in_layer: যে স্তরটিতে প্রতীক প্রয়োগ করা হবে।
বৈশিষ্ট্য স্তর; রাস্টার স্তর; টিআইএন স্তর; নেটওয়ার্ক বিশ্লেষণ স্তর

in_symbology_layer: ইনপুট স্তরটিতে এই স্তরের প্রতীক প্রয়োগ করা হয়।
বৈশিষ্ট্য স্তর; রাস্টার স্তর; টিআইএন স্তর; নেটওয়ার্ক বিশ্লেষণ স্তর

অথবা এটি স্ট্যান্ডअ্যালোন স্ক্রিপ্টিং আকারে প্রসারিত করুন (আইডিএল ভাবেন):

import arcpy
from arcpy import env

# Set the current workspace
env.workspace = "path/to/workspace"

# Set layer to apply symbology to
inputLayers = ["in_layer_first.lyr","in_layer_second.lyr","in_layer_third.lyr"]

# Set layer that output symbology will be based on
symbologyLayer = "in_symbology_layer.lyr"

# Apply the symbology from the symbology layer to the input layer
for layer in inputLayers:
    arcpy.ApplySymbologyFromLayer_management (layer, symbologyLayer)

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


পূর্ববর্তী উত্তর

আপনি আপনার সামগ্রী / স্তর তালিকার সারণীতে বর্তমান স্তর থেকে একটি স্টাইল ব্যবহার করতে পারেন এবং এটি আপনার অন্যান্য স্তরগুলিতে প্রয়োগ করতে পারেন।

পরবর্তী প্রতিটি স্তরের জন্য (আপনার পছন্দসই স্টাইল স্তরটির নীচে)> ডান ক্লিক করুন> বৈশিষ্ট্য> প্রতীকতত্ত্ব> অন্যান্য স্তর থেকে আমদানি শৈলী


হাই মাইকেল, উত্তরের জন্য ধন্যবাদ তবে আমি একবারে একাধিক স্তরের জন্য এটি করার চেষ্টা করছিলাম।
রামকৃষ্ণ বিলকান্তি

রামকৃষ্ণ, আমি আপনার উত্তরটি সম্পাদনা করেছি এই আশায় যে আপনি আরকি দিয়ে আরও ভাল সমাধান খুঁজে পেতে পারেন।
মাইকেল মার্কিয়েটা

13

আমারও একই সমস্যা ছিল এবং আমি আরও একটি সমাধান খুঁজে পেলাম। এটি সহজ এবং বাস্তবিক বাস্তব, এটি এমনকি * .lyr ফাইল তৈরির প্রয়োজন নেই।

আরকজিআইএস মডেলবিল্ডার সম্পাদক বাক্সে, আমি নীচের প্রক্রিয়াটি ডিজাইন করেছি:

  1. ডেটা টাইপকে 'স্তর' এ সংজ্ঞায়িত করে একটি ভেরিয়েবল তৈরি করুন। এর বৈশিষ্ট্যগুলিতে "মানগুলির তালিকা" এবং "মডেল প্যারামিটার" হিসাবে সেট করা আছে। (Alচ্ছিক: একটি সহজ শনাক্তকরণের জন্য অবজেক্টটিকে "প্রতীকীকরণে স্তরগুলি" নামকরণ করুন)।
  2. ডেটা টাইপকে 'স্তর' এ সংজ্ঞায়িত করে একটি ভেরিয়েবল তৈরি করুন। এর বৈশিষ্ট্যগুলিতে "মডেল প্যারামিটার" হিসাবে সেট করা আছে। (Alচ্ছিক: এটিকে "সিম্বোলজি স্তর" নামকরণ করুন)।
  3. সাধারনত 'সি: \ প্রোগ্রাম ফাইলস \ আর্কজিআইএস \ ডেস্কটপ ১০.২ \ আর্কটুলবক্স \ টুলবক্স \ ডেটা ম্যানেজমেন্ট সরঞ্জামস.টিবিএক্স \ স্তর এবং সারণী দর্শন' এ, "স্তর থেকে প্রতীক প্রয়োগ করুন" সরঞ্জামটি যুক্ত করুন। (Alচ্ছিক: আউটপুট অবজেক্টটির নাম "সিম্বলাইজড লেয়ারস" করুন)।
  4. সরঞ্জামের বৈশিষ্ট্যগুলিতে 'স্তর থেকে প্রতীক প্রয়োগ করুন' পূর্বশর্ত হিসাবে পরীক্ষা করুন: "প্রতীকী স্তরগুলি" এবং "সিম্বোলজি স্তর"।
  5. ইনপুট স্তর হিসাবে সেট করে থাকা সরঞ্জামটিকে "প্রতীকীকরণের জন্য স্তরগুলি" সংযুক্ত করুন।
  6. ইনপুট লেয়ার হিসাবে সেট করে থাকা সরঞ্জামটিকে "সিম্বোলজি স্তর" সংযুক্ত করুন।
  7. মডেল সম্পাদক উইন্ডোটি সংরক্ষণ এবং বন্ধ করুন।
  8. মডেলটি খোলার পরে একটি টেবিল উপস্থিত হবে।
  9. মানচিত্র প্রকল্পের বিষয়বস্তু (টিওসি) এর সারণী থেকে প্রতীকী টেমপ্লেট হিসাবে ব্যবহৃত স্তরটিকে টেনে আনুন এবং এটিকে সংশ্লিষ্ট টেবিল ক্ষেত্রে ফেলে দিন। 'চেক মানগুলি' বোতামটি ক্লিক করুন।
  10. টিওসি'র একাধিক স্তর নির্বাচন করুন, এগুলি টেবিলের ক্ষেত্রে সংশ্লিষ্ট টেবিল ক্ষেত্রে টেনে আনুন। 'চেক মানগুলি' বোতামটি ক্লিক করুন।
  11. চালাও এটা.
  12. মানচিত্রের প্রদর্শনটি রিফ্রেশ করতে F5 ক্লিক করুন।

নোটস: আপনি একই সময়ে বিভিন্ন ধরণের জ্যামিতির স্তরগুলি ব্যবহার করলে সম্ভবত এটি কাজ করবে না। আপনি যদি একই নামের সাথে একবারে স্তরগুলি ব্যবহার করেন তবে এটি ভাল কাজ করে না। আমি ভেক্টরবিহীন স্তরগুলির সাথে চেষ্টা করিনি।

মডেল নির্মাতা পদক্ষেপ।

মডেল চালানোর সময় পদক্ষেপগুলি।

মডেলের অজগর থেকে রফতানি স্ক্রিপ্টটি হ'ল:

 # Import arcpy module
import arcpy

# Script arguments
Layers_to_symbolize = arcpy.GetParameterAsText(0)

Symbology_Layer = arcpy.GetParameterAsText(1)

# Local variables:
Symbolized_Layers = Layers_to_symbolize

# Process: Apply Symbology From Layer
arcpy.ApplySymbologyFromLayer_management(Layers_to_symbolize, Symbology_Layer)

1
কমপক্ষে আর্কজিআইএস 10.2-এর জন্য, step ধাপে "প্রতীকী স্তরটিকে সংকেত স্তর হিসাবে সেট করার জন্য" সংকেত "সিম্বোলজি স্তর" পড়তে হবে "
জবামস

আমি পাইথন ব্যবহার করেছিলাম এবং লুপের জন্য একটি দুর্দান্ত তৈরি করেছিলাম যা দৌড়াতে পারে, তবে এটি আমার প্রতীকতত্ত্বটিকে আপডেট করে না। আমি খুঁজে পেয়েছি যে আপনাকে প্রথমে .mdx ডকুমেন্টটি খুলতে হবে, ডিএফ সেট করতে হবে, প্রতীকটি আপডেট করতে হবে, এবং প্রতীকটি পরিবর্তন করতে হবে। আমি তখন উত্তর 2 দেখেছি, মডেল বিল্ডার ব্যবহার করে (এটি আমি মূলত আমার পাইথন স্ক্রিপ্টটি তৈরি করেছি)। এটি ছিল সহজ এবং নিবিড় সময়, তবে আমার কাছে এখন একটি সরঞ্জাম সংরক্ষণ করা হয়েছে যাতে আমি অন্যান্য ডেটাসেটের জন্য এটি করতে পারি।
হেইডি চার্চ

1
মডেল বিল্ডারে 'লেয়ার থেকে সিম্বোলজি' টুলটি না রেখে আপনি টুলবক্সে ডানদিকে ক্লিক করতে পারেন এবং ব্যাচ হিসাবে চালাতে পারেন
স্যার অ্যাডিলেড

8

অ্যারনের বার্তার ঠিক আগে, আমি আমার রায় তৈরির জন্য @ রয় থেকে প্রাপ্ত তথ্য ব্যবহার করেছি যা আমি আর্কটুলবক্স স্ক্রিপ্টে অন্তর্ভুক্ত করতে পারি। নিচে দেখ:

# Import modules
import arcpy

#Get the current Map Document
mxd = arcpy.mapping.MapDocument("CURRENT")

# Script arguments
Template_Layer = arcpy.GetParameterAsText(0)
LayerList = arcpy.GetParameterAsText(1)
Layers_to_Symbolize = LayerList.split(";")

# Process: Apply Symbology From Layer
for UpdateLayer in Layers_to_Symbolize:
    arcpy.AddMessage("Updating: " + UpdateLayer)
    arcpy.ApplySymbologyFromLayer_management(UpdateLayer,Template_Layer)

# Refresh the Table of Contents to reflect the change
arcpy.RefreshTOC()

#Delete the MXD from memory
del mxd

আমি এই ধারণাটি সরঞ্জামদণ্ডে 10.1 পাইথন অ্যাড-ইন এর একটি সম্ভাব্য সরঞ্জাম হিসাবে দেখতে পেয়েছি।


4

নীচে লিঙ্কযুক্ত টুলবক্সটি একবারে একসাথে একাধিক স্তর প্রতীকটি সক্ষম করার জন্য আমি খুব সহজ উপায় নিয়ে এসেছি। আপনি এই টুলবক্সটি যুক্ত করার পরে, একক প্রতীকতত্ত্ব স্তরটি টেনে আনুন এবং তারপরে চিহ্নগুলি প্রয়োগ করতে চান এমন সমস্ত স্তরগুলি টানুন এবং ফেলে দিন targe জিও-টাইপ (লাইন, পয়েন্ট, পলিস) মেলা সংক্রান্ত সাধারণ নিয়মগুলি সম্ভবত এখানে প্রয়োগ হয়। একবার টুলটি চালানোর পরে, এটি কিছুই ঘটেনি হিসাবে প্রদর্শিত হবে। আপনার প্রদর্শনকে রিফ্রেশ করুন (এফ 5) - প্রদর্শনটি ম্যাচিং প্রতীকগুলির সাথে আপডেট হবে। এর বৈশিষ্ট্যগুলি দেখতে একটি স্তরটিতে ক্লিক করুন এবং "ওকে" ক্লিক করুন এবং টোসি প্রতীক আপডেট হবে।

সরঞ্জামবক্সের জন্য জিপ ফাইলটি এখানে ডাউনলোড করুন।

এখানে স্ক্রিপ্টটি যদি এটি সহজ হয়:

import arcpy

# Script arguments
Target_Layers = arcpy.GetParameterAsText(0)
if Target_Layers == '#' or not Target_Layers:
Target_Layers = "LayersToBeChanged" # provide a default value if unspecified

Symbology_Layer = arcpy.GetParameterAsText(1)
if Symbology_Layer == '#' or not Symbology_Layer:
Symbology_Layer = "SymbologyLayer" # provide a default value if unspecified

# Local variables:
Output_Symbology = Symbology_Layer

# Process: Apply Symbology From Layer (3)
arcpy.ApplySymbologyFromLayer_management(Target_Layers, Symbology_Layer)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.