Bunu yapmanın bir yolu, katmanı klonlamak, tanım sorgularını kullanmak ve bunları ayrı ayrı etiketlemek, birinci katman için yalnızca sol üst ve ikinci saniye için sol alt etiket konumunu kullanmaktır.
Katmana THEFIELD türü tamsayı ekleyin ve aşağıdaki ifadeyi kullanarak doldurun:
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
Arayan:
FirstOrOthers( !Shape! )
İçerik tablosunda katmanın bir kopyasını oluşturun, tanım sorgusunu uygulayın THEFIELD = 1.
Orijinal katman için tanım sorgusu THEFIELD = 2 uygula.
Farklı sabit etiket yerleşimleri uygulama
Orijinal çözüm yorumlarına göre GÜNCELLEME:
COORD alanı ekleyin ve şunu kullanarak doldurun:
'%s %s' %(round( !Shape!.firstPoint.X,2),round( !Shape!.firstPoint.Y,2))
Etiket için ilk ve sonuncuyu kullanarak bu alanı özetleyin. COORD alanını kullanarak bu tabloyu orijinal haline geri getirin. Firların <> son olduğu kayıtları seçin ve kullanarak yeni bir alandaki ilk ve son etiketi birleştirin
'%s\n%s' %(!Sum_Output_4.First_MUID!, !Sum_Output_4.Last_MUID!)
Count_COORD ve THEFIELD öğelerini kullanarak bunları etiketlemek için 2 farklı katman ve alan tanımlayın:
@Hornbydd çözümünden esinlenen 2. güncelleme:
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 ""
GÜNCELLEME Kasım 2016, umarım sürer.
2000 kopyalarında test edilen ifadenin altındaki çekicilik gibi çalışır:
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 "