ऐसा करने का एक तरीका परत को क्लोन करना है, परिभाषा प्रश्नों का उपयोग करना और उन्हें अलग से लेबल करना, पहली परत के लिए ऊपरी-बाएँ केवल लेबल स्थिति का उपयोग करना और दूसरे के लिए निचला-बाएँ।
लेयर की अभिव्यक्ति का उपयोग करके लेयर में टाइप करें और इसे पॉप्युलेट करें:
aList=[]
def FirstOrOthers(shp):
global aList
key='%s%s' %(round(shp.firstPoint.X,3),round(shp.firstPoint.Y,3))
if key in aList:
return 2
aList.append(key)
return 1
इसे कॉल करें:
FirstOrOthers( !Shape! )
सामग्री की तालिका में परत की एक प्रति बनाएं, परिभाषा क्वेरी THEFIELD = 1 लागू करें।
मूल परत के लिए परिभाषा क्वेरी THEFIELD = 2 लागू करें।
अलग-अलग निश्चित लेबल प्लेसमेंट लागू करें
मूल समाधान के लिए टिप्पणियों पर आधारित अद्यतन:
फ़ील्ड COORD जोड़ें और इसका उपयोग करके पॉप्युलेट करें
'%s %s' %(round( !Shape!.firstPoint.X,2),round( !Shape!.firstPoint.Y,2))
लेबल के लिए पहले और अंतिम का उपयोग करके इस क्षेत्र को सारांशित करें। COORD फ़ील्ड का उपयोग करके इस तालिका को मूल में शामिल करें। उन रिकॉर्ड्स का चयन करें जहां <> अंतिम और एक नए क्षेत्र में पहले और अंतिम लेबल का उपयोग कर रहा है
'%s\n%s' %(!Sum_Output_4.First_MUID!, !Sum_Output_4.Last_MUID!)
2 'विभिन्न परतों' और उन्हें लेबल करने के लिए खेतों को परिभाषित करने के लिए Count_COORD और THEFIELD का उपयोग करें:
#Hornbydd समाधान से प्रेरित # 2 अपडेट करें:
import arcpy
def FindLabel ([FID],[MUID]):
f,m=int([FID]),[MUID]
mxd = arcpy.mapping.MapDocument("CURRENT")
dFids={}
dLabels={}
lyr = arcpy.mapping.ListLayers(mxd,"centres")[0]
with arcpy.da.SearchCursor(lyr,["FID","SHAPE@","MUID"]) as cursor:
for row in cursor:
FD,shp,LABEL=row
XY='%s %s' %(round(shp.firstPoint.X,2),round( shp.firstPoint.Y,2))
if f == FD:
aKey=XY
try:
L=dFids[XY]
L+=[FD]
dFids[XY]=L
L=dLabels[XY]
L=L+'\n'+LABEL
dLabels[XY]=L
except:
dFids[XY]=[FD]
dLabels[XY]=LABEL
Labels=dLabels[aKey]
Fids=dFids[aKey]
if f == Fids[0]:
return Labels
return ""
UPDATE नवंबर 2016, उम्मीद से आखिरी।
2000 डुप्लिकेट पर जांच की गई अभिव्यक्ति के नीचे, आकर्षण की तरह काम करता है:
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd,"centres")[0]
dFids={}
dLabels={}
fidKeys={}
with arcpy.da.SearchCursor(lyr,["FID","SHAPE@","MUID"]) as cursor:
for FD,shp,LABEL in cursor:
XY='%s %s' %(round(shp.firstPoint.X,2),round( shp.firstPoint.Y,2))
fidKeys[FD]=XY
if XY in dLabels:
dLabels[XY]+=('\n'+LABEL)
dFids[XY]+=[FD]
else:
dLabels[XY]=LABEL
dFids[XY]=[FD]
def FindLabel ([FID]):
f=int([FID])
aKey=fidKeys[f]
Fids=dFids[aKey]
if f == Fids[0]:
return dLabels[aKey]
return "