def geneKML_no_leaf(self, col_Tokyo_tree, col_map, col_Tokyo_tree_node, file_name=r'Tokyo.kmz'): fkml = open(file_name, 'w') paint = ITDKkml(fkml) paint.setting_line(line_color='cc00ff00', line_width=0.8) paint.setting_point( icon_path= 'http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png', point_scale=0.4, point_color='ff00ffff') paint.head() paint.setting_line(line_color='cc0000ff', line_width=1.7) paint.setting_point( icon_path= 'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png', point_scale=1, point_color='cc0000ff') for edge in col_Tokyo_tree.find(): start_edge = col_map.find_one({'node_id': edge['start']}) end_edge = col_map.find_one({'node_id': edge['end']}) if start_edge['in'] and end_edge['in']: s = col_Tokyo_tree_node.find_one({'node_id': edge['start']}) e = col_Tokyo_tree_node.find_one({'node_id': edge['end']}) #这种方法会使叶子节点父节点多次绘制 if s['connect'] == [] or e['connect'] == []: paint.draw_edge(start=start_edge['new'], end=end_edge['new']) else: paint.draw_orig_edge(start=start_edge['new'], end=end_edge['new']) for node in col_map.find(): if node['in']: docu = col_Tokyo_tree_node.find_one( {'node_id': node['node_id']}) if len(docu['connect']) < 5: paint.draw_point2(longitude=node['new']['longitude'], latitude=node['new']['latitude']) else: paint.draw_orig_point(longitude=node['new']['longitude'], latitude=node['new']['latitude']) pass paint.tail() fkml.close()
}, { 'longitude': 1.5, 'latitude': 2 }] edge = [[1, 4], [2, 4], [3, 4], [4, 6], [5, 6], [6, 7], [6, 8], [7, 9], [7, 10], [10, 11]] point_original = [[0.2, 0.7], [0.5, 1], [0.7, 0.2], [0.8, 0.6], [1.3, 0.3], [1.4, 0.9], [1.1, 1.1], [1.6, 0.4], [1.7, 0.7], [1.6, 1.2], [2, 1.1]] #原始位置图 file_name = 'original.kml' fkml = open(file_name, 'w') paint = ITDKkml(fkml) paint.setting_line(line_color='cc00ff00', line_width=0.8) paint.setting_point( icon_path='http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png', point_scale=0.4, point_color='ff00ffff') paint.head() polygon_point_num = len(polygon) i = 0 while i < polygon_point_num - 1: paint.draw_edge(start=polygon[i], end=polygon[i + 1]) i = i + 1 paint.draw_edge(start=polygon[polygon_point_num - 1], end=polygon[0]) for node in point_original: paint.draw_orig_point(longitude=node[0], latitude=node[1]) for e in edge: paint.draw_edge(start={'longitude':point_original[e[0]-1][0],'latitude':point_original[e[0]-1][1]},\ end={'longitude':point_original[e[1]-1][0],'latitude':point_original[e[1]-1][1]}) paint.tail() fkml.close()
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()
f = open(filename_KML, 'w') paint = ITDKkml(f) #paint.setting_line(line_hight_start=40000,line_hight_end=40000,line_width=5) #paint.setting_point(icon_path='juanjo_Router.png',point_hight=80000,point_scale=0.5) paint.head() for edge in col_edge_leaf.find(): paint.draw_edge(start=edge['start'], end=edge['end']) paint.tail() f.close() col_point_leaf = client['教育科研网']['叶子节点'] filename_KML = './教育科研网_大学里面的叶子点.kml' f = open(filename_KML, 'w') paint = ITDKkml(f) #paint.setting_line(line_hight_start=40000,line_hight_end=40000,line_width=5) paint.setting_point(point_scale=0.3) paint.head() for node in col_point_leaf.find(): paint.draw_orig_point(longitude=node['longitude'], latitude=node['latitude']) paint.tail() f.close() col_point_leaf = client['教育科研网']['大学里面的点'] filename_KML = './教育科研网_大学里面点.kml' f = open(filename_KML, 'w') paint = ITDKkml(f) #paint.setting_line(line_hight_start=40000,line_hight_end=40000,line_width=5) paint.setting_point(point_scale=0.3) paint.head() for node in col_point_leaf.find():