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()
[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() #开始处理 point_new = [[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]] center_x = 0 center_y = 0
col_second_node = client['itdk_level_new']['shankou_txt'] file_name = './file/link_shankou.kml' fkml = open(file_name, 'w') paint = ITDKkml(fkml) ggg = TokyoTopo() paint.setting_line(line_color='ffff3ef3', line_width=1.2, line_hight_start=0, line_hight_end=80000, altitudeMode='relativeToGround') paint.head() db_name = ['shankou'] for name in db_name: db = client[name] col_tree_node = db['tree_node'] col_map = db['map_logi2loca'] for node in col_tree_node.find(): if len(node['connect']) > 5: docu = col_map.find_one({'node_id': node['node_id']}) if docu['in']: min_dis = 10000 min_point = {} for second_node in col_second_node.find(): dis = ggg.get_distance(start=docu['new'], end=second_node['new']) if dis < min_dis: min_dis = dis min_point = second_node['new'] paint.draw_edge(start=docu['new'], end=min_point) paint.tail() fkml.close()
'华中科大': [114.2734, 30.5801], '中科大': [117.2808, 31.8639] } point_edge = [[104.058986, 30.676235], [120.161519, 30.295558], [121.468973, 31.232382], [116.391464, 39.903152], [116.391464, 39.903152], [116.391464, 39.903152], [116.391464, 39.903152], [113.295827, 23.116548], [106.547819, 29.565937], [114.304197, 30.577806], [117.270667, 31.863063]] 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(icon_path='juanjo_Router.png',point_hight=80000,point_scale=0.5) paint.head() i = 0 for node in point: print(point[node]) paint.draw_orig_point(longitude=point[node][0], latitude=point[node][1]) paint.draw_edge(start={ 'longitude': point[node][0], 'latitude': point[node][1] }, end={ 'longitude': point_edge[i][0], 'latitude': point_edge[i][1] }) i += 1 paint.tail() f.close()
#-*- coding:utf-8 -*- import pymongo from Tokyo_logistic_topo.kml_tool import ITDKkml client = pymongo.MongoClient() col_edge_degree = client['教育科研网']['edge_short'] #边 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(icon_path='juanjo_Router.png',point_hight=80000,point_scale=0.5) paint.head() for edge in col_edge_degree.find(): paint.draw_edge(start=edge['start'], end=edge['end']) paint.tail() f.close()
#-*- coding:utf-8 -*- from Tokyo_logistic_topo.kml_tool import ITDKkml polygon_list = [] with open('坐标.txt','r') as f: edge_list = [] content=f.readline() while content: if content == '\n': polygon_list.append(edge_list) edge_list = [] else: coor = content.replace('\n','').split('\t') print(coor) point = {'longitude':coor[1],'latitude':coor[0]} edge_list.append(point) content = f.readline() polygon_list.append(edge_list) print(polygon_list[0]) f=open('polygon.kml','w') instance = ITDKkml(f) instance.setting_line(line_color='641400FF',line_width=4) instance.head() for polygon in polygon_list: lenth = len(polygon) i = 0 while i<(lenth-1): instance.draw_edge(start=polygon[i],end=polygon[i+1]) i = i+1 instance.draw_edge(start=polygon[-1],end=polygon[0]) instance.tail()
for edge in col_edge_degree.find(): if iii.get_distance(start=edge['start'], end=edge['end']) < 400: flag1 = col_second.find_one({ 'longitude': edge['start']['longitude'], 'latitude': edge['start']['latitude'] }) flag2 = col_second.find_one({ 'longitude': edge['end']['longitude'], 'latitude': edge['end']['latitude'] }) if flag1 and flag2: if flag1['flag'] == flag2['flag']: pass else: paint.draw_edge(start=flag1['new'], end=flag2['new']) elif flag1 and not flag2: paint.draw_edge(start=flag1['new'], end=edge['end']) elif not flag1 and flag2: paint.draw_edge(start=edge['start'], end=flag2['new']) else: paint.draw_edge(start=edge['start'], end=edge['end']) point1 = {'longitude': 127.715229, 'latitude': 26.290680} point2 = {'longitude': 130.761069, 'latitude': 33.521182} paint.draw_edge(start=point1, end=point2) point1 = {'longitude': 127.715229, 'latitude': 26.290680} point2 = {'longitude': 135.6005387779446, 'latitude': 34.62006409535766} paint.draw_edge(start=point1, end=point2) paint.tail() f.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()
from Tokyo_logistic_topo.kml_tool import ITDKkml point1 = {'longitude': 136.9025, 'latitude': 35.1598} point2 = {'longitude': 127.675, 'latitude': 26.185} section = 5 lo_section = (point1['longitude'] - point2['longitude']) / section la_section = (point1['latitude'] - point2['latitude']) / section print(lo_section, la_section) tem1 = {} tem2 = {} tem1['longitude'] = point1['longitude'] tem1['latitude'] = point1['latitude'] tem2['longitude'] = point1['longitude'] - lo_section tem2['latitude'] = point1['latitude'] - la_section filename_KML = './file/1234.kml' f = open(filename_KML, 'w') paint = ITDKkml(f) paint.head() i = 1 while i < 5: print(tem1, tem2) paint.draw_edge(start=tem1, end=tem2) i += 1 tem1['longitude'] = tem2['longitude'] tem1['latitude'] = tem2['latitude'] tem2['longitude'] = point1['longitude'] - lo_section * i tem2['latitude'] = point1['latitude'] - la_section * i paint.draw_edge(start=tem1, end=point2) paint.tail() f.close()