def gene_KML(self, filename_KML, col_txt, rec_range, filename_dire, col_edge_degree): node_list = [] node_num = 0 with open(filename_dire, 'r') as f: content = f.readline() node_num = int(content.split(' ')[0].split(':')[1]) print(node_num) num = node_num content = f.readline() while (content and node_num > 0): ss = content.replace('\n', '').split(' ') node_list.append(ss) content = f.readline() node_num = node_num - 1 point_longitude = 0.0 max_longitude = float(node_list[0][1]) min_longitude = float(node_list[0][1]) max_latitude = float(node_list[0][2]) min_latitude = float(node_list[0][2]) for i in node_list: if float(i[1]) < min_longitude: min_longitude = float(i[1]) if float(i[1]) > max_longitude: max_longitude = float(i[1]) if float(i[2]) < min_latitude: min_latitude = float(i[2]) if float(i[2]) > max_latitude: max_latitude = float(i[2]) point_longitude = (max_longitude + min_longitude) / 2 point_latitude = (max_latitude + min_latitude) / 2 orignal_breath_longitude = rec_range['right'] - rec_range['left'] orignal_breath_latitude = rec_range['top'] - rec_range['bottom'] longitude_percent = (max_longitude - min_longitude) / orignal_breath_longitude latitude_percent = (max_latitude - min_latitude) / orignal_breath_latitude bias_longitude = (rec_range['right'] + rec_range['left']) / 2 - point_longitude bias_latitude = (rec_range['top'] + rec_range['bottom']) / 2 - point_latitude for node in node_list: longitude = (float(node[1]) - point_longitude) / longitude_percent + point_longitude latitude = (float(node[2]) - point_latitude) / latitude_percent + point_latitude col_txt.update_one({'node_id': int(node[0])}, { '$set': { 'new': { 'longitude': longitude + bias_longitude, 'latitude': latitude + bias_latitude } } }) #生成KML f = open(filename_KML, 'w') paint = ITDKkml(f) paint.setting_line(line_color='ffb40014', line_hight_start=80000, line_hight_end=80000, altitudeMode='relativeToGround', line_width=3) paint.setting_point(icon_path='juanjo_Router.png', point_hight=80000, point_scale=0.5) paint.head() for edge in col_edge_degree.find(): start_new = col_txt.find_one({ 'longitude': edge['start']['longitude'], 'latitude': edge['start']['latitude'] }) end_new = col_txt.find_one({ 'longitude': edge['end']['longitude'], 'latitude': edge['end']['latitude'] }) paint.draw_edge(start=start_new['new'], end=end_new['new']) for node in col_txt.find(): paint.draw_point2(longitude=node['new']['longitude'], latitude=node['new']['latitude']) paint.tail() f.close()
# col_point_second.drop() # for edge in col_edge_degree.find(): # node1 = edge['start'] # flag = col_second.find_one({'longitude':node1['longitude'],'latitude':node1['latitude']}) # if flag: # node1=flag['new'] # flag2 = col_point_second.find_one({'longitude':node1['longitude'],'latitude':node1['latitude']}) # if not flag2: # col_point_second.insert_one(node1) # # node2 = edge['end'] # flag = col_second.find_one({'longitude':node2['longitude'],'latitude':node2['latitude']}) # if flag: # node2=flag['new'] # flag2 = col_point_second.find_one({'longitude':node2['longitude'],'latitude':node2['latitude']}) # if not flag2: # col_point_second.insert_one(node2) #画图,dian iii = TokyoTopo() filename_KML = './file/日本整个第二层的点.kml' f = open(filename_KML, 'w') paint = ITDKkml(f) paint.setting_point(icon_path='juanjo_Router.png', point_hight=40000, point_scale=0.3, point_color='') paint.head() for node in col_point_second.find(): paint.draw_point2(longitude=node['longitude'], latitude=node['latitude']) paint.tail() f.close()