ডেটা চালিত পৃষ্ঠাগুলি ব্যবহার করে টেবিল তৈরি করার জন্য পাইথন স্ক্রিপ্ট


11

আমি একটি নির্দিষ্ট ডেটা চালিত পৃষ্ঠার মধ্যে অবস্থিত বৈশিষ্ট্যগুলির একটি সারণী (একটি ডিবিএফ ভিত্তিক) প্রদর্শন করতে কিছু পাইথন স্ক্রিপ্ট রূপান্তর করার চেষ্টা করছি। এখনও অবধি, আমার কাছে স্ক্রিপ্টটি সাফল্যের সাথে নির্দিষ্ট টেবিলটিতে মানচিত্রটি রিফ্রেশ করতে সক্ষম হয়েছে, তবে এটি সারণীটি আপডেট করে না।

আমার কাছে এটি তিনটি পাঠ্য বাক্স হিসাবে সেট আপ আছে যা ব্যবহারকারী যখন আর্টটুলবক্স থেকে স্ক্রিপ্ট চালায় তখন তিনটি নির্দিষ্ট ক্ষেত্রের সাথে আপডেট করা উচিত।

আমার টেবিলটি আপডেট হচ্ছে না কেন সে সম্পর্কে কোনও পরামর্শ?

import arcpy, sys, os

#Reference current MXD
mxd = arcpy.mapping.MapDocument("current")

#Get input parameter
Name = arcpy.GetParameterAsText(0)

#Reference  data frames
mapatlasDF = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
locatorDF = arcpy.mapping.ListDataFrames(mxd, "Locator Map")[0]

#Reference appropriate layers
atlasLyr = arcpy.mapping.ListLayers(mxd, "PinalCreekMapAtlas_HalfMile", mapatlasDF)[0]
locatorLyr = arcpy.mapping.ListLayers(mxd, "Locator Map", locatorDF)[0]
atlasoutlineLyr = arcpy.mapping.ListLayers(mxd, "Map Atlas Outline", locatorDF)[0]

#Reference layout elements by calling ListLayoutElements 
for elm in arcpy.mapping.ListLayoutElements(mxd):
  if elm.name =="Table1Column1": tab1Col1Txt = elm
  if elm.name =="Table1Column2": tab1Col2Txt = elm
  if elm.name =="Table1Column3": tab1Col3Txt = elm

#Reference the Data Driven Page object
ddp = mxd.dataDrivenPages

#Set the current page to be the one selected in the script tool
arcpy.AddMessage(Name)

pageID = mxd.dataDrivenPages.getPageIDFromName(str(Name))
mxd.dataDrivenPages.currentPageID = pageID

#Set the appropriate definition queries
atlasLyr.definitionQuery = "Name = '" + Name +  "'"
locatorLyr.definitionQuery = "Name = '" + Name +  "'"
atlasoutlineLyr.definitionQuery = "Name <> '" + Name +  "'"

#Update Sheet Index data frame
arcpy.SelectLayerByAttribute_management(locatorLyr, "NEW_SELECTION", "\"Name\" = '" + Name + "'")
locatorDF.panToExtent(locatorLyr.getSelectedExtent())

#Reference Affected Parcels table and select appropriate records
parcelTable = arcpy.mapping.ListTableViews(mxd, "AffectedParcels")[0]

#Build query and create search cursor to loop through rows
parcelFieldValue = "Page " + Name
queryExp = "\"MapPage\" = '" + parcelFieldValue + "'"  #e.g., "MapPage" = 'Page 01'
parcelRows = arcpy.SearchCursor(parcelTable.dataSource, queryExp)

#Clear all table text values
tab1Col1Txt.text = " "; tab1Col2Txt.text = " "; tab1Col3Txt.text = " "

#iteate through each row, update appropiate text
count = 0
for row in parcelRows:
  if count < 30: #Table1 - static position
    tab1Col1Txt.text = tab1Col1Txt.text + row.getValue("OwnerName") +"\n"
    tab1Col2Txt.text = tab1Col2Txt.text + row.getValue("APN") + "\n"
    tab1Col3Txt.text = tab1Col3Txt.text + row.getValue("LengthTrail") + "\n"
  if count ==30:  
    arcpy.AddMessage("Table Overflow") #The code could be reworked to show the last 90 records
  count = count + 1

arcpy.RefreshActiveView()
arcpy.AddMessage("PROCESS COMPLETED")

আমি আপনার স্ক্রিপ্টটিকে আরও সাধারণ উদাহরণে কেটে দেওয়ার চেষ্টা করে শুরু করব। জিনিসগুলি কি ListLayoutElementsটাইপ করে ফেরত দেওয়া হচ্ছে TextElement? আপনি অন্য কোনও কোড ছাড়াই স্ক্রিপ্টে একটি একক পাঠ্য মান আপডেট করতে পারবেন?
স্কু

যেমন স্কু বলেছে, উপাদানগুলি কি আসলেই ফিরিয়ে দেওয়া হচ্ছে? আমি প্রতিটি ক্ষেত্রে স্ট্যান্ডমেন্টে আরকিপি.এডএডমেসেজ ("সারণি 1 কলাম 1") যুক্ত করব এবং তারপরে <30 অঞ্চলগুলিতে যদি arcpy.AddMessage (tab1Col1Txt.text + tab1Col2Txt.text + tab1Col3Txt.text) যুক্ত করব। সমস্যাটি কোথায় ঘটছে সে সম্পর্কে এটি আরও ভাল ধারণা দেবে।
Eseglem

কোড থেকে কোথায় পরিষ্কার হয় না কোথায় ট্যাব 1 কল 1 টিএসটিস্ট, ট্যাব 1 কল 2 টেক্সট এবং ট্যাব 1 কল 3 টেক্সট অবজেক্টগুলি সংজ্ঞায়িত করা হয়েছে। প্রথম যাচাই করার জন্য কি row.getValue অংশ দ্বারা ফিরে পরার চেষ্টা
Matej

উত্তর:


2

সম্ভবত এই উদাহরণগুলি সাহায্য করতে পারে:

ডায়নামিক টেবিল এবং গ্রাফ 10.1_v1 সহ ডিডিপি

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

ডায়নামিক গ্রাফিক টেবিলগুলির সাথে আরকিপি.ম্যাপিং ম্যাপ বুক

এই প্রকল্পটিতে গতিশীল গ্রাফিক টেবিল অন্তর্ভুক্ত একটি মানচিত্রের সিরিজ তৈরি করতে ডেটাচালিত পৃষ্ঠাগুলি এবং আরকিপি.ম্যাপিং অন্তর্ভুক্ত করা হয়েছে।


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