Advertisement
sanodinnagval

OSM

Apr 5th, 2020
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.49 KB | None | 0 0
  1.  
  2.  
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from sklearn.linear_model import LinearRegression
  6.  
  7. import statistics
  8.  
  9. import overpy
  10.  
  11. from matplotlib.pyplot import (axes,axis,title,legend,figure,
  12.                                xlabel,ylabel,xticks,yticks,
  13.                                xscale,yscale,text,grid,
  14.                                plot,scatter,errorbar,hist,polar,
  15.                                contour,contourf,colorbar,clabel,
  16.                                imshow)
  17. from numpy import (linspace,logspace,zeros,ones,outer,meshgrid,
  18.                    pi,sin,cos,sqrt,exp)
  19. import math
  20.  
  21. import json
  22. import geocoder
  23. from geojson import Point, Feature, FeatureCollection, dump, MultiPoint, Polygon, LineString, MultiLineString
  24. #import os
  25. import requests
  26.  
  27. import networkx as nx
  28. import osmnx as ox
  29.  
  30. Dor = ['unclassified', 'service', 'residential', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'trunk', 'motorway', 'primary', 'motorway_link', 'trunk_link', 'primary_link', 'living_street']
  31.  
  32. def normal(XY ): # возвращает координаты ребер ближайшие от одной точки координат
  33.  
  34.    #import overpy
  35.  
  36.    #import numpy as np
  37.  
  38.    #import math
  39.  
  40.    # вычисляем квадрат(координаты углов) с центром точка координат
  41.    dist = 6 #0.5 #дистанция 0.5 км
  42.    mylon = XY[0]#30.380325 # долгота центра
  43.    mylat = XY[1]#59.80481 # широта
  44.    lon1 = mylon-dist/abs(math.cos(math.radians(mylat))*111.0) # 1 градус широты = 111 км
  45.    lon2 = mylon+dist/abs(math.cos(math.radians(mylat))*111.0)
  46.    lat1 = mylat-(dist/111.0)
  47.    lat2 = mylat+(dist/111.0)
  48.    #print(lon1, lat1)
  49.    #print(lon2, lat2)
  50.  
  51.    #прямоугольник по (south, west, north, east)широте и долготе, который может выглядеть
  52.    #юг, запад, север, восток
  53.    #      север
  54.    #восток      запад
  55.    #        юг
  56.  
  57.    #GET /api/0.6/map?bbox= слева , снизу , справа , сверху
  58.    #где:
  59.  
  60.    #left долгота левой (самой западной) стороны ограничительной рамки. longitude
  61.    #bottom широта нижней (самой южной) стороны ограничительной рамки. latitude
  62.    #right долгота правой (самой восточной) стороны ограничительной рамки.
  63.    #top широта верхней (самой северной) стороны ограничительной рамки.
  64.  
  65.    api = overpy.Overpass()
  66.  
  67.    #result1 = api.query("""
  68.    #(way["name"="Пушкинская улица"];>;);
  69.    #out skel;
  70.    #    """)
  71.  
  72.    # fetch all ways and nodes
  73.    #возвращает данные о ребрах   # way({},{},{},{}) ["highway"];
  74.    result = api.query("""
  75.       way({},{},{},{})["highway"];
  76.       (._;>;);
  77.       out body;
  78.       """.format( lat1,lon1, lat2, lon2))#format(lon1, lat1, lon2, lat2)
  79.  
  80.    #result2 = api.query("""way["name"="Gielgenstraße"](50.7,7.1,50.8,7.25);out;""")
  81.  
  82.    #print(result1.ways)
  83.    h = []
  84.    hh = []
  85.    lst = {}
  86.    ch = 0
  87.    for way in result.ways:
  88.       #key = way.tags.get("name")
  89.       #print(way.tags)
  90.       if way.tags.get("highway") in Dor  :
  91.          #if way.tags.get("highway") == 'footway' or way.tags.get("highway") == 'path' or way.tags.get("highway") == 'track': pass
  92.          #else:
  93.            key = way.tags.get("name")
  94.            #print(key)
  95.            #hh.append(h)
  96.            
  97.            #h.append([way.tags.get("name")])
  98.            #print("Name: %s" % way.tags.get("name", "n/a"))
  99.            #print("Name: %s" % way.tags.get("name"))
  100.            #print("  Highway: %s" % way.tags.get("highway", "n/a"))
  101.            #print("  Highway: %s" % way.tags.get("highway"))
  102.            #print("  Nodes:")
  103.            #print(way.nodes)
  104.            #'''
  105.            for node in way.nodes:
  106.                #print("Name: %s" % way.tags.get("name"))
  107.                #if 59.8048019 == node.lon: print("59.8048019")
  108.                #print("    Lat: %f, Lon: %f" % (node.lat, node.lon))
  109.                #h.append([str(node.lat), str(node.lon)])
  110.            #h.append([way.tags.get("name")])
  111.                lst.setdefault(str(key)+str(ch), []).append([ float(node.lon), float(node.lat)])
  112.            
  113.            
  114.            ch = ch + 1
  115.    h1 = h
  116.    #print(lst)
  117.    return lst
  118.  
  119. cache = (normal([30.3803247, 59.8048102]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement