Saya akan mendekati ini sebagai dua masalah terpisah. Pertama, segmen garis individual harus dilarutkan ke dalam komponen yang terhubung; melarutkan semuanya pada nilai default tidak akan berfungsi. Ini adalah masalah teori grafik, dan yang kita inginkan adalah "sub komponen yang terhubung".
Saya yakin ada cara untuk meretas ini dengan analis jaringan, tetapi preferensi saya adalah memperlakukannya seperti masalah grafiknya; jangan reinvent the wheel, cukup instal modul Networkx python yang sangat baik dan coba yang berikut ini:
from networkx import Graph, connected_components
G = Graph()
# iterate through your feature class and build a graph
for row in featureclass:
# we need a unique representation for each edges start and end points
start = row.shape.getpart()[0]
end = row.shape.getpart()[-1]
G.add_edge(start,end,oid=row.oid)
# get the connected components
Components = connected_components(G)
# we now have a "list of lists" containing edges grouped by their component
# there's several ways to apply this to the feature class...eg
for i, connected in enumerate(Components):
# assign id = i to the group by writing it to a field for all members
# of that component (the row oid is an attribute of the edge)
Langkah kedua adalah membubarkan dan memilih berdasarkan lokasi seperti yang disarankan oleh dmahr
Saya telah menggunakan teknik serupa berkali-kali berhasil. Teori grafik mengagumkan dan menyelesaikan banyak masalah SIG, dan Networkx adalah alat yang hebat untuk mengimplementasikan ini dalam python.