Eu abordaria isso como dois problemas separados. Primeiro, os segmentos de linha individuais devem ser dissolvidos em componentes conectados; apenas dissolver todos eles em um valor padrão não funcionará. Este é um problema da teoria dos grafos, e o que queremos são os "subgráficos de componentes conectados".
Tenho certeza de que há uma maneira de invadir isso com o analista de rede, mas minha preferência seria tratá-lo como o problema do gráfico; não reinvente a roda, basta instalar o excelente módulo python Networkx e tente o seguinte:
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)
O segundo passo seria dissolver e selecionar por local, conforme sugerido por dmahr
Eu usei uma técnica semelhante muitas vezes com sucesso. A teoria dos grafos é impressionante e resolve muitos problemas de SIG, e o Networkx é uma ótima ferramenta para implementar isso em python.