यहां एक आर्कोबजेक्ट्स दृष्टिकोण है, जो इस उदाहरण के आधार पर, एक परत पर सभी जोड़ों को सम्मिलित करने और उनके गंतव्य और स्रोत तालिका के नाम और प्राथमिक और विदेशी कुंजी को सूचीबद्ध करने के लिए है:
ILayer
एक या एक से अधिक जुड़ने वालों का संदर्भ लें
- कास्ट
ILayer
करने के लिएIDisplayTable
- के लिए
IDisplayTable.DisplayTable
संपत्ति कास्ट करेंIRelQueryTable
- जबकि वर्तमान तालिका एक है
IRelQueryTable
:
RelQueryTable
'S DestinationTable
और SourceTable
गुणों का निरीक्षण करें
- संपत्ति के गुणों
OriginPrimaryKey
और OriginForeignKey
गुणों का निरीक्षण करें IRelQueryTable.RelationshipClass
।
- वर्तमान के लिए वर्तमान तालिका सेट
RelQueryTable
की SourceTable
संपत्ति
यह पायथन लिपि ( कॉम्पीप्स और इस हेल्पर मॉड्यूल का उपयोग करते हुए ) सभी जोड़ से गुजरती है , नवीनतम से जल्द से जल्द, और गंतव्य और स्रोत तालिका के नाम प्रिंट करें, प्राथमिक कुंजी और प्रत्येक जुड़ने के लिए मूल विदेशी कुंजी:
from ESRICOMHelpers import * # helper module from https://gis.stackexchange.com/a/5082/753
esriArcMapUI = GetESRIModule("esriArcMapUI")
esriCarto = GetESRIModule("esriCarto")
esriGeoDatabase = GetESRIModule("esriGeoDatabase")
def listJoins(table):
while CType(table, esriGeoDatabase.IRelQueryTable):
relQueryTable = CType(table, esriGeoDatabase.IRelQueryTable)
destTable = relQueryTable.DestinationTable
sourceTable = relQueryTable.SourceTable
destDataset = CType(destTable, esriGeoDatabase.IDataset)
sourceDataset = CType(sourceTable, esriGeoDatabase.IDataset)
relClass = relQueryTable.RelationshipClass
print destDataset.Name, sourceDataset.Name, relClass.OriginPrimaryKey, relClass.OriginForeignKey
table = sourceTable
if __name__ == "__main__":
#app = GetCurrentApp() # Use if run in-process
app = GetApp("ArcMap") # Use if run in a standalone script
mxd = CType(app.Document, esriArcMapUI.IMxDocument)
# Gets the first layer in the active data frame
map = mxd.FocusMap
lyr = map.Layer[0]
# Need to get the "display table" to access the joins
displayTable = CType(lyr, esriCarto.IDisplayTable).DisplayTable
# List the layer's joined tables
listJoins(displayTable)
उदाहरण आउटपुट, तीन जोड़ों के साथ एक स्रोत परत दिया गया:
join_table_3 master_fc_join_table_1_join_table_2 JOIN_ID_3 master_fc.MASTER_ID
join_table_2 master_fc_join_table_1 JOIN_ID_2 master_fc.MASTER_ID
join_table_1 master_fc JOIN_ID_1 MASTER_ID
अधिक जानकारी के लिए, देखें कि मैं पायथन से ArcObjects का उपयोग कैसे करूं?