def flatten(): def get_vol_name(towerid, lines, codes): ret = '' for line in lines: if towerid in line['properties']['nodes']: c = line['properties']['voltage'] if codes['voltage_level'].has_key(c): ret = codes['voltage_level'][c] break return ret db_util.init_global() towers = db_util.mongo_find('kmgd', 'features', conditions={"properties.webgis_type":"point_tower", "geometry2d.type":"Point"}) lines = db_util.mongo_find('kmgd', 'network', conditions={"properties.webgis_type":"polyline_line"}) codes = db_util.mongo_find_one('kmgd', 'codes', {}) ll = [] #print(len(l)) for i in towers: o = {} tower_id = i['_id'] o['_id'] = ObjectId(tower_id) o['lng'] = i['geometry']['coordinates'][0] o['lat'] = i['geometry']['coordinates'][1] o['name'] = i['properties']['name'] o['voltage'] = get_vol_name(tower_id, lines, codes) ll.append(unicode(o).replace(' u', '')) s = '\n'.join(ll) with open(JSONFILE1, 'w') as f: f.write(s)
def test7(): def get_line_id(alist, code): return _.find(alist, lambda x: x['properties'].has_key('func_pos_code') and x['properties']['func_pos_code'] == code) # return _.matches_property('properties.func_pos_code', code)(alist) def get_point_id(alist, code): return _.find(alist, lambda x: x['properties'].has_key('function_pos_code') and x['properties']['func_pos_code'] == code) XLS_FILE = ur'D:\2014项目\配电网故障定位\yx_line.xls' book = xlrd.open_workbook(XLS_FILE) startrowidx = 1 toplines = set() for sheet in book.sheets(): for row in range(startrowidx, sheet.nrows): if len(sheet.cell_value(row, 6)): toplines.add(sheet.cell_value(row, 6)) # if True: # print (toplines) # return ret = [] idx = 0 features = mongo_find('kmgd', 'features', {'properties.webgis_type':'point_dn'}) for topline in toplines: polyline_dn = mongo_find_one('kmgd', 'network', {'properties.webgis_type':'polyline_dn', 'properties.func_pos_code':topline}) if polyline_dn: idx1 = 0 for feature in features: if feature.has_key('properties') and feature['properties'].has_key('line_func_code') and feature['properties']['line_func_code'] == topline: if not polyline_dn['properties'].has_key('nodes'): polyline_dn['properties']['nodes'] = [] if not feature['_id'] in polyline_dn['properties']['nodes']: polyline_dn['properties']['nodes'].append(feature['_id']) idx1 += 1 print('%d-%s nodes:%d' % (idx, polyline_dn['_id'], len(polyline_dn['properties']['nodes']))) idx += 1 ret.append(polyline_dn) # if idx > 10: # break mongo_action('kmgd', 'network', 'save', ret)
def build_line_geojson(): linename = u'永发I回线' line = db_util.mongo_find_one('ztgd', 'lines', {'properties.line_name':linename}) geojson = db_util.get_line_geojson('ztgd', line) return geojson
idx += 1 ret.append(polyline_dn) # if idx > 10: # break mongo_action('kmgd', 'network', 'save', ret) def test8(): ret = [] linesmap = {} with codecs.open(ur'd:\linesmap.json', 'r', 'utf-8-sig') as f: linesmap = json.loads(f.read()) for k in linesmap.keys(): for pair in linesmap[k]: start_func, end_func = pair[0], pair[1] start = mongo_find_one('kmgd', 'features', {'properties.function_pos_code':start_func}) end = mongo_find_one('kmgd', 'features', {'properties.function_pos_code':end_func}) if start and end: o = {'properties':{ 'start':start['_id'], 'end':end['_id'], 'webgis_type':'edge_dn', }} ret.append(o) mongo_action('kmgd', 'edges', 'save', ret) # print(json.dumps(ret, ensure_ascii=False, indent=4)) # print(len(ret)) def test9(): def get_parent(sheet, code): startrowidx = 1
def build_line_geojson(): linename = u'永发I回线' line = db_util.mongo_find_one('ztgd', 'lines', {'properties.line_name': linename}) geojson = db_util.get_line_geojson('ztgd', line) return geojson