· 6 years ago · Apr 05, 2020, 05:28 PM
1import overpy
2
3def normal(XY ): # возвращает координаты ребер ближайшие от одной точки координат
4
5 #import overpy
6
7 #import numpy as np
8
9 #import math
10
11 # вычисляем квадрат(координаты углов) с центром точка координат
12 dist = 6 #0.5 #дистанция 0.5 км
13 mylon = XY[0]#30.380325 # долгота центра
14 mylat = XY[1]#59.80481 # широта
15 lon1 = mylon-dist/abs(math.cos(math.radians(mylat))*111.0) # 1 градус широты = 111 км
16 lon2 = mylon+dist/abs(math.cos(math.radians(mylat))*111.0)
17 lat1 = mylat-(dist/111.0)
18 lat2 = mylat+(dist/111.0)
19 #print(lon1, lat1)
20 #print(lon2, lat2)
21
22 #прямоугольник по (south, west, north, east)широте и долготе, который может выглядеть
23 #юг, запад, север, восток
24 # север
25 #восток запад
26 # юг
27
28 #GET /api/0.6/map?bbox= слева , снизу , справа , сверху
29 #где:
30
31 #left долгота левой (самой западной) стороны ограничительной рамки. longitude
32 #bottom широта нижней (самой южной) стороны ограничительной рамки. latitude
33 #right долгота правой (самой восточной) стороны ограничительной рамки.
34 #top широта верхней (самой северной) стороны ограничительной рамки.
35
36 api = overpy.Overpass()
37
38 #result1 = api.query("""
39 #(way["name"="Пушкинская улица"];>;);
40 #out skel;
41 # """)
42
43 # fetch all ways and nodes
44 #возвращает данные о ребрах # way({},{},{},{}) ["highway"];
45 result = api.query("""
46 way({},{},{},{})["highway"];
47 (._;>;);
48 out body;
49 """.format( lat1,lon1, lat2, lon2))#format(lon1, lat1, lon2, lat2)
50
51 #result2 = api.query("""way["name"="Gielgenstraße"](50.7,7.1,50.8,7.25);out;""")
52
53 #print(result1.ways)
54 h = []
55 hh = []
56 lst = {}
57 ch = 0
58 for way in result.ways:
59 #key = way.tags.get("name")
60 #print(way.tags)
61 if way.tags.get("highway") in Dor :
62 #if way.tags.get("highway") == 'footway' or way.tags.get("highway") == 'path' or way.tags.get("highway") == 'track': pass
63 #else:
64 key = way.tags.get("name")
65 #print(key)
66 #hh.append(h)
67
68 #h.append([way.tags.get("name")])
69 #print("Name: %s" % way.tags.get("name", "n/a"))
70 #print("Name: %s" % way.tags.get("name"))
71 #print(" Highway: %s" % way.tags.get("highway", "n/a"))
72 #print(" Highway: %s" % way.tags.get("highway"))
73 #print(" Nodes:")
74 #print(way.nodes)
75 #'''
76 for node in way.nodes:
77 #print("Name: %s" % way.tags.get("name"))
78 #if 59.8048019 == node.lon: print("59.8048019")
79 #print(" Lat: %f, Lon: %f" % (node.lat, node.lon))
80 #h.append([str(node.lat), str(node.lon)])
81 #h.append([way.tags.get("name")])
82 lst.setdefault(str(key)+str(ch), []).append([ float(node.lon), float(node.lat)])
83
84
85 ch = ch + 1
86 h1 = h
87 #print(lst)
88 return lst
89
90cache = (normal([30.3803247, 59.8048102]))