-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShortestPath.py
More file actions
66 lines (61 loc) · 2.76 KB
/
Copy pathShortestPath.py
File metadata and controls
66 lines (61 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import json, random
from qgis.core import QgsVectorLayer, QgsProject, QgsApplication, QgsSimpleMarkerSymbolLayerBase
from urllib.request import urlopen
def shortest_path(lon1, lat1, lon2, lat2, uphill, downhill, avoidCurbs, streetAvoidance):
url = 'http://incremental-alpha.westus.cloudapp.azure.com/api/v1/routing/shortest_path/custom.json?&lon1='+str(lon1)+'&lat1='+str(lat1)+'&lon2='+str(lon2)+'&lat2='+str(lat2)+'&uphill='+str(uphill)+'&downhill='+str(downhill)+'&avoidCurbs='+str(avoidCurbs)+'&streetAvoidance='+str(streetAvoidance)+'×tamp=0'
downloaded_file_prefix = 'c:/temp/temp'
downloaded_file = downloaded_file_prefix+str(random.randrange(100000))+'.json'
downloaded_file2 = downloaded_file_prefix+str(random.randrange(100000))+'.json'
downloaded_file3 = downloaded_file_prefix+str(random.randrange(100000))+'.json'
layer_name = 'Shortest Path'
layer_name2 = 'Origin'
layer_name3 = 'Destination'
r = urlopen(url)
data = json.loads(r.read())
if not "routes" in data:
print('No results were returned from AccessMap: ' + str(data))
return
print("Cost: " + str(data["routes"][0]["total_cost"]))
print("Distance: " + str(data["routes"][0]["distance"]))
with open(downloaded_file, 'w', encoding='utf-8') as f:
json.dump(data["routes"][0]["segments"], f)
with open(downloaded_file2, 'w', encoding='utf-8') as f:
json.dump(data["origin"], f)
with open(downloaded_file3, 'w', encoding='utf-8') as f:
json.dump(data["destination"], f)
#Add imported data into QGIS
layer = QgsVectorLayer(downloaded_file, layer_name, "ogr")
layer.renderer().symbol().setWidth(1.5)
#layer.renderer().symbol().setColor(QColor.fromRgb(255, 0, 0))
layer.triggerRepaint()
QgsProject.instance().addMapLayer(layer)
#Add imported data into QGIS
layer = QgsVectorLayer(downloaded_file2, layer_name2, "ogr")
layer.renderer().symbol().symbolLayer(0).setSize(6)
layer.renderer().symbol().symbolLayer(0).setShape(QgsSimpleMarkerSymbolLayerBase.Star)
layer.triggerRepaint()
QgsProject.instance().addMapLayer(layer)
#Add imported data into QGIS
layer = QgsVectorLayer(downloaded_file3, layer_name3, "ogr")
layer.renderer().symbol().symbolLayer(0).setSize(4)
layer.renderer().symbol().symbolLayer(0).setShape(QgsSimpleMarkerSymbolLayerBase.Diamond)
layer.triggerRepaint()
QgsProject.instance().addMapLayer(layer)
QgsApplication.processEvents()
shortest_path(lon1=-122.33382843985366,
lat1=47.60721229035356,
lon2=-122.32559266931791,
lat2=47.6090337327238,
uphill=0.1,
downhill=0.1,
avoidCurbs=1,
streetAvoidance=1)