Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy as np
- from sklearn.linear_model import LinearRegression
- import statistics
- import overpy
- from matplotlib.pyplot import (axes,axis,title,legend,figure,
- xlabel,ylabel,xticks,yticks,
- xscale,yscale,text,grid,
- plot,scatter,errorbar,hist,polar,
- contour,contourf,colorbar,clabel,
- imshow)
- from numpy import (linspace,logspace,zeros,ones,outer,meshgrid,
- pi,sin,cos,sqrt,exp)
- import math
- import json
- import geocoder
- from geojson import Point, Feature, FeatureCollection, dump, MultiPoint, Polygon, LineString, MultiLineString
- #import os
- import requests
- import networkx as nx
- import osmnx as ox
- Dor = ['unclassified', 'service', 'residential', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'trunk', 'motorway', 'primary', 'motorway_link', 'trunk_link', 'primary_link', 'living_street']
- def normal(XY ): # возвращает координаты ребер ближайшие от одной точки координат
- #import overpy
- #import numpy as np
- #import math
- # вычисляем квадрат(координаты углов) с центром точка координат
- dist = 6 #0.5 #дистанция 0.5 км
- mylon = XY[0]#30.380325 # долгота центра
- mylat = XY[1]#59.80481 # широта
- lon1 = mylon-dist/abs(math.cos(math.radians(mylat))*111.0) # 1 градус широты = 111 км
- lon2 = mylon+dist/abs(math.cos(math.radians(mylat))*111.0)
- lat1 = mylat-(dist/111.0)
- lat2 = mylat+(dist/111.0)
- #print(lon1, lat1)
- #print(lon2, lat2)
- #прямоугольник по (south, west, north, east)широте и долготе, который может выглядеть
- #юг, запад, север, восток
- # север
- #восток запад
- # юг
- #GET /api/0.6/map?bbox= слева , снизу , справа , сверху
- #где:
- #left долгота левой (самой западной) стороны ограничительной рамки. longitude
- #bottom широта нижней (самой южной) стороны ограничительной рамки. latitude
- #right долгота правой (самой восточной) стороны ограничительной рамки.
- #top широта верхней (самой северной) стороны ограничительной рамки.
- api = overpy.Overpass()
- #result1 = api.query("""
- #(way["name"="Пушкинская улица"];>;);
- #out skel;
- # """)
- # fetch all ways and nodes
- #возвращает данные о ребрах # way({},{},{},{}) ["highway"];
- result = api.query("""
- way({},{},{},{})["highway"];
- (._;>;);
- out body;
- """.format( lat1,lon1, lat2, lon2))#format(lon1, lat1, lon2, lat2)
- #result2 = api.query("""way["name"="Gielgenstraße"](50.7,7.1,50.8,7.25);out;""")
- #print(result1.ways)
- h = []
- hh = []
- lst = {}
- ch = 0
- for way in result.ways:
- #key = way.tags.get("name")
- #print(way.tags)
- if way.tags.get("highway") in Dor :
- #if way.tags.get("highway") == 'footway' or way.tags.get("highway") == 'path' or way.tags.get("highway") == 'track': pass
- #else:
- key = way.tags.get("name")
- #print(key)
- #hh.append(h)
- #h.append([way.tags.get("name")])
- #print("Name: %s" % way.tags.get("name", "n/a"))
- #print("Name: %s" % way.tags.get("name"))
- #print(" Highway: %s" % way.tags.get("highway", "n/a"))
- #print(" Highway: %s" % way.tags.get("highway"))
- #print(" Nodes:")
- #print(way.nodes)
- #'''
- for node in way.nodes:
- #print("Name: %s" % way.tags.get("name"))
- #if 59.8048019 == node.lon: print("59.8048019")
- #print(" Lat: %f, Lon: %f" % (node.lat, node.lon))
- #h.append([str(node.lat), str(node.lon)])
- #h.append([way.tags.get("name")])
- lst.setdefault(str(key)+str(ch), []).append([ float(node.lon), float(node.lat)])
- ch = ch + 1
- h1 = h
- #print(lst)
- return lst
- cache = (normal([30.3803247, 59.8048102]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement