Example #1
0
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)
Example #2
0
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)
Example #3
0
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
Example #4
0
            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
Example #5
0
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