# E:\code\connmod\branches\ch\data\net2010c\network_trunc_lc.txt "2010\truncated\edges - trunc lc" import sys, string, os, arcgisscripting, csv, networkx as NX, cm # Create the Geoprocessor object GP = cm.gp_init() log = '%s/log.txt' % os.path.dirname(sys.argv[0]) cm.log_init(log, 'debug') # Script arguments... network_txt = sys.argv[1] edges_lyr = sys.argv[2] # read in network cm.log('Reading input network') G = cm.read_network(network_txt) edges_shp = G.config[('shapefile', 'edges')] lc_txt = G.config[('leastcostpaths', 'txt')] ## debug ##edges_lyr = 'edges_lyr'; GP.MakeFeatureLayer(edges_shp, edges_lyr) ##GP.SelectLayerByAttribute_management(edges_lyr, "NEW_SELECTION", "\"EdgeID\" IN (6693)") # get selected edges cur = GP.SearchCursor(edges_lyr) row = cur.Next() e_selected = [] while row: e_selected.append(row.GetValue('EdgeID')) row = cur.Next() cm.log('Selected %d edges: %s' %
GP = cm.gp_init() # G: = \\nicknet.env.duke.edu\network\research\lel\GraphGroup # G:\chapel_hill\network\full_lc\network_lc.txt # easy_install -U networkx # got networkx-0.35.1 # E:\code\connmod\branches\ch\data\net2010\network_euc_na.txt # get arguments in_network_txt = sys.argv[1] # initialize logging log = '%s/log_centrality.txt' % os.path.dirname(in_network_txt) cm.log_init(log) cm.log('Reading network configuration') F = cm.read_network(in_network_txt) # read in full network nodes_shp = F.config[('shapefile', 'nodes')] lcpaths_txt = F.config[('leastcostpaths', 'txt')] G = NX.Graph() # create fresh graph cm.log('Reading least-cost paths into fresh graph with only centroids') rdr = csv.reader(open(lcpaths_txt, 'r')) headers = rdr.next() for row in rdr: c1, c2, w = row[0:3] G.add_edge(int(c1), int(c2), weight=int(w)) cm.log( 'Calculating centrality metrics (only works with NetworkX 0.35.1 and higher)' ) btwn = NX.centrality.betweenness_centrality(G,
in_network_txt = sys.argv[1] out_network_fld = sys.argv[2] out_network_txt = sys.argv[3] # setup vars for out_network config out_network = os.path.splitext(out_network_txt)[0] out_edgelist = out_network + '_edgelist.txt' out_nodeattr = out_network + '_nodeattr.csv' out_edgeattr = out_network + '_edgeattr.csv' # logging log = '%s/log.txt' % os.path.dirname(out_network) cm.log_init(log, 'debug') cm.log('Reading input network') G = cm.read_network(in_network_txt) # PROBLEM: patches sharing same node, ie edge #Identity_analysis full\nodes patches D:\code\connmod\branches\ch\data\network\full_2\nodes_identity.shp ALL "" KEEP_RELATIONSHIPS cm.log('Removing existing internal nodes (%d) and edges (%d)' % (len(G.nbytype['internal']), len(G.ebytype['internal']))) H = G.copy() H.delete_edges_from(G.ebytype['internal']) H.delete_nodes_from(G.nbytype['internal']) cm.copy_g_attr(G, H) cm.log('Adding edges from centroids (%d) to perimeter nodes (%d)' % (len(G.nbytype['centroid']), len(G.nbytype['perimeter']))) centroids = G.nbytype['centroid'] patch_centroids = {}