75 lines
1.6 KiB
Python
75 lines
1.6 KiB
Python
|
#!/usr/bin/python3
|
||
|
|
||
|
import requests
|
||
|
import json
|
||
|
|
||
|
query={
|
||
|
"columns": [ # no clue what any of this is, so here it stays
|
||
|
{
|
||
|
"data": None,
|
||
|
"name": "",
|
||
|
},
|
||
|
{
|
||
|
"name": "sortId",
|
||
|
"s": True,
|
||
|
},
|
||
|
{
|
||
|
"name": "region",
|
||
|
"s": True,
|
||
|
},
|
||
|
{
|
||
|
"name": "county",
|
||
|
"s": True,
|
||
|
},
|
||
|
{
|
||
|
"name": "roadway",
|
||
|
"s": True,
|
||
|
},
|
||
|
{
|
||
|
"name": "description1",
|
||
|
},
|
||
|
{
|
||
|
"data": 6,
|
||
|
"name": "",
|
||
|
},
|
||
|
],
|
||
|
"start": 0,
|
||
|
"length": 100,
|
||
|
}
|
||
|
|
||
|
cameras = []
|
||
|
available_cameras = 999_999 # lots
|
||
|
|
||
|
while len(cameras) < available_cameras:
|
||
|
res = requests.get("https://511wi.gov/List/GetData/Cameras", {
|
||
|
"query": json.dumps(query),
|
||
|
"lang": "en",
|
||
|
})
|
||
|
res.raise_for_status()
|
||
|
res = res.json()
|
||
|
available_cameras = res['recordsTotal']
|
||
|
for c in res['data']:
|
||
|
cameras.append({
|
||
|
"type": "Feature",
|
||
|
"geometry": {
|
||
|
"type": "Point",
|
||
|
"coordinates": [c['longitude'], c['latitude']], # yes, [lon, lat] since it's [x, y]
|
||
|
},
|
||
|
"properties": {
|
||
|
'address': c['displayName'],
|
||
|
'website': c['videoUrl'],
|
||
|
'originalData': c,
|
||
|
},
|
||
|
})
|
||
|
query['start'] += 100
|
||
|
|
||
|
geojson = {
|
||
|
"type": "FeatureCollection",
|
||
|
"features": cameras,
|
||
|
}
|
||
|
|
||
|
with open("data.geojson", "w") as f:
|
||
|
f.write(json.dumps(geojson))
|
||
|
|
||
|
print(f"{len(cameras)} locations found")
|