আরকিপি ব্যবহার করে নির্বাচিত বৈশিষ্ট্যটি জুম করতে চান?


19

আরকজিআইএস ডেস্কটপ 10-এ আরকিপি মডিউলটি ব্যবহার করে কোনও নির্বাচিত বৈশিষ্ট্যটির সীমাতে জুম করার কোনও উপায় আছে কি?

উত্তর:



16

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

import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()

বেশিরভাগ স্ক্রিপ্টিং কার্যকারিতা যা ডকুমেন্ট (এমএক্সডি) পরিচালনা, প্রদর্শন, বা আউটপুট পরিচালনা করে আরকিপাই ম্যাপিং মডিউলটি ব্যবহার করতে চলেছে। help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/…
mindless.panda

3
df.zoomToSelectedFeatures()আমি এটি কীভাবে করব +1 । আপনি df.scale = yourscalehereপাশাপাশি স্কেল সেট করতে ইচ্ছুক হতে পারে ।
নাথানাস

10

আপনি ইতিমধ্যে surmised হিসাবে,

df.zoomToSelectedFeatures()

মানচিত্রের ফ্রেমের সমস্ত নির্বাচিত বৈশিষ্ট্যগুলিতে ডেটা ফ্রেমের প্রসারকে পরিবর্তন করবে । আপনি যদি কোনও নির্দিষ্ট স্তরের জন্য কেবল একটি নির্বাচনের সেটটিতে জুম করতে আগ্রহী হন তবে ব্যবহার করুন lyr.getSelectedExtent()। আমি মানচিত্র স্কেল ফ্যাক্টরটিও সামঞ্জস্য করি যাতে আমার কোডটি এরকম দেখতে লাগে:

df.extent = lyr.getSelectedExtent()
df.scale *= 1.5
arcpy.RefreshActiveView()

অথবা এটা:

df.extent = lyr.getSelectedExtent()
df.scale = 12000 # 1:1,000
arcpy.RefreshActiveView()

1

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

extent_object = initial_layer.getExtent()

def track_extent(extent_object,layer):

    l_properties = layer.getExtent()

    # each of these essentially says that if this layer is further out to one direction than the current setting, change the setting
    if l_properties.XMin < extent_object.XMin:
        extent_object.XMin = l_properties.XMin
    if l_properties.YMin < extent_object.YMin:
        extent_object.YMin = l_properties.YMin
    if l_properties.XMax > extent_object.XMax:
        extent_object.XMax = l_properties.XMax
    if l_properties.YMax > extent_object.YMax:
        extent_object.YMax = l_properties.YMax
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.