Enfocaría esto como dos problemas separados. Primero, los segmentos de línea individuales deben disolverse en componentes conectados; simplemente disolverlos todos en un valor predeterminado no funcionará. Este es un problema de teoría de grafos, y lo que queremos son los "subgraficos de componentes conectados".
Estoy seguro de que hay una manera de hackear esto con el analista de redes, pero mi preferencia sería tratarlo como el problema gráfico que es; no reinvente la rueda, solo instale el excelente módulo Python Networkx e intente lo siguiente:
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)
El segundo paso sería disolver y seleccionar por ubicación como lo sugiere dmahr
He usado una técnica similar muchas veces con éxito. La teoría de gráficos es asombrosa y resuelve muchos problemas SIG, y Networkx es una gran herramienta para implementar esto en Python.