├── .gitignore ├── LICENSE ├── README.md ├── assets ├── airplane-plot.png ├── airplane.png ├── boat.png ├── bug-on-cam.png ├── bus.png ├── camera.png ├── car.png ├── ccs-styled-plots.png ├── chicago-bus.png ├── chicago-buses.png ├── cosmo-cam.png ├── environments.png ├── favicon.png ├── google-maps.png ├── heroku-error.png ├── map-plots.png ├── map-with-cameras.png ├── supervision-tn.png ├── train.png └── vdot.png ├── mk14.py ├── requirements.txt ├── static ├── assets │ ├── airplane-plot.png │ ├── airplane.png │ ├── boat.png │ ├── bug-on-cam.png │ ├── bus.png │ ├── camera.png │ ├── car.png │ ├── ccs-styled-plots.png │ ├── chicago-bus.png │ ├── chicago-buses.png │ ├── cosmo-cam.png │ ├── environments.png │ ├── favicon.png │ ├── google-maps.png │ ├── heroku-error.png │ ├── map-plots.png │ ├── map-with-cameras.png │ ├── supervision-tn.png │ ├── train.png │ └── vdot.png ├── cameras │ ├── alberta.json │ ├── london.geojson │ ├── maryland.json │ ├── nothern-ireland.geojson │ ├── toronto.json │ └── virginia.geojson ├── css │ ├── all.css │ └── leaflet.awesome-markers.css └── js │ ├── leaflet.awesome-markers.js │ └── supervision.js └── templates └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | resources 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | MIT License 3 | 4 | Copyright (c) 2022 Blue Cosmo 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | [ccs]: https://cosmodiumcs.com 5 | [youtube]: https://www.youtube.com/c/CosmodiumCS 6 | [supervision]: https://marks.cosmodiumcs.com/marks/mk14-supervision/ 7 | 8 | 9 | # SuperVision 10 | > Blue Cosmo | 07/02/22 11 | 12 | --- 13 | 14 | 15 | ``` 16 | .::::::. ... :::::::::::::. .,:::::: :::::::.. 17 | ;;;` ` ;; ;;; `;;;```.;;;;;;;'''' ;;;;``;;;; 18 | '[==/[[[[,[[' [[[ `]]nnn]]' [[cccc [[[,/[[[' 19 | ''' $$$ $$$ $$$"" $$"""" $$$$$$c 20 | 88b dP88 .d888 888o 888oo,__ 888b "88bo, 21 | "YMmMY" "YmmMMMM"" YMMMb """"YUMMMMMMM "W" 22 | :~?J555J?~: 23 | ::: .::.::: .::::::. ::: .~YG&@B5J?J5B@&GY~. :::. :::. 24 | ';;, ,;;;' ;;;;;;` ` ;;; :JB@@@B~.~?J7~.~B@@@BJ: `;;;;, `;;; 25 | \[[ .[[/ [[['[==/[[[[,[[[ .5&@@@@&: P@@G^PP :&@@@@&5 [[[[[. '[[ 26 | Y$c.$$" $$$ ''' $$$$ .5&@@@@&: P@@@&@P :&@@@@&5. $$$ "Y$c$$ 27 | Y88P 888 88b dP888 :JB@@@B~.~?YJ~.~B@@@BJ: 888 Y88 28 | MP MMM "YMmMY" MMM .~YB&@B5J?J5B@&BY~. MMM YM 29 | :~?J555J?~: 30 | ``` 31 | 32 | 33 | ## Disclaimer: 34 | SuperVision serves to aid security research and become a reminder of the level of government surveillance that exists today. SuperVision got all its shit from a lot of googling, I did this in my spare time, I can only imagine the level of automated surveillance the government is capable of. 35 | 36 | Also note that Supervision is rendering a lot of data, so **it may take a fair bit of time to render the map** [no more than 20-30 secs]. 37 | 38 | 39 | ## Overview: 40 | [SuperVision][supervision] is an open source *"Google Maps"* for hackers developed by [CosmodiumCS][ccs]. SuperVision's map centralizes public data and maps it. Allowing you to see traffic cameras, transportation, and other data systems **in live time**. It is developed with a type of hacking called "Public Data Hacking" [PDH]. This is basically the process in which you exploit data thats publically available. Whats cool about PDH is that its completely legal, because the data we exploit is already publically available. So by the magical powers of Python, JavaScript, and several markup languages, we generate a powerful map that is ready to use whenever you need! 41 | 42 | --- 43 | 44 | 45 |  46 | 47 | --- 48 | 49 | 50 | **How It Works:** 51 | 52 | SuperVision works by using Python to generate Keyhole Markup Language [KML] files. KML files are used to map geographic data. There is a [KML](https://github.com/CosmodiumCS/SuperVision/tree/main/kml) directory that contains all of the generated KML files used in this project. **These files CAN be imported into Google Earth** and you will be able to view all of the markers showing the cameras and other public data that SuperVision has mapped. But Google Earth has two problems... 53 | 54 | 1. Google Earth is **NOT** open source 55 | 2. Google Earth only maps data statically 56 | 57 | SuperVision's open source magic allows us to do so much more than what propriatary software limited us to. SuperVision has not only mapped thing like cameras, but it can track live data like the locations of public transportation. We can fully customize the tracking of public data to the fullest extent possible [with a lot of debugging of course XP]. 58 | 59 | --- 60 | 61 | 62 | [](https://www.youtube.com/watch?v=knagAWTn7FQ "SuperVision : The Hacker Google Mapper") 63 | 64 | --- 65 | 66 | Watch the first devlog for SuperVision now!! It will give you an update on what the project is and how it was built in the best way possible :D 67 | 68 | 69 | ## Resources: 70 | - [SuperVision][supervision] 71 | - [YouTube Video](https://youtu.be/knagAWTn7FQ) 72 | - [YouTube Channel][youtube] 73 | - [Website][ccs] 74 | 75 | 76 | ## Requirements: 77 | - A Modern Web Browser 78 | - i.e [Chrome, Firefox, Opera, Safari] 79 | - An Internet Connection 80 | 81 | 82 | ## Local Hosting 83 | **SuperVision does have a website [here][supervision]** but if you wish to run it locally you can clone the repository and run the [main.py](https://github.com/CosmodiumCS/SuperVision/blob/main/main.py) file. You then can navigate to `127.0.0.1:5000` in your browser to view the map. 84 | 85 | 86 | ## What Can SuperVision Track? 87 | 88 | ### Cameras 89 | 90 | --- 91 | 92 | 93 |  94 | 95 | --- 96 | 97 | SuperVision is capable of plotting traffic, security, and other cameras on its map. The above is a photo of a traffic camera showing developer [Blue Cosmo][ccs] at an intersection. This shows the vast amount of possible surveillance with a tool as simple as this. 98 | 99 | ### Vehicles 100 | 101 | --- 102 | 103 | 104 |  105 | 106 | --- 107 | 108 | SuperVision is capable of plotting live data. Above we can see the current positions of buses in chicago. Every 10 seconds SuperVision will update any data that it has plotted live for a more consistent flow of where certain live data is on the map. 109 | 110 | ### Aircraft 111 | 112 | --- 113 | 114 | 115 |  116 | 117 | --- 118 | 119 | SuperVision plots the positions of aircraft in live time. Every 10 seconds, SuperVision updates their positions and displays their country of origin in a popup [when hovered]. 120 | 121 | 122 | ## Data Policy 123 | - SuperVision **only** asks for your device's approximate location. If you say yes it will display the available data closest to you. If you say no, it will display all the full map. 124 | - SuperVision **does not** collect any user data...read the code 125 | 126 | 127 | ## Credits 128 | The original concept comes from an old friend of mine, Shepherd. He had the idea to map specific camera locations to kml files and map them on Google Earth. I joined the project and discovered methods of automatically mapping data instead of doing such a thing manually. But after a falling out I took the project to the next step by creating a dynamic mapping environment outside of Google Earth. This has allowed me to map not only all the cameras simultaneously, but also to map live data in real time. 129 | 130 | --- 131 | 132 | 133 | © 2022 by Cosmodium CyberSecurity, LLC 134 | -------------------------------------------------------------------------------- /assets/airplane-plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/airplane-plot.png -------------------------------------------------------------------------------- /assets/airplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/airplane.png -------------------------------------------------------------------------------- /assets/boat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/boat.png -------------------------------------------------------------------------------- /assets/bug-on-cam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/bug-on-cam.png -------------------------------------------------------------------------------- /assets/bus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/bus.png -------------------------------------------------------------------------------- /assets/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/camera.png -------------------------------------------------------------------------------- /assets/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/car.png -------------------------------------------------------------------------------- /assets/ccs-styled-plots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/ccs-styled-plots.png -------------------------------------------------------------------------------- /assets/chicago-bus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/chicago-bus.png -------------------------------------------------------------------------------- /assets/chicago-buses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/chicago-buses.png -------------------------------------------------------------------------------- /assets/cosmo-cam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/cosmo-cam.png -------------------------------------------------------------------------------- /assets/environments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/environments.png -------------------------------------------------------------------------------- /assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/favicon.png -------------------------------------------------------------------------------- /assets/google-maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/google-maps.png -------------------------------------------------------------------------------- /assets/heroku-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/heroku-error.png -------------------------------------------------------------------------------- /assets/map-plots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/map-plots.png -------------------------------------------------------------------------------- /assets/map-with-cameras.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/map-with-cameras.png -------------------------------------------------------------------------------- /assets/supervision-tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/supervision-tn.png -------------------------------------------------------------------------------- /assets/train.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/train.png -------------------------------------------------------------------------------- /assets/vdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/assets/vdot.png -------------------------------------------------------------------------------- /mk14.py: -------------------------------------------------------------------------------- 1 | #!/bin/python3 2 | # MK14-SuperVision 3 | # created by : bluecosmo 4 | 5 | # imports 6 | import os 7 | import random 8 | import requests 9 | import xmltodict 10 | from dotenv import load_dotenv 11 | from flask import Flask, render_template, jsonify 12 | 13 | # environment variables 14 | load_dotenv() 15 | CTA_KEY = os.getenv('CTA_KEY') 16 | 17 | app = Flask(__name__, static_folder='static', static_url_path='/mk14/static') 18 | app.config['APPLICATION_ROOT'] = '/mk14' 19 | 20 | def list_files(directory): 21 | files = [] 22 | for filename in os.listdir(directory): 23 | path = os.path.join(directory, filename) 24 | if os.path.isfile(path): 25 | files.append(filename) 26 | return files 27 | 28 | # main page 29 | @app.route('/mk14/') 30 | def mk14(): 31 | camera_list = list_files('/var/www/html/mk14-supervision/static/cameras') 32 | return render_template('index.html', camera_locations=camera_list) 33 | 34 | @app.route('/mk14/api/transit') 35 | def transit(): 36 | 37 | # randomly generated cameras for testing / debugging 38 | cameras = [ 39 | {'lat': 51.5074 + random.uniform(-0.1, 0.1), 'lon': -0.1278 + random.uniform(-0.1, 0.1), 'popup': 'Camera 1'}, 40 | {'lat': 51.5074 + random.uniform(-0.1, 0.1), 'lon': -0.1278 + random.uniform(-0.1, 0.1), 'popup': 'Camera 2'}, 41 | ] 42 | return jsonify(cameras) 43 | 44 | # cta_routes_url = f'http://www.ctabustracker.com/bustime/api/v2/getroutes?key={CTA_KEY}' 45 | # cta_bus_url = f'http://ctabustracker.com/bustime/api/v2/getvehicles?key={CTA_KEY}&rt=' 46 | # vehicles_info = [] 47 | 48 | # try: 49 | # response = requests.get(cta_routes_url) 50 | # response.raise_for_status() # Raise an exception for bad responses 51 | 52 | # xml_dict = xmltodict.parse(response.content) 53 | # rt_numbers = [str(route['rt']) for route in xml_dict.get('bustime-response', {}).get('route', [])] 54 | 55 | # for route in rt_numbers: 56 | # bus_url = cta_bus_url + str(route) 57 | # cta_bus = requests.get(bus_url) 58 | # cta_bus_json = xmltodict.parse(cta_bus.content) 59 | 60 | # # works up to here :) 61 | # vehicles = cta_bus_json.get('bustime-response', {}).get('vehicle', []) 62 | # if isinstance(vehicles, dict): 63 | # vehicles = [vehicles] 64 | 65 | # for vehicle in vehicles: 66 | # vid = int(vehicle.get('vid')) 67 | # lat = float(vehicle.get('lat')) 68 | # lon = float(vehicle.get('lon')) 69 | # vehicles_info.append({'vid': vid, 'lat': lat, 'lon': lon}) 70 | 71 | # return jsonify(vehicles_info) 72 | 73 | # except requests.exceptions.RequestException as e: 74 | # # Handle request exceptions (e.g., connection error, timeout) 75 | # return jsonify({'error': str(e)}), 500 # Return an error response with HTTP status code 500 76 | 77 | # except xmltodict.expat.ExpatError as e: 78 | # # Handle XML parsing errors 79 | # return jsonify({'error': 'Error parsing XML: ' + str(e)}), 500 # Return an error response with HTTP status code 500 80 | 81 | # main code, run app 82 | if __name__ == '__main__': 83 | # app.run(debug=True) 84 | app.run(host='0.0.0.0', port=5000) 85 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | blinker==1.7.0 2 | certifi==2023.11.17 3 | charset-normalizer==3.3.2 4 | click==8.1.7 5 | Flask==3.0.0 6 | idna==3.6 7 | itsdangerous==2.1.2 8 | Jinja2==3.1.2 9 | MarkupSafe==2.1.3 10 | python-dotenv==1.0.0 11 | requests==2.31.0 12 | urllib3==2.1.0 13 | Werkzeug==3.0.1 14 | xmltodict==0.13.0 15 | -------------------------------------------------------------------------------- /static/assets/airplane-plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/airplane-plot.png -------------------------------------------------------------------------------- /static/assets/airplane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/airplane.png -------------------------------------------------------------------------------- /static/assets/boat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/boat.png -------------------------------------------------------------------------------- /static/assets/bug-on-cam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/bug-on-cam.png -------------------------------------------------------------------------------- /static/assets/bus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/bus.png -------------------------------------------------------------------------------- /static/assets/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/camera.png -------------------------------------------------------------------------------- /static/assets/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/car.png -------------------------------------------------------------------------------- /static/assets/ccs-styled-plots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/ccs-styled-plots.png -------------------------------------------------------------------------------- /static/assets/chicago-bus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/chicago-bus.png -------------------------------------------------------------------------------- /static/assets/chicago-buses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/chicago-buses.png -------------------------------------------------------------------------------- /static/assets/cosmo-cam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/cosmo-cam.png -------------------------------------------------------------------------------- /static/assets/environments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/environments.png -------------------------------------------------------------------------------- /static/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/favicon.png -------------------------------------------------------------------------------- /static/assets/google-maps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/google-maps.png -------------------------------------------------------------------------------- /static/assets/heroku-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/heroku-error.png -------------------------------------------------------------------------------- /static/assets/map-plots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/map-plots.png -------------------------------------------------------------------------------- /static/assets/map-with-cameras.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/map-with-cameras.png -------------------------------------------------------------------------------- /static/assets/supervision-tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/supervision-tn.png -------------------------------------------------------------------------------- /static/assets/train.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/train.png -------------------------------------------------------------------------------- /static/assets/vdot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CosmodiumCS/MK14-SuperVision/b1b48a99956d48c3d4639b60c43041ab25bb3ccf/static/assets/vdot.png -------------------------------------------------------------------------------- /static/cameras/nothern-ireland.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "KmlFile", 4 | "crs": { 5 | "type": "name", 6 | "properties": { 7 | "name": "urn:ogc:def:crs:OGC:1.3:CRS84" 8 | } 9 | }, 10 | "features": [ 11 | { 12 | "type": "Feature", 13 | "properties": { 14 | "description": "Westlink - Divis", 15 | "url": " https://trafficwatchni.com/twni/cameras/static?id=213" 16 | }, 17 | "geometry": { 18 | "type": "Point", 19 | "coordinates": [ 20 | 0, 21 | 0 22 | ] 23 | } 24 | }, 25 | { 26 | "type": "Feature", 27 | "properties": { 28 | "description": "A1 - B10 Overbridge Junction", 29 | "url": " https://trafficwatchni.com/twni/cameras/static?id=58" 30 | }, 31 | "geometry": { 32 | "type": "Point", 33 | "coordinates": [ 34 | 0, 35 | 0 36 | ] 37 | } 38 | }, 39 | { 40 | "type": "Feature", 41 | "properties": { 42 | "description": "M22 - Dunsilly Roundabout", 43 | "url": " https://trafficwatchni.com/twni/cameras/static?id=210" 44 | }, 45 | "geometry": { 46 | "type": "Point", 47 | "coordinates": [ 48 | 0, 49 | 0 50 | ] 51 | } 52 | }, 53 | { 54 | "type": "Feature", 55 | "properties": { 56 | "description": "Lodge Rd Rand#39;bout Newbridge Coleraine", 57 | "url": " https://trafficwatchni.com/twni/cameras/static?id=60" 58 | }, 59 | "geometry": { 60 | "type": "Point", 61 | "coordinates": [ 62 | 0, 63 | 0 64 | ] 65 | } 66 | }, 67 | { 68 | "type": "Feature", 69 | "properties": { 70 | "description": "Lodge Rd Rand#39;bout Lodge Coleraine", 71 | "url": " https://trafficwatchni.com/twni/cameras/static?id=62" 72 | }, 73 | "geometry": { 74 | "type": "Point", 75 | "coordinates": [ 76 | 0, 77 | 0 78 | ] 79 | } 80 | }, 81 | { 82 | "type": "Feature", 83 | "properties": { 84 | "description": "Kilowen St Coleraine", 85 | "url": " https://trafficwatchni.com/twni/cameras/static?id=67" 86 | }, 87 | "geometry": { 88 | "type": "Point", 89 | "coordinates": [ 90 | 0, 91 | 0 92 | ] 93 | } 94 | }, 95 | { 96 | "type": "Feature", 97 | "properties": { 98 | "description": "A2 Shore Rd - Trooperslane", 99 | "url": " Carrick" 100 | }, 101 | "geometry": { 102 | "type": "Point", 103 | "coordinates": [ 104 | 0, 105 | 0 106 | ] 107 | } 108 | }, 109 | { 110 | "type": "Feature", 111 | "properties": { 112 | "description": "Westlink - York Street", 113 | "url": " https://trafficwatchni.com/twni/cameras/static?id=55" 114 | }, 115 | "geometry": { 116 | "type": "Point", 117 | "coordinates": [ 118 | 0, 119 | 0 120 | ] 121 | } 122 | }, 123 | { 124 | "type": "Feature", 125 | "properties": { 126 | "description": "Westlink - Hospital", 127 | "url": " https://trafficwatchni.com/twni/cameras/static?id=214" 128 | }, 129 | "geometry": { 130 | "type": "Point", 131 | "coordinates": [ 132 | 0, 133 | 0 134 | ] 135 | } 136 | }, 137 | { 138 | "type": "Feature", 139 | "properties": { 140 | "description": "A1 - Hillsborough Road Roundabout", 141 | "url": " https://trafficwatchni.com/twni/cameras/static?id=57" 142 | }, 143 | "geometry": { 144 | "type": "Point", 145 | "coordinates": [ 146 | 0, 147 | 0 148 | ] 149 | } 150 | }, 151 | { 152 | "type": "Feature", 153 | "properties": { 154 | "description": "Victoria Street - High Street", 155 | "url": " https://trafficwatchni.com/twni/cameras/static?id=153" 156 | }, 157 | "geometry": { 158 | "type": "Point", 159 | "coordinates": [ 160 | 0, 161 | 0 162 | ] 163 | } 164 | }, 165 | { 166 | "type": "Feature", 167 | "properties": { 168 | "description": "Upp Kand#39;Breda - Milltown Rd", 169 | "url": " https://trafficwatchni.com/twni/cameras/static?id=211" 170 | }, 171 | "geometry": { 172 | "type": "Point", 173 | "coordinates": [ 174 | 0, 175 | 0 176 | ] 177 | } 178 | }, 179 | { 180 | "type": "Feature", 181 | "properties": { 182 | "description": "Upper Newtownards Rd - Stoney Rd", 183 | "url": " https://trafficwatchni.com/twni/cameras/static?id=158" 184 | }, 185 | "geometry": { 186 | "type": "Point", 187 | "coordinates": [ 188 | 0, 189 | 0 190 | ] 191 | } 192 | }, 193 | { 194 | "type": "Feature", 195 | "properties": { 196 | "description": "Upper Newtownards Rd - Eastlink", 197 | "url": " https://trafficwatchni.com/twni/cameras/static?id=25" 198 | }, 199 | "geometry": { 200 | "type": "Point", 201 | "coordinates": [ 202 | 0, 203 | 0 204 | ] 205 | } 206 | }, 207 | { 208 | "type": "Feature", 209 | "properties": { 210 | "description": "Upper Newtownards Rd - Dunlady Rd", 211 | "url": " https://trafficwatchni.com/twni/cameras/static?id=26" 212 | }, 213 | "geometry": { 214 | "type": "Point", 215 | "coordinates": [ 216 | 0, 217 | 0 218 | ] 219 | } 220 | }, 221 | { 222 | "type": "Feature", 223 | "properties": { 224 | "description": "Upper Knockbreda Rd - Upper Galwally", 225 | "url": " https://trafficwatchni.com/twni/cameras/static?id=49" 226 | }, 227 | "geometry": { 228 | "type": "Point", 229 | "coordinates": [ 230 | 0, 231 | 0 232 | ] 233 | } 234 | }, 235 | { 236 | "type": "Feature", 237 | "properties": { 238 | "description": "Stewartstown Road / Michael Ferguson Roundabout", 239 | "url": " https://trafficwatchni.com/twni/cameras/static?id=164" 240 | }, 241 | "geometry": { 242 | "type": "Point", 243 | "coordinates": [ 244 | 0, 245 | 0 246 | ] 247 | } 248 | }, 249 | { 250 | "type": "Feature", 251 | "properties": { 252 | "description": "Sandy Row - Hope Street", 253 | "url": " https://trafficwatchni.com/twni/cameras/static?id=202" 254 | }, 255 | "geometry": { 256 | "type": "Point", 257 | "coordinates": [ 258 | 0, 259 | 0 260 | ] 261 | } 262 | }, 263 | { 264 | "type": "Feature", 265 | "properties": { 266 | "description": "Saintfield Road - Primrose Hill", 267 | "url": " https://trafficwatchni.com/twni/cameras/static?id=43" 268 | }, 269 | "geometry": { 270 | "type": "Point", 271 | "coordinates": [ 272 | 0, 273 | 0 274 | ] 275 | } 276 | }, 277 | { 278 | "type": "Feature", 279 | "properties": { 280 | "description": "A2 - Holywood Esplanade", 281 | "url": " https://trafficwatchni.com/twni/cameras/static?id=45" 282 | }, 283 | "geometry": { 284 | "type": "Point", 285 | "coordinates": [ 286 | 0, 287 | 0 288 | ] 289 | } 290 | }, 291 | { 292 | "type": "Feature", 293 | "properties": { 294 | "description": "Orritor Street/Willima Street", 295 | "url": " Cookstown" 296 | }, 297 | "geometry": { 298 | "type": "Point", 299 | "coordinates": [ 300 | 0, 301 | 0 302 | ] 303 | } 304 | }, 305 | { 306 | "type": "Feature", 307 | "properties": { 308 | "description": "Great Northern Road ", 309 | "url": " Tamlaght Road (Homebase)" 310 | }, 311 | "geometry": { 312 | "type": "Point", 313 | "coordinates": [ 314 | 0, 315 | 0 316 | ] 317 | } 318 | }, 319 | { 320 | "type": "Feature", 321 | "properties": { 322 | "description": "Gaol Square", 323 | "url": " Enniskillen" 324 | }, 325 | "geometry": { 326 | "type": "Point", 327 | "coordinates": [ 328 | 0, 329 | 0 330 | ] 331 | } 332 | }, 333 | { 334 | "type": "Feature", 335 | "properties": { 336 | "description": "Dublin Road at Great Northern Road", 337 | "url": " Omagh" 338 | }, 339 | "geometry": { 340 | "type": "Point", 341 | "coordinates": [ 342 | 0, 343 | 0 344 | ] 345 | } 346 | }, 347 | { 348 | "type": "Feature", 349 | "properties": { 350 | "description": "Dromore Road at Asda", 351 | "url": " Omagh" 352 | }, 353 | "geometry": { 354 | "type": "Point", 355 | "coordinates": [ 356 | 0, 357 | 0 358 | ] 359 | } 360 | }, 361 | { 362 | "type": "Feature", 363 | "properties": { 364 | "description": "Dales Corner/A6 Glendermott Rd - A2 ColumbraTerrace", 365 | "url": " https://trafficwatchni.com/twni/cameras/static?id=74" 366 | }, 367 | "geometry": { 368 | "type": "Point", 369 | "coordinates": [ 370 | 0, 371 | 0 372 | ] 373 | } 374 | }, 375 | { 376 | "type": "Feature", 377 | "properties": { 378 | "description": "A37 Coleraine Mountain", 379 | "url": " https://trafficwatchni.com/twni/cameras/static?id=23" 380 | }, 381 | "geometry": { 382 | "type": "Point", 383 | "coordinates": [ 384 | 0, 385 | 0 386 | ] 387 | } 388 | }, 389 | { 390 | "type": "Feature", 391 | "properties": { 392 | "description": "Albertbridge Road - Woodstock Link", 393 | "url": " https://trafficwatchni.com/twni/cameras/static?id=24" 394 | }, 395 | "geometry": { 396 | "type": "Point", 397 | "coordinates": [ 398 | 0, 399 | 0 400 | ] 401 | } 402 | }, 403 | { 404 | "type": "Feature", 405 | "properties": { 406 | "description": "Saintfield Rd Roundabout Lisburn", 407 | "url": " https://trafficwatchni.com/twni/cameras/static?id=34" 408 | }, 409 | "geometry": { 410 | "type": "Point", 411 | "coordinates": [ 412 | 0, 413 | 0 414 | ] 415 | } 416 | }, 417 | { 418 | "type": "Feature", 419 | "properties": { 420 | "description": "Prince William Rd - Lisburn North Feeder Rd", 421 | "url": " https://trafficwatchni.com/twni/cameras/static?id=32" 422 | }, 423 | "geometry": { 424 | "type": "Point", 425 | "coordinates": [ 426 | 0, 427 | 0 428 | ] 429 | } 430 | }, 431 | { 432 | "type": "Feature", 433 | "properties": { 434 | "description": "M1 - Blaris - Jct 8 ", 435 | "url": " https://trafficwatchni.com/twni/cameras/static?id=35" 436 | }, 437 | "geometry": { 438 | "type": "Point", 439 | "coordinates": [ 440 | 0, 441 | 0 442 | ] 443 | } 444 | }, 445 | { 446 | "type": "Feature", 447 | "properties": { 448 | "description": "M1 - Blacks Rd - Jct 3", 449 | "url": " https://trafficwatchni.com/twni/cameras/static?id=33" 450 | }, 451 | "geometry": { 452 | "type": "Point", 453 | "coordinates": [ 454 | 0, 455 | 0 456 | ] 457 | } 458 | }, 459 | { 460 | "type": "Feature", 461 | "properties": { 462 | "description": "Belsize Rd - North Feeder Rd", 463 | "url": " https://trafficwatchni.com/twni/cameras/static?id=166" 464 | }, 465 | "geometry": { 466 | "type": "Point", 467 | "coordinates": [ 468 | 0, 469 | 0 470 | ] 471 | } 472 | }, 473 | { 474 | "type": "Feature", 475 | "properties": { 476 | "description": "A3 Moira Road - Halftown Road", 477 | "url": " https://trafficwatchni.com/twni/cameras/static?id=168" 478 | }, 479 | "geometry": { 480 | "type": "Point", 481 | "coordinates": [ 482 | 0, 483 | 0 484 | ] 485 | } 486 | }, 487 | { 488 | "type": "Feature", 489 | "properties": { 490 | "description": "A2 - Bangor Rd - Old Station Rd ", 491 | "url": " https://trafficwatchni.com/twni/cameras/static?id=46" 492 | }, 493 | "geometry": { 494 | "type": "Point", 495 | "coordinates": [ 496 | 0, 497 | 0 498 | ] 499 | } 500 | }, 501 | { 502 | "type": "Feature", 503 | "properties": { 504 | "description": "Castlereagh Rd - Grand Parade/ Ladas Dr", 505 | "url": " https://trafficwatchni.com/twni/cameras/static?id=27" 506 | }, 507 | "geometry": { 508 | "type": "Point", 509 | "coordinates": [ 510 | 0, 511 | 0 512 | ] 513 | } 514 | }, 515 | { 516 | "type": "Feature", 517 | "properties": { 518 | "description": "M1 - Stockmans Lane", 519 | "url": " https://trafficwatchni.com/twni/cameras/static?id=171" 520 | }, 521 | "geometry": { 522 | "type": "Point", 523 | "coordinates": [ 524 | 0, 525 | 0 526 | ] 527 | } 528 | }, 529 | { 530 | "type": "Feature", 531 | "properties": { 532 | "description": "M1 - Kennedy Way - Jct 2", 533 | "url": " https://trafficwatchni.com/twni/cameras/static?id=170" 534 | }, 535 | "geometry": { 536 | "type": "Point", 537 | "coordinates": [ 538 | 0, 539 | 0 540 | ] 541 | } 542 | }, 543 | { 544 | "type": "Feature", 545 | "properties": { 546 | "description": "Lisburn Road - Eglantine Avenue", 547 | "url": " https://trafficwatchni.com/twni/cameras/static?id=161" 548 | }, 549 | "geometry": { 550 | "type": "Point", 551 | "coordinates": [ 552 | 0, 553 | 0 554 | ] 555 | } 556 | }, 557 | { 558 | "type": "Feature", 559 | "properties": { 560 | "description": "Falls Road - Grosvenor Road", 561 | "url": " https://trafficwatchni.com/twni/cameras/static?id=162" 562 | }, 563 | "geometry": { 564 | "type": "Point", 565 | "coordinates": [ 566 | 0, 567 | 0 568 | ] 569 | } 570 | }, 571 | { 572 | "type": "Feature", 573 | "properties": { 574 | "description": "East Bridge Street - Central Station", 575 | "url": " https://trafficwatchni.com/twni/cameras/static?id=156" 576 | }, 577 | "geometry": { 578 | "type": "Point", 579 | "coordinates": [ 580 | 0, 581 | 0 582 | ] 583 | } 584 | }, 585 | { 586 | "type": "Feature", 587 | "properties": { 588 | "description": "Durham St - College Sq Nth", 589 | "url": " https://trafficwatchni.com/twni/cameras/static?id=201" 590 | }, 591 | "geometry": { 592 | "type": "Point", 593 | "coordinates": [ 594 | 0, 595 | 0 596 | ] 597 | } 598 | }, 599 | { 600 | "type": "Feature", 601 | "properties": { 602 | "description": "Dublin Rd - Bruce Street", 603 | "url": " https://trafficwatchni.com/twni/cameras/static?id=159" 604 | }, 605 | "geometry": { 606 | "type": "Point", 607 | "coordinates": [ 608 | 0, 609 | 0 610 | ] 611 | } 612 | }, 613 | { 614 | "type": "Feature", 615 | "properties": { 616 | "description": "Donegall Square South-Adelaide Street", 617 | "url": " https://trafficwatchni.com/twni/cameras/static?id=41" 618 | }, 619 | "geometry": { 620 | "type": "Point", 621 | "coordinates": [ 622 | 0, 623 | 0 624 | ] 625 | } 626 | }, 627 | { 628 | "type": "Feature", 629 | "properties": { 630 | "description": "M1 - Blacks Rd - Jct 3", 631 | "url": " https://trafficwatchni.com/twni/cameras/static?id=33" 632 | }, 633 | "geometry": { 634 | "type": "Point", 635 | "coordinates": [ 636 | 0, 637 | 0 638 | ] 639 | } 640 | }, 641 | { 642 | "type": "Feature", 643 | "properties": { 644 | "description": "Boucher Road - Tates Avenue", 645 | "url": " https://trafficwatchni.com/twni/cameras/static?id=54" 646 | }, 647 | "geometry": { 648 | "type": "Point", 649 | "coordinates": [ 650 | 0, 651 | 0 652 | ] 653 | } 654 | }, 655 | { 656 | "type": "Feature", 657 | "properties": { 658 | "description": "Belvoir Cand#39;way - Newtownbreda Rd - Tescoand#39;s", 659 | "url": " https://trafficwatchni.com/twni/cameras/static?id=50" 660 | }, 661 | "geometry": { 662 | "type": "Point", 663 | "coordinates": [ 664 | 0, 665 | 0 666 | ] 667 | } 668 | }, 669 | { 670 | "type": "Feature", 671 | "properties": { 672 | "description": "Beersbridge Road - Castlereagh Street", 673 | "url": " https://trafficwatchni.com/twni/cameras/static?id=157" 674 | }, 675 | "geometry": { 676 | "type": "Point", 677 | "coordinates": [ 678 | 0, 679 | 0 680 | ] 681 | } 682 | }, 683 | { 684 | "type": "Feature", 685 | "properties": { 686 | "description": "Ballygowan Road - Knock Road", 687 | "url": " https://trafficwatchni.com/twni/cameras/static?id=190" 688 | }, 689 | "geometry": { 690 | "type": "Point", 691 | "coordinates": [ 692 | 0, 693 | 0 694 | ] 695 | } 696 | }, 697 | { 698 | "type": "Feature", 699 | "properties": { 700 | "description": "Andersonstown Road / Kennedy Way", 701 | "url": " https://trafficwatchni.com/twni/cameras/static?id=29" 702 | }, 703 | "geometry": { 704 | "type": "Point", 705 | "coordinates": [ 706 | 0, 707 | 0 708 | ] 709 | } 710 | }, 711 | { 712 | "type": "Feature", 713 | "properties": { 714 | "description": "Andersonstown Rd - Finaghy Rd Nth", 715 | "url": " https://trafficwatchni.com/twni/cameras/static?id=163" 716 | }, 717 | "geometry": { 718 | "type": "Point", 719 | "coordinates": [ 720 | 0, 721 | 0 722 | ] 723 | } 724 | }, 725 | { 726 | "type": "Feature", 727 | "properties": { 728 | "description": "Saintfield Road - Upper Galwally", 729 | "url": " https://trafficwatchni.com/twni/cameras/static?id=184" 730 | }, 731 | "geometry": { 732 | "type": "Point", 733 | "coordinates": [ 734 | 0, 735 | 0 736 | ] 737 | } 738 | }, 739 | { 740 | "type": "Feature", 741 | "properties": { 742 | "description": "Ormeau Road - Ravenhill Road", 743 | "url": " https://trafficwatchni.com/twni/cameras/static?id=183" 744 | }, 745 | "geometry": { 746 | "type": "Point", 747 | "coordinates": [ 748 | 0, 749 | 0 750 | ] 751 | } 752 | }, 753 | { 754 | "type": "Feature", 755 | "properties": { 756 | "description": "Saintfield Road - School Rd", 757 | "url": " https://trafficwatchni.com/twni/cameras/static?id=185" 758 | }, 759 | "geometry": { 760 | "type": "Point", 761 | "coordinates": [ 762 | 0, 763 | 0 764 | ] 765 | } 766 | }, 767 | { 768 | "type": "Feature", 769 | "properties": { 770 | "description": "Saintfield Road - Primrose Hill", 771 | "url": " https://trafficwatchni.com/twni/cameras/static?id=43" 772 | }, 773 | "geometry": { 774 | "type": "Point", 775 | "coordinates": [ 776 | 0, 777 | 0 778 | ] 779 | } 780 | }, 781 | { 782 | "type": "Feature", 783 | "properties": { 784 | "description": "Peters Hill - Millfield", 785 | "url": " https://trafficwatchni.com/twni/cameras/static?id=155" 786 | }, 787 | "geometry": { 788 | "type": "Point", 789 | "coordinates": [ 790 | 0, 791 | 0 792 | ] 793 | } 794 | }, 795 | { 796 | "type": "Feature", 797 | "properties": { 798 | "description": "Oxford Street - Lanyon Place", 799 | "url": " https://trafficwatchni.com/twni/cameras/static?id=152" 800 | }, 801 | "geometry": { 802 | "type": "Point", 803 | "coordinates": [ 804 | 0, 805 | 0 806 | ] 807 | } 808 | }, 809 | { 810 | "type": "Feature", 811 | "properties": { 812 | "description": "Oxford Street - Ann Street", 813 | "url": " https://trafficwatchni.com/twni/cameras/static?id=151" 814 | }, 815 | "geometry": { 816 | "type": "Point", 817 | "coordinates": [ 818 | 0, 819 | 0 820 | ] 821 | } 822 | }, 823 | { 824 | "type": "Feature", 825 | "properties": { 826 | "description": "M1 Stockmans Lane", 827 | "url": " https://trafficwatchni.com/twni/cameras/static?id=12" 828 | }, 829 | "geometry": { 830 | "type": "Point", 831 | "coordinates": [ 832 | 0, 833 | 0 834 | ] 835 | } 836 | }, 837 | { 838 | "type": "Feature", 839 | "properties": { 840 | "description": "Ormeau Road - Annadale Embankment", 841 | "url": " https://trafficwatchni.com/twni/cameras/static?id=42" 842 | }, 843 | "geometry": { 844 | "type": "Point", 845 | "coordinates": [ 846 | 0, 847 | 0 848 | ] 849 | } 850 | }, 851 | { 852 | "type": "Feature", 853 | "properties": { 854 | "description": "Ormeau AV - Linehall ST", 855 | "url": " https://trafficwatchni.com/twni/cameras/static?id=204" 856 | }, 857 | "geometry": { 858 | "type": "Point", 859 | "coordinates": [ 860 | 0, 861 | 0 862 | ] 863 | } 864 | }, 865 | { 866 | "type": "Feature", 867 | "properties": { 868 | "description": "Nand#39;ards RD - Albertbridge RD", 869 | "url": " https://trafficwatchni.com/twni/cameras/static?id=203" 870 | }, 871 | "geometry": { 872 | "type": "Point", 873 | "coordinates": [ 874 | 0, 875 | 0 876 | ] 877 | } 878 | }, 879 | { 880 | "type": "Feature", 881 | "properties": { 882 | "description": "Milltown - Hospital Rd", 883 | "url": " https://trafficwatchni.com/twni/cameras/static?id=212" 884 | }, 885 | "geometry": { 886 | "type": "Point", 887 | "coordinates": [ 888 | 0, 889 | 0 890 | ] 891 | } 892 | }, 893 | { 894 | "type": "Feature", 895 | "properties": { 896 | "description": "Malone Road - Old Stranmillis Road", 897 | "url": " https://trafficwatchni.com/twni/cameras/static?id=51" 898 | }, 899 | "geometry": { 900 | "type": "Point", 901 | "coordinates": [ 902 | 0, 903 | 0 904 | ] 905 | } 906 | }, 907 | { 908 | "type": "Feature", 909 | "properties": { 910 | "description": "Malone Road - Balmoral Avenue", 911 | "url": " https://trafficwatchni.com/twni/cameras/static?id=52" 912 | }, 913 | "geometry": { 914 | "type": "Point", 915 | "coordinates": [ 916 | 0, 917 | 0 918 | ] 919 | } 920 | }, 921 | { 922 | "type": "Feature", 923 | "properties": { 924 | "description": "M2 - Greencastle - Jct 2", 925 | "url": " https://trafficwatchni.com/twni/cameras/static?id=36" 926 | }, 927 | "geometry": { 928 | "type": "Point", 929 | "coordinates": [ 930 | 0, 931 | 0 932 | ] 933 | } 934 | }, 935 | { 936 | "type": "Feature", 937 | "properties": { 938 | "description": "M2 - Fortwilliam North (1B16)", 939 | "url": " https://trafficwatchni.com/twni/cameras/static?id=208" 940 | }, 941 | "geometry": { 942 | "type": "Point", 943 | "coordinates": [ 944 | 0, 945 | 0 946 | ] 947 | } 948 | }, 949 | { 950 | "type": "Feature", 951 | "properties": { 952 | "description": "M2 - Duncrue St North (0B14)", 953 | "url": " https://trafficwatchni.com/twni/cameras/static?id=207" 954 | }, 955 | "geometry": { 956 | "type": "Point", 957 | "coordinates": [ 958 | 0, 959 | 0 960 | ] 961 | } 962 | }, 963 | { 964 | "type": "Feature", 965 | "properties": { 966 | "description": "A2 Rathgael, Bangor", 967 | "url": "https://trafficwatchni.com/twni/cameras/static?id=14" 968 | }, 969 | "geometry": { 970 | "type": "Point", 971 | "coordinates": [ 972 | -5.7113818, 973 | 54.6470334 974 | ] 975 | } 976 | }, 977 | { 978 | "type": "Feature", 979 | "properties": { 980 | "description": "A2 - Tillysburn", 981 | "url": "https://trafficwatchni.com/twni/cameras/static?id=44" 982 | }, 983 | "geometry": { 984 | "type": "Point", 985 | "coordinates": [ 986 | -5.860922, 987 | 54.6139594 988 | ] 989 | } 990 | }, 991 | { 992 | "type": "Feature", 993 | "properties": { 994 | "description": "Ballygowan Road - Knock Road", 995 | "url": "https://trafficwatchni.com/twni/cameras/static?id=190" 996 | }, 997 | "geometry": { 998 | "type": "Point", 999 | "coordinates": [ 1000 | -5.860922, 1001 | 54.6139594 1002 | ] 1003 | } 1004 | }, 1005 | { 1006 | "type": "Feature", 1007 | "properties": { 1008 | "description": "Andersonstown Road / Kennedy Way", 1009 | "url": "https://trafficwatchni.com/twni/cameras/static?id=29" 1010 | }, 1011 | "geometry": { 1012 | "type": "Point", 1013 | "coordinates": [ 1014 | -5.860922, 1015 | 54.6139594 1016 | ] 1017 | } 1018 | }, 1019 | { 1020 | "type": "Feature", 1021 | "properties": { 1022 | "description": "Andersonstown Rd - Finaghy Rd Nth", 1023 | "url": "https://trafficwatchni.com/twni/cameras/static?id=163" 1024 | }, 1025 | "geometry": { 1026 | "type": "Point", 1027 | "coordinates": [ 1028 | -5.860922, 1029 | 54.6139594 1030 | ] 1031 | } 1032 | }, 1033 | { 1034 | "type": "Feature", 1035 | "properties": { 1036 | "description": "Albertbridge Road - Woodstock Link", 1037 | "url": "https://trafficwatchni.com/twni/cameras/static?id=24" 1038 | }, 1039 | "geometry": { 1040 | "type": "Point", 1041 | "coordinates": [ 1042 | -5.860922, 1043 | 54.6139594 1044 | ] 1045 | } 1046 | }, 1047 | { 1048 | "type": "Feature", 1049 | "properties": { 1050 | "description": "A2 - Holywood Exchange", 1051 | "url": "https://trafficwatchni.com/twni/cameras/static?id=189" 1052 | }, 1053 | "geometry": { 1054 | "type": "Point", 1055 | "coordinates": [ 1056 | -5.86014736140642, 1057 | 54.6238295 1058 | ] 1059 | } 1060 | }, 1061 | { 1062 | "type": "Feature", 1063 | "properties": { 1064 | "description": "M1 - Blacks Rd - Jct 3", 1065 | "url": "https://trafficwatchni.com/twni/cameras/static?id=33" 1066 | }, 1067 | "geometry": { 1068 | "type": "Point", 1069 | "coordinates": [ 1070 | -5.8573616, 1071 | 54.5948373 1072 | ] 1073 | } 1074 | }, 1075 | { 1076 | "type": "Feature", 1077 | "properties": { 1078 | "description": "Lisburn Road - Eglantine Avenue", 1079 | "url": "https://trafficwatchni.com/twni/cameras/static?id=161" 1080 | }, 1081 | "geometry": { 1082 | "type": "Point", 1083 | "coordinates": [ 1084 | -5.8573616, 1085 | 54.5948373 1086 | ] 1087 | } 1088 | }, 1089 | { 1090 | "type": "Feature", 1091 | "properties": { 1092 | "description": "Knock Road - Upper Newtownards Road", 1093 | "url": "https://trafficwatchni.com/twni/cameras/static?id=48" 1094 | }, 1095 | "geometry": { 1096 | "type": "Point", 1097 | "coordinates": [ 1098 | -5.8573616, 1099 | 54.5948373 1100 | ] 1101 | } 1102 | }, 1103 | { 1104 | "type": "Feature", 1105 | "properties": { 1106 | "description": "M2 - Antrim Hospital", 1107 | "url": "https://trafficwatchni.com/twni/cameras/static?id=209" 1108 | }, 1109 | "geometry": { 1110 | "type": "Point", 1111 | "coordinates": [ 1112 | -5.92833290324877, 1113 | 54.65396525 1114 | ] 1115 | } 1116 | }, 1117 | { 1118 | "type": "Feature", 1119 | "properties": { 1120 | "description": "M2 Duncrue Street", 1121 | "url": "https://trafficwatchni.com/twni/cameras/static?id=5" 1122 | }, 1123 | "geometry": { 1124 | "type": "Point", 1125 | "coordinates": [ 1126 | -5.9200896, 1127 | 54.6132853 1128 | ] 1129 | } 1130 | }, 1131 | { 1132 | "type": "Feature", 1133 | "properties": { 1134 | "description": "M2 - Greencastle - Jct 2", 1135 | "url": "https://trafficwatchni.com/twni/cameras/static?id=36" 1136 | }, 1137 | "geometry": { 1138 | "type": "Point", 1139 | "coordinates": [ 1140 | -5.9200896, 1141 | 54.6132853 1142 | ] 1143 | } 1144 | }, 1145 | { 1146 | "type": "Feature", 1147 | "properties": { 1148 | "description": "M2 - Fortwilliam North (1B16)", 1149 | "url": "https://trafficwatchni.com/twni/cameras/static?id=208" 1150 | }, 1151 | "geometry": { 1152 | "type": "Point", 1153 | "coordinates": [ 1154 | -5.9200896, 1155 | 54.6132853 1156 | ] 1157 | } 1158 | }, 1159 | { 1160 | "type": "Feature", 1161 | "properties": { 1162 | "description": "Donegall Square South-Adelaide Street", 1163 | "url": "https://trafficwatchni.com/twni/cameras/static?id=41" 1164 | }, 1165 | "geometry": { 1166 | "type": "Point", 1167 | "coordinates": [ 1168 | -5.92057420804285, 1169 | 54.6063085 1170 | ] 1171 | } 1172 | }, 1173 | { 1174 | "type": "Feature", 1175 | "properties": { 1176 | "description": "East Bridge Street - Central Station", 1177 | "url": "https://trafficwatchni.com/twni/cameras/static?id=156" 1178 | }, 1179 | "geometry": { 1180 | "type": "Point", 1181 | "coordinates": [ 1182 | -5.92057420804285, 1183 | 54.6063085 1184 | ] 1185 | } 1186 | }, 1187 | { 1188 | "type": "Feature", 1189 | "properties": { 1190 | "description": "Durham St - College Sq Nth", 1191 | "url": "https://trafficwatchni.com/twni/cameras/static?id=201" 1192 | }, 1193 | "geometry": { 1194 | "type": "Point", 1195 | "coordinates": [ 1196 | -5.92057420804285, 1197 | 54.6063085 1198 | ] 1199 | } 1200 | }, 1201 | { 1202 | "type": "Feature", 1203 | "properties": { 1204 | "description": "Dublin Rd - Bruce Street", 1205 | "url": "https://trafficwatchni.com/twni/cameras/static?id=159" 1206 | }, 1207 | "geometry": { 1208 | "type": "Point", 1209 | "coordinates": [ 1210 | -5.92057420804285, 1211 | 54.6063085 1212 | ] 1213 | } 1214 | }, 1215 | { 1216 | "type": "Feature", 1217 | "properties": { 1218 | "description": "Dock Street - Garmoyle Street", 1219 | "url": "https://trafficwatchni.com/twni/cameras/static?id=154" 1220 | }, 1221 | "geometry": { 1222 | "type": "Point", 1223 | "coordinates": [ 1224 | -5.92057420804285, 1225 | 54.6063085 1226 | ] 1227 | } 1228 | }, 1229 | { 1230 | "type": "Feature", 1231 | "properties": { 1232 | "description": "Prince William Rd - Lisburn North Feeder Rd", 1233 | "url": "https://trafficwatchni.com/twni/cameras/static?id=32" 1234 | }, 1235 | "geometry": { 1236 | "type": "Point", 1237 | "coordinates": [ 1238 | -5.9240242, 1239 | 54.6052377 1240 | ] 1241 | } 1242 | }, 1243 | { 1244 | "type": "Feature", 1245 | "properties": { 1246 | "description": "Milltown - Hospital Rd", 1247 | "url": "https://trafficwatchni.com/twni/cameras/static?id=212" 1248 | }, 1249 | "geometry": { 1250 | "type": "Point", 1251 | "coordinates": [ 1252 | -5.9240242, 1253 | 54.6052377 1254 | ] 1255 | } 1256 | }, 1257 | { 1258 | "type": "Feature", 1259 | "properties": { 1260 | "description": "M3 Lagan Bridge", 1261 | "url": "https://trafficwatchni.com/twni/cameras/static?id=7" 1262 | }, 1263 | "geometry": { 1264 | "type": "Point", 1265 | "coordinates": [ 1266 | -5.9240242, 1267 | 54.6052377 1268 | ] 1269 | } 1270 | }, 1271 | { 1272 | "type": "Feature", 1273 | "properties": { 1274 | "description": "Saintfield Road - Primrose Hill", 1275 | "url": "https://trafficwatchni.com/twni/cameras/static?id=43" 1276 | }, 1277 | "geometry": { 1278 | "type": "Point", 1279 | "coordinates": [ 1280 | -5.9240242, 1281 | 54.6052377 1282 | ] 1283 | } 1284 | }, 1285 | { 1286 | "type": "Feature", 1287 | "properties": { 1288 | "description": "Nand#39;ards RD - Albertbridge RD", 1289 | "url": "https://trafficwatchni.com/twni/cameras/static?id=203" 1290 | }, 1291 | "geometry": { 1292 | "type": "Point", 1293 | "coordinates": [ 1294 | -5.9240242, 1295 | 54.6052377 1296 | ] 1297 | } 1298 | }, 1299 | { 1300 | "type": "Feature", 1301 | "properties": { 1302 | "description": "Ormeau AV - Linehall ST", 1303 | "url": "https://trafficwatchni.com/twni/cameras/static?id=204" 1304 | }, 1305 | "geometry": { 1306 | "type": "Point", 1307 | "coordinates": [ 1308 | -5.9240242, 1309 | 54.6052377 1310 | ] 1311 | } 1312 | }, 1313 | { 1314 | "type": "Feature", 1315 | "properties": { 1316 | "description": "M3 - Lagan Bridge East", 1317 | "url": "https://trafficwatchni.com/twni/cameras/static?id=187" 1318 | }, 1319 | "geometry": { 1320 | "type": "Point", 1321 | "coordinates": [ 1322 | -5.9240242, 1323 | 54.6052377 1324 | ] 1325 | } 1326 | }, 1327 | { 1328 | "type": "Feature", 1329 | "properties": { 1330 | "description": "Malone Road - Balmoral Avenue", 1331 | "url": "https://trafficwatchni.com/twni/cameras/static?id=52" 1332 | }, 1333 | "geometry": { 1334 | "type": "Point", 1335 | "coordinates": [ 1336 | -5.9240242, 1337 | 54.6052377 1338 | ] 1339 | } 1340 | }, 1341 | { 1342 | "type": "Feature", 1343 | "properties": { 1344 | "description": "Malone Road - Old Stranmillis Road", 1345 | "url": "https://trafficwatchni.com/twni/cameras/static?id=51" 1346 | }, 1347 | "geometry": { 1348 | "type": "Point", 1349 | "coordinates": [ 1350 | -5.9240242, 1351 | 54.6052377 1352 | ] 1353 | } 1354 | }, 1355 | { 1356 | "type": "Feature", 1357 | "properties": { 1358 | "description": "Ormeau Road - Annadale Embankment", 1359 | "url": "https://trafficwatchni.com/twni/cameras/static?id=42" 1360 | }, 1361 | "geometry": { 1362 | "type": "Point", 1363 | "coordinates": [ 1364 | -5.9240242, 1365 | 54.6052377 1366 | ] 1367 | } 1368 | }, 1369 | { 1370 | "type": "Feature", 1371 | "properties": { 1372 | "description": "Ormeau Road - Ravenhill Road", 1373 | "url": "https://trafficwatchni.com/twni/cameras/static?id=183" 1374 | }, 1375 | "geometry": { 1376 | "type": "Point", 1377 | "coordinates": [ 1378 | -5.9240242, 1379 | 54.6052377 1380 | ] 1381 | } 1382 | }, 1383 | { 1384 | "type": "Feature", 1385 | "properties": { 1386 | "description": "Oxford Street - Ann Street", 1387 | "url": "https://trafficwatchni.com/twni/cameras/static?id=151" 1388 | }, 1389 | "geometry": { 1390 | "type": "Point", 1391 | "coordinates": [ 1392 | -5.9240242, 1393 | 54.6052377 1394 | ] 1395 | } 1396 | }, 1397 | { 1398 | "type": "Feature", 1399 | "properties": { 1400 | "description": "Oxford Street - Lanyon Place", 1401 | "url": "https://trafficwatchni.com/twni/cameras/static?id=152" 1402 | }, 1403 | "geometry": { 1404 | "type": "Point", 1405 | "coordinates": [ 1406 | -5.9240242, 1407 | 54.6052377 1408 | ] 1409 | } 1410 | }, 1411 | { 1412 | "type": "Feature", 1413 | "properties": { 1414 | "description": "Peters Hill - Millfield", 1415 | "url": "https://trafficwatchni.com/twni/cameras/static?id=155" 1416 | }, 1417 | "geometry": { 1418 | "type": "Point", 1419 | "coordinates": [ 1420 | -5.9240242, 1421 | 54.6052377 1422 | ] 1423 | } 1424 | }, 1425 | { 1426 | "type": "Feature", 1427 | "properties": { 1428 | "description": "Saintfield Road - Primrose Hill", 1429 | "url": "https://trafficwatchni.com/twni/cameras/static?id=43" 1430 | }, 1431 | "geometry": { 1432 | "type": "Point", 1433 | "coordinates": [ 1434 | -5.9240242, 1435 | 54.6052377 1436 | ] 1437 | } 1438 | }, 1439 | { 1440 | "type": "Feature", 1441 | "properties": { 1442 | "description": "Saintfield Road - School Rd", 1443 | "url": "https://trafficwatchni.com/twni/cameras/static?id=185" 1444 | }, 1445 | "geometry": { 1446 | "type": "Point", 1447 | "coordinates": [ 1448 | -5.9240242, 1449 | 54.6052377 1450 | ] 1451 | } 1452 | }, 1453 | { 1454 | "type": "Feature", 1455 | "properties": { 1456 | "description": "Saintfield Road - Upper Galwally", 1457 | "url": "https://trafficwatchni.com/twni/cameras/static?id=184" 1458 | }, 1459 | "geometry": { 1460 | "type": "Point", 1461 | "coordinates": [ 1462 | -5.9240242, 1463 | 54.6052377 1464 | ] 1465 | } 1466 | }, 1467 | { 1468 | "type": "Feature", 1469 | "properties": { 1470 | "description": "Sandy Row - Hope Street", 1471 | "url": "https://trafficwatchni.com/twni/cameras/static?id=202" 1472 | }, 1473 | "geometry": { 1474 | "type": "Point", 1475 | "coordinates": [ 1476 | -5.9240242, 1477 | 54.6052377 1478 | ] 1479 | } 1480 | }, 1481 | { 1482 | "type": "Feature", 1483 | "properties": { 1484 | "description": "Saintfield Rd Roundabout Lisburn", 1485 | "url": "https://trafficwatchni.com/twni/cameras/static?id=34" 1486 | }, 1487 | "geometry": { 1488 | "type": "Point", 1489 | "coordinates": [ 1490 | -5.9240242, 1491 | 54.6052377 1492 | ] 1493 | } 1494 | }, 1495 | { 1496 | "type": "Feature", 1497 | "properties": { 1498 | "description": "M3 Lagan Bridge", 1499 | "url": "https://trafficwatchni.com/twni/cameras/static?id=7" 1500 | }, 1501 | "geometry": { 1502 | "type": "Point", 1503 | "coordinates": [ 1504 | -5.9240242, 1505 | 54.6052377 1506 | ] 1507 | } 1508 | }, 1509 | { 1510 | "type": "Feature", 1511 | "properties": { 1512 | "description": "Chichester Street", 1513 | "url": "https://trafficwatchni.com/twni/cameras/static?id=1" 1514 | }, 1515 | "geometry": { 1516 | "type": "Point", 1517 | "coordinates": [ 1518 | -5.9241448, 1519 | 54.5975403 1520 | ] 1521 | } 1522 | }, 1523 | { 1524 | "type": "Feature", 1525 | "properties": { 1526 | "description": "Howard Street", 1527 | "url": "https://trafficwatchni.com/twni/cameras/static?id=2" 1528 | }, 1529 | "geometry": { 1530 | "type": "Point", 1531 | "coordinates": [ 1532 | -5.9318666, 1533 | 54.5959232 1534 | ] 1535 | } 1536 | }, 1537 | { 1538 | "type": "Feature", 1539 | "properties": { 1540 | "description": "M3 - Dee Street", 1541 | "url": "https://trafficwatchni.com/twni/cameras/static?id=188" 1542 | }, 1543 | "geometry": { 1544 | "type": "Point", 1545 | "coordinates": [ 1546 | -5.8960051, 1547 | 54.6017007 1548 | ] 1549 | } 1550 | }, 1551 | { 1552 | "type": "Feature", 1553 | "properties": { 1554 | "description": "A24 Carryduff", 1555 | "url": "https://trafficwatchni.com/twni/cameras/static?id=19" 1556 | }, 1557 | "geometry": { 1558 | "type": "Point", 1559 | "coordinates": [ 1560 | -5.88753022888889, 1561 | 54.5185841 1562 | ] 1563 | } 1564 | }, 1565 | { 1566 | "type": "Feature", 1567 | "properties": { 1568 | "description": "Ballynahinch Road - Carryduff", 1569 | "url": "https://trafficwatchni.com/twni/cameras/static?id=186" 1570 | }, 1571 | "geometry": { 1572 | "type": "Point", 1573 | "coordinates": [ 1574 | -5.8877374, 1575 | 54.5182263 1576 | ] 1577 | } 1578 | }, 1579 | { 1580 | "type": "Feature", 1581 | "properties": { 1582 | "description": "Castlereagh Rd - Grand Parade/ Ladas Dr", 1583 | "url": "https://trafficwatchni.com/twni/cameras/static?id=27" 1584 | }, 1585 | "geometry": { 1586 | "type": "Point", 1587 | "coordinates": [ 1588 | -5.8877374, 1589 | 54.5182263 1590 | ] 1591 | } 1592 | }, 1593 | { 1594 | "type": "Feature", 1595 | "properties": { 1596 | "description": "Boucher Road - Tates Avenue", 1597 | "url": "https://trafficwatchni.com/twni/cameras/static?id=54" 1598 | }, 1599 | "geometry": { 1600 | "type": "Point", 1601 | "coordinates": [ 1602 | -5.8877374, 1603 | 54.5182263 1604 | ] 1605 | } 1606 | }, 1607 | { 1608 | "type": "Feature", 1609 | "properties": { 1610 | "description": "Belvoir Cand#39;way - Newtownbreda Rd - Tescoand#39;s", 1611 | "url": "https://trafficwatchni.com/twni/cameras/static?id=50" 1612 | }, 1613 | "geometry": { 1614 | "type": "Point", 1615 | "coordinates": [ 1616 | -5.8877374, 1617 | 54.5182263 1618 | ] 1619 | } 1620 | }, 1621 | { 1622 | "type": "Feature", 1623 | "properties": { 1624 | "description": "Beersbridge Road - Castlereagh Street", 1625 | "url": "https://trafficwatchni.com/twni/cameras/static?id=157" 1626 | }, 1627 | "geometry": { 1628 | "type": "Point", 1629 | "coordinates": [ 1630 | -5.8877374, 1631 | 54.5182263 1632 | ] 1633 | } 1634 | }, 1635 | { 1636 | "type": "Feature", 1637 | "properties": { 1638 | "description": "Upper Newtownards Rd - Eastlink", 1639 | "url": "https://trafficwatchni.com/twni/cameras/static?id=25" 1640 | }, 1641 | "geometry": { 1642 | "type": "Point", 1643 | "coordinates": [ 1644 | -5.8955985, 1645 | 54.5688857 1646 | ] 1647 | } 1648 | }, 1649 | { 1650 | "type": "Feature", 1651 | "properties": { 1652 | "description": "Upper Newtownards Rd - Dunlady Rd", 1653 | "url": "https://trafficwatchni.com/twni/cameras/static?id=26" 1654 | }, 1655 | "geometry": { 1656 | "type": "Point", 1657 | "coordinates": [ 1658 | -5.8955985, 1659 | 54.5688857 1660 | ] 1661 | } 1662 | }, 1663 | { 1664 | "type": "Feature", 1665 | "properties": { 1666 | "description": "Upper Knockbreda Rd - Upper Galwally", 1667 | "url": "https://trafficwatchni.com/twni/cameras/static?id=49" 1668 | }, 1669 | "geometry": { 1670 | "type": "Point", 1671 | "coordinates": [ 1672 | -5.8955985, 1673 | 54.5688857 1674 | ] 1675 | } 1676 | }, 1677 | { 1678 | "type": "Feature", 1679 | "properties": { 1680 | "description": "Upper Knockbreda Rd - Cregagh Rd", 1681 | "url": "https://trafficwatchni.com/twni/cameras/static?id=191" 1682 | }, 1683 | "geometry": { 1684 | "type": "Point", 1685 | "coordinates": [ 1686 | -5.8955985, 1687 | 54.5688857 1688 | ] 1689 | } 1690 | }, 1691 | { 1692 | "type": "Feature", 1693 | "properties": { 1694 | "description": "Upper Newtownards Rd - Stoney Rd", 1695 | "url": "https://trafficwatchni.com/twni/cameras/static?id=158" 1696 | }, 1697 | "geometry": { 1698 | "type": "Point", 1699 | "coordinates": [ 1700 | -5.8955985, 1701 | 54.5688857 1702 | ] 1703 | } 1704 | }, 1705 | { 1706 | "type": "Feature", 1707 | "properties": { 1708 | "description": "Upp Kand#39;Breda - Milltown Rd", 1709 | "url": "https://trafficwatchni.com/twni/cameras/static?id=211" 1710 | }, 1711 | "geometry": { 1712 | "type": "Point", 1713 | "coordinates": [ 1714 | -5.8955985, 1715 | 54.5688857 1716 | ] 1717 | } 1718 | }, 1719 | { 1720 | "type": "Feature", 1721 | "properties": { 1722 | "description": "Victoria Street - High Street", 1723 | "url": "https://trafficwatchni.com/twni/cameras/static?id=153" 1724 | }, 1725 | "geometry": { 1726 | "type": "Point", 1727 | "coordinates": [ 1728 | -5.8955985, 1729 | 54.5688857 1730 | ] 1731 | } 1732 | }, 1733 | { 1734 | "type": "Feature", 1735 | "properties": { 1736 | "description": "Westlink - Divis", 1737 | "url": "https://trafficwatchni.com/twni/cameras/static?id=213" 1738 | }, 1739 | "geometry": { 1740 | "type": "Point", 1741 | "coordinates": [ 1742 | -5.8955985, 1743 | 54.5688857 1744 | ] 1745 | } 1746 | }, 1747 | { 1748 | "type": "Feature", 1749 | "properties": { 1750 | "description": "Westlink - Hospital", 1751 | "url": "https://trafficwatchni.com/twni/cameras/static?id=214" 1752 | }, 1753 | "geometry": { 1754 | "type": "Point", 1755 | "coordinates": [ 1756 | -5.8955985, 1757 | 54.5688857 1758 | ] 1759 | } 1760 | }, 1761 | { 1762 | "type": "Feature", 1763 | "properties": { 1764 | "description": "Westlink - York Street", 1765 | "url": "https://trafficwatchni.com/twni/cameras/static?id=55" 1766 | }, 1767 | "geometry": { 1768 | "type": "Point", 1769 | "coordinates": [ 1770 | -5.8955985, 1771 | 54.5688857 1772 | ] 1773 | } 1774 | }, 1775 | { 1776 | "type": "Feature", 1777 | "properties": { 1778 | "description": "A2 Shore Rd - Trooperslane, Carrick", 1779 | "url": "https://trafficwatchni.com/twni/cameras/static?id=165" 1780 | }, 1781 | "geometry": { 1782 | "type": "Point", 1783 | "coordinates": [ 1784 | -5.8955985, 1785 | 54.5688857 1786 | ] 1787 | } 1788 | }, 1789 | { 1790 | "type": "Feature", 1791 | "properties": { 1792 | "description": "Finaghy Crossroads", 1793 | "url": "https://trafficwatchni.com/twni/cameras/static?id=53" 1794 | }, 1795 | "geometry": { 1796 | "type": "Point", 1797 | "coordinates": [ 1798 | -5.985639, 1799 | 54.5610627 1800 | ] 1801 | } 1802 | }, 1803 | { 1804 | "type": "Feature", 1805 | "properties": { 1806 | "description": "Scullions Rd", 1807 | "url": "https://trafficwatchni.com/twni/cameras/static?id=37" 1808 | }, 1809 | "geometry": { 1810 | "type": "Point", 1811 | "coordinates": [ 1812 | -5.9795049, 1813 | 54.6778125 1814 | ] 1815 | } 1816 | }, 1817 | { 1818 | "type": "Feature", 1819 | "properties": { 1820 | "description": "M2 Sandyknowes", 1821 | "url": "https://trafficwatchni.com/twni/cameras/static?id=6" 1822 | }, 1823 | "geometry": { 1824 | "type": "Point", 1825 | "coordinates": [ 1826 | -5.9785353, 1827 | 54.6779395 1828 | ] 1829 | } 1830 | }, 1831 | { 1832 | "type": "Feature", 1833 | "properties": { 1834 | "description": "A12 Roden Street", 1835 | "url": "https://trafficwatchni.com/twni/cameras/static?id=10" 1836 | }, 1837 | "geometry": { 1838 | "type": "Point", 1839 | "coordinates": [ 1840 | -5.949003, 1841 | 54.5943363 1842 | ] 1843 | } 1844 | }, 1845 | { 1846 | "type": "Feature", 1847 | "properties": { 1848 | "description": "M1 Broadway", 1849 | "url": "https://trafficwatchni.com/twni/cameras/static?id=11" 1850 | }, 1851 | "geometry": { 1852 | "type": "Point", 1853 | "coordinates": [ 1854 | -5.9587263, 1855 | 54.5891282 1856 | ] 1857 | } 1858 | }, 1859 | { 1860 | "type": "Feature", 1861 | "properties": { 1862 | "description": "M1 - Kennedy Way - Jct 2", 1863 | "url": "https://trafficwatchni.com/twni/cameras/static?id=170" 1864 | }, 1865 | "geometry": { 1866 | "type": "Point", 1867 | "coordinates": [ 1868 | -5.9587263, 1869 | 54.5891282 1870 | ] 1871 | } 1872 | }, 1873 | { 1874 | "type": "Feature", 1875 | "properties": { 1876 | "description": "Falls Road - Donegall Road", 1877 | "url": "https://trafficwatchni.com/twni/cameras/static?id=28" 1878 | }, 1879 | "geometry": { 1880 | "type": "Point", 1881 | "coordinates": [ 1882 | -5.95349694489451, 1883 | 54.58865495 1884 | ] 1885 | } 1886 | }, 1887 | { 1888 | "type": "Feature", 1889 | "properties": { 1890 | "description": "Falls Road - Grosvenor Road", 1891 | "url": "https://trafficwatchni.com/twni/cameras/static?id=162" 1892 | }, 1893 | "geometry": { 1894 | "type": "Point", 1895 | "coordinates": [ 1896 | -5.95349694489451, 1897 | 54.58865495 1898 | ] 1899 | } 1900 | }, 1901 | { 1902 | "type": "Feature", 1903 | "properties": { 1904 | "description": "University Road - Stranmillis Road", 1905 | "url": "https://trafficwatchni.com/twni/cameras/static?id=160" 1906 | }, 1907 | "geometry": { 1908 | "type": "Point", 1909 | "coordinates": [ 1910 | -5.93750349320543, 1911 | 54.57259355 1912 | ] 1913 | } 1914 | }, 1915 | { 1916 | "type": "Feature", 1917 | "properties": { 1918 | "description": "Stewartstown Road / Michael Ferguson Roundabout", 1919 | "url": "https://trafficwatchni.com/twni/cameras/static?id=164" 1920 | }, 1921 | "geometry": { 1922 | "type": "Point", 1923 | "coordinates": [ 1924 | -5.9339798, 1925 | 54.5895233 1926 | ] 1927 | } 1928 | }, 1929 | { 1930 | "type": "Feature", 1931 | "properties": { 1932 | "description": "Shaftesbury Square", 1933 | "url": "https://trafficwatchni.com/twni/cameras/static?id=3" 1934 | }, 1935 | "geometry": { 1936 | "type": "Point", 1937 | "coordinates": [ 1938 | -5.9339798, 1939 | 54.5895233 1940 | ] 1941 | } 1942 | }, 1943 | { 1944 | "type": "Feature", 1945 | "properties": { 1946 | "description": "A12 Clifton Street", 1947 | "url": "https://trafficwatchni.com/twni/cameras/static?id=9" 1948 | }, 1949 | "geometry": { 1950 | "type": "Point", 1951 | "coordinates": [ 1952 | -5.9362049, 1953 | 54.6073728 1954 | ] 1955 | } 1956 | }, 1957 | { 1958 | "type": "Feature", 1959 | "properties": { 1960 | "description": "A2 - Bangor Rd - Old Station Rd ", 1961 | "url": "https://trafficwatchni.com/twni/cameras/static?id=46" 1962 | }, 1963 | "geometry": { 1964 | "type": "Point", 1965 | "coordinates": [ 1966 | -6.0040463, 1967 | 54.7171582 1968 | ] 1969 | } 1970 | }, 1971 | { 1972 | "type": "Feature", 1973 | "properties": { 1974 | "description": "A2 - Ballyrobert", 1975 | "url": "https://trafficwatchni.com/twni/cameras/static?id=47" 1976 | }, 1977 | "geometry": { 1978 | "type": "Point", 1979 | "coordinates": [ 1980 | -6.0040463, 1981 | 54.7171582 1982 | ] 1983 | } 1984 | }, 1985 | { 1986 | "type": "Feature", 1987 | "properties": { 1988 | "description": "Union Bridge, Lisburn", 1989 | "url": "https://trafficwatchni.com/twni/cameras/static?id=16" 1990 | }, 1991 | "geometry": { 1992 | "type": "Point", 1993 | "coordinates": [ 1994 | -6.0384603, 1995 | 54.509968 1996 | ] 1997 | } 1998 | }, 1999 | { 2000 | "type": "Feature", 2001 | "properties": { 2002 | "description": "Union Bridge, Lisburn", 2003 | "url": "https://trafficwatchni.com/twni/cameras/static?id=16" 2004 | }, 2005 | "geometry": { 2006 | "type": "Point", 2007 | "coordinates": [ 2008 | -6.0384603, 2009 | 54.509968 2010 | ] 2011 | } 2012 | }, 2013 | { 2014 | "type": "Feature", 2015 | "properties": { 2016 | "description": "A37 Coleraine Mountain", 2017 | "url": "https://trafficwatchni.com/twni/cameras/static?id=23" 2018 | }, 2019 | "geometry": { 2020 | "type": "Point", 2021 | "coordinates": [ 2022 | -6.0384603, 2023 | 54.509968 2024 | ] 2025 | } 2026 | }, 2027 | { 2028 | "type": "Feature", 2029 | "properties": { 2030 | "description": "M1 - Blaris - Jct 8 ", 2031 | "url": "https://trafficwatchni.com/twni/cameras/static?id=35" 2032 | }, 2033 | "geometry": { 2034 | "type": "Point", 2035 | "coordinates": [ 2036 | -6.028667, 2037 | 54.5291265 2038 | ] 2039 | } 2040 | }, 2041 | { 2042 | "type": "Feature", 2043 | "properties": { 2044 | "description": "M1 - Blacks Rd - Jct 3", 2045 | "url": "https://trafficwatchni.com/twni/cameras/static?id=33" 2046 | }, 2047 | "geometry": { 2048 | "type": "Point", 2049 | "coordinates": [ 2050 | -6.028667, 2051 | 54.5291265 2052 | ] 2053 | } 2054 | }, 2055 | { 2056 | "type": "Feature", 2057 | "properties": { 2058 | "description": "Belsize Rd - North Feeder Rd", 2059 | "url": "https://trafficwatchni.com/twni/cameras/static?id=166" 2060 | }, 2061 | "geometry": { 2062 | "type": "Point", 2063 | "coordinates": [ 2064 | -6.028667, 2065 | 54.5291265 2066 | ] 2067 | } 2068 | }, 2069 | { 2070 | "type": "Feature", 2071 | "properties": { 2072 | "description": "A3 Moira Road - Halftown Road", 2073 | "url": "https://trafficwatchni.com/twni/cameras/static?id=168" 2074 | }, 2075 | "geometry": { 2076 | "type": "Point", 2077 | "coordinates": [ 2078 | -6.028667, 2079 | 54.5291265 2080 | ] 2081 | } 2082 | }, 2083 | { 2084 | "type": "Feature", 2085 | "properties": { 2086 | "description": "A2 Station Road", 2087 | "url": "https://trafficwatchni.com/twni/cameras/static?id=31" 2088 | }, 2089 | "geometry": { 2090 | "type": "Point", 2091 | "coordinates": [ 2092 | -6.028667, 2093 | 54.5291265 2094 | ] 2095 | } 2096 | }, 2097 | { 2098 | "type": "Feature", 2099 | "properties": { 2100 | "description": "M2 - Browns Rd", 2101 | "url": "https://trafficwatchni.com/twni/cameras/static?id=38" 2102 | }, 2103 | "geometry": { 2104 | "type": "Point", 2105 | "coordinates": [ 2106 | -6.0226922, 2107 | 54.6948032 2108 | ] 2109 | } 2110 | }, 2111 | { 2112 | "type": "Feature", 2113 | "properties": { 2114 | "description": "A2 Beeches Road", 2115 | "url": "https://trafficwatchni.com/twni/cameras/static?id=30" 2116 | }, 2117 | "geometry": { 2118 | "type": "Point", 2119 | "coordinates": [ 2120 | -6.2253985, 2121 | 53.2819518 2122 | ] 2123 | } 2124 | }, 2125 | { 2126 | "type": "Feature", 2127 | "properties": { 2128 | "description": "A2 - Holywood Esplanade", 2129 | "url": "https://trafficwatchni.com/twni/cameras/static?id=45" 2130 | }, 2131 | "geometry": { 2132 | "type": "Point", 2133 | "coordinates": [ 2134 | -6.2253985, 2135 | 53.2819518 2136 | ] 2137 | } 2138 | }, 2139 | { 2140 | "type": "Feature", 2141 | "properties": { 2142 | "description": "A1 - Blaris", 2143 | "url": "https://trafficwatchni.com/twni/cameras/static?id=56" 2144 | }, 2145 | "geometry": { 2146 | "type": "Point", 2147 | "coordinates": [ 2148 | -6.07638997854505, 2149 | 54.49961115 2150 | ] 2151 | } 2152 | }, 2153 | { 2154 | "type": "Feature", 2155 | "properties": { 2156 | "description": "M2 Templepatrick", 2157 | "url": "https://trafficwatchni.com/twni/cameras/static?id=17" 2158 | }, 2159 | "geometry": { 2160 | "type": "Point", 2161 | "coordinates": [ 2162 | -6.0827777, 2163 | 54.7133647 2164 | ] 2165 | } 2166 | }, 2167 | { 2168 | "type": "Feature", 2169 | "properties": { 2170 | "description": "M1 Sprucefield", 2171 | "url": "https://trafficwatchni.com/twni/cameras/static?id=4" 2172 | }, 2173 | "geometry": { 2174 | "type": "Point", 2175 | "coordinates": [ 2176 | -6.1772286, 2177 | 54.7072855 2178 | ] 2179 | } 2180 | }, 2181 | { 2182 | "type": "Feature", 2183 | "properties": { 2184 | "description": "M1 - Stockmans Lane", 2185 | "url": "https://trafficwatchni.com/twni/cameras/static?id=171" 2186 | }, 2187 | "geometry": { 2188 | "type": "Point", 2189 | "coordinates": [ 2190 | -6.1772286, 2191 | 54.7072855 2192 | ] 2193 | } 2194 | }, 2195 | { 2196 | "type": "Feature", 2197 | "properties": { 2198 | "description": "M1 Sprucefield", 2199 | "url": "https://trafficwatchni.com/twni/cameras/static?id=4" 2200 | }, 2201 | "geometry": { 2202 | "type": "Point", 2203 | "coordinates": [ 2204 | -6.1772286, 2205 | 54.7072855 2206 | ] 2207 | } 2208 | }, 2209 | { 2210 | "type": "Feature", 2211 | "properties": { 2212 | "description": "M1 Stockmans Lane", 2213 | "url": "https://trafficwatchni.com/twni/cameras/static?id=12" 2214 | }, 2215 | "geometry": { 2216 | "type": "Point", 2217 | "coordinates": [ 2218 | -6.1772286, 2219 | 54.7072855 2220 | ] 2221 | } 2222 | }, 2223 | { 2224 | "type": "Feature", 2225 | "properties": { 2226 | "description": "M2 - Duncrue St North (0B14)", 2227 | "url": "https://trafficwatchni.com/twni/cameras/static?id=207" 2228 | }, 2229 | "geometry": { 2230 | "type": "Point", 2231 | "coordinates": [ 2232 | -6.1772286, 2233 | 54.7072855 2234 | ] 2235 | } 2236 | }, 2237 | { 2238 | "type": "Feature", 2239 | "properties": { 2240 | "description": "Dublin Road, Antrim", 2241 | "url": "https://trafficwatchni.com/twni/cameras/static?id=193" 2242 | }, 2243 | "geometry": { 2244 | "type": "Point", 2245 | "coordinates": [ 2246 | -6.222879, 2247 | 54.7026708 2248 | ] 2249 | } 2250 | }, 2251 | { 2252 | "type": "Feature", 2253 | "properties": { 2254 | "description": "A1 Banbridge", 2255 | "url": "https://trafficwatchni.com/twni/cameras/static?id=15" 2256 | }, 2257 | "geometry": { 2258 | "type": "Point", 2259 | "coordinates": [ 2260 | -6.2704305, 2261 | 54.3393014 2262 | ] 2263 | } 2264 | }, 2265 | { 2266 | "type": "Feature", 2267 | "properties": { 2268 | "description": "A1 - Cloghoge - Newry", 2269 | "url": "https://trafficwatchni.com/twni/cameras/static?id=59" 2270 | }, 2271 | "geometry": { 2272 | "type": "Point", 2273 | "coordinates": [ 2274 | -6.3438811, 2275 | 54.1553518 2276 | ] 2277 | } 2278 | }, 2279 | { 2280 | "type": "Feature", 2281 | "properties": { 2282 | "description": "A1 - Hillsborough Road Roundabout", 2283 | "url": "https://trafficwatchni.com/twni/cameras/static?id=57" 2284 | }, 2285 | "geometry": { 2286 | "type": "Point", 2287 | "coordinates": [ 2288 | -6.3438811, 2289 | 54.1553518 2290 | ] 2291 | } 2292 | }, 2293 | { 2294 | "type": "Feature", 2295 | "properties": { 2296 | "description": "A1 Newry", 2297 | "url": "https://trafficwatchni.com/twni/cameras/static?id=18" 2298 | }, 2299 | "geometry": { 2300 | "type": "Point", 2301 | "coordinates": [ 2302 | -6.3145189, 2303 | 54.26406 2304 | ] 2305 | } 2306 | }, 2307 | { 2308 | "type": "Feature", 2309 | "properties": { 2310 | "description": "A6 Randalstown", 2311 | "url": "https://trafficwatchni.com/twni/cameras/static?id=39" 2312 | }, 2313 | "geometry": { 2314 | "type": "Point", 2315 | "coordinates": [ 2316 | -6.2950325, 2317 | 54.7422261 2318 | ] 2319 | } 2320 | }, 2321 | { 2322 | "type": "Feature", 2323 | "properties": { 2324 | "description": "A6 Randalstown", 2325 | "url": "https://trafficwatchni.com/twni/cameras/static?id=39" 2326 | }, 2327 | "geometry": { 2328 | "type": "Point", 2329 | "coordinates": [ 2330 | -6.2950325, 2331 | 54.7422261 2332 | ] 2333 | } 2334 | }, 2335 | { 2336 | "type": "Feature", 2337 | "properties": { 2338 | "description": "A6 Toome", 2339 | "url": "https://trafficwatchni.com/twni/cameras/static?id=40" 2340 | }, 2341 | "geometry": { 2342 | "type": "Point", 2343 | "coordinates": [ 2344 | -6.458363, 2345 | 54.7596713 2346 | ] 2347 | } 2348 | }, 2349 | { 2350 | "type": "Feature", 2351 | "properties": { 2352 | "description": "A6 Toome", 2353 | "url": "https://trafficwatchni.com/twni/cameras/static?id=40" 2354 | }, 2355 | "geometry": { 2356 | "type": "Point", 2357 | "coordinates": [ 2358 | -6.458363, 2359 | 54.7596713 2360 | ] 2361 | } 2362 | }, 2363 | { 2364 | "type": "Feature", 2365 | "properties": { 2366 | "description": "Old Bridge Coleraine", 2367 | "url": "https://trafficwatchni.com/twni/cameras/static?id=66" 2368 | }, 2369 | "geometry": { 2370 | "type": "Point", 2371 | "coordinates": [ 2372 | -6.463704, 2373 | 54.7554329 2374 | ] 2375 | } 2376 | }, 2377 | { 2378 | "type": "Feature", 2379 | "properties": { 2380 | "description": "A28 Markethill", 2381 | "url": "https://trafficwatchni.com/twni/cameras/static?id=21" 2382 | }, 2383 | "geometry": { 2384 | "type": "Point", 2385 | "coordinates": [ 2386 | -6.4920616, 2387 | 54.2860061 2388 | ] 2389 | } 2390 | }, 2391 | { 2392 | "type": "Feature", 2393 | "properties": { 2394 | "description": "M1 Tamnamore", 2395 | "url": "https://trafficwatchni.com/twni/cameras/static?id=13" 2396 | }, 2397 | "geometry": { 2398 | "type": "Point", 2399 | "coordinates": [ 2400 | -6.6771849, 2401 | 54.4933519 2402 | ] 2403 | } 2404 | }, 2405 | { 2406 | "type": "Feature", 2407 | "properties": { 2408 | "description": "Strand Rd Coleraine", 2409 | "url": "https://trafficwatchni.com/twni/cameras/static?id=64" 2410 | }, 2411 | "geometry": { 2412 | "type": "Point", 2413 | "coordinates": [ 2414 | -6.6761951, 2415 | 55.130846 2416 | ] 2417 | } 2418 | }, 2419 | { 2420 | "type": "Feature", 2421 | "properties": { 2422 | "description": "A1 - B10 Overbridge Junction", 2423 | "url": "https://trafficwatchni.com/twni/cameras/static?id=58" 2424 | }, 2425 | "geometry": { 2426 | "type": "Point", 2427 | "coordinates": [ 2428 | -6.6761951, 2429 | 55.130846 2430 | ] 2431 | } 2432 | }, 2433 | { 2434 | "type": "Feature", 2435 | "properties": { 2436 | "description": "Kilowen St Coleraine", 2437 | "url": "https://trafficwatchni.com/twni/cameras/static?id=67" 2438 | }, 2439 | "geometry": { 2440 | "type": "Point", 2441 | "coordinates": [ 2442 | -6.67953324196748, 2443 | 55.12045875 2444 | ] 2445 | } 2446 | }, 2447 | { 2448 | "type": "Feature", 2449 | "properties": { 2450 | "description": "Lodge Rd Rand#39;bout Lodge Coleraine", 2451 | "url": "https://trafficwatchni.com/twni/cameras/static?id=62" 2452 | }, 2453 | "geometry": { 2454 | "type": "Point", 2455 | "coordinates": [ 2456 | -6.67953324196748, 2457 | 55.12045875 2458 | ] 2459 | } 2460 | }, 2461 | { 2462 | "type": "Feature", 2463 | "properties": { 2464 | "description": "Lodge Rd Rand#39;bout Newbridge Coleraine", 2465 | "url": "https://trafficwatchni.com/twni/cameras/static?id=60" 2466 | }, 2467 | "geometry": { 2468 | "type": "Point", 2469 | "coordinates": [ 2470 | -6.67953324196748, 2471 | 55.12045875 2472 | ] 2473 | } 2474 | }, 2475 | { 2476 | "type": "Feature", 2477 | "properties": { 2478 | "description": "M22 - Dunsilly Roundabout", 2479 | "url": "https://trafficwatchni.com/twni/cameras/static?id=210" 2480 | }, 2481 | "geometry": { 2482 | "type": "Point", 2483 | "coordinates": [ 2484 | -6.67953324196748, 2485 | 55.12045875 2486 | ] 2487 | } 2488 | }, 2489 | { 2490 | "type": "Feature", 2491 | "properties": { 2492 | "description": "Greenmount Coleraine", 2493 | "url": "https://trafficwatchni.com/twni/cameras/static?id=65" 2494 | }, 2495 | "geometry": { 2496 | "type": "Point", 2497 | "coordinates": [ 2498 | -6.67953324196748, 2499 | 55.12045875 2500 | ] 2501 | } 2502 | }, 2503 | { 2504 | "type": "Feature", 2505 | "properties": { 2506 | "description": "A6 Glenshane Pass", 2507 | "url": "https://trafficwatchni.com/twni/cameras/static?id=22" 2508 | }, 2509 | "geometry": { 2510 | "type": "Point", 2511 | "coordinates": [ 2512 | -6.6768036, 2513 | 54.8350229 2514 | ] 2515 | } 2516 | }, 2517 | { 2518 | "type": "Feature", 2519 | "properties": { 2520 | "description": "Orritor Street/Willima Street, Cookstown", 2521 | "url": "https://trafficwatchni.com/twni/cameras/static?id=199" 2522 | }, 2523 | "geometry": { 2524 | "type": "Point", 2525 | "coordinates": [ 2526 | -6.7697007, 2527 | 54.5042961 2528 | ] 2529 | } 2530 | }, 2531 | { 2532 | "type": "Feature", 2533 | "properties": { 2534 | "description": "Market Square, Dungannon", 2535 | "url": "https://trafficwatchni.com/twni/cameras/static?id=198" 2536 | }, 2537 | "geometry": { 2538 | "type": "Point", 2539 | "coordinates": [ 2540 | -6.7697007, 2541 | 54.5042961 2542 | ] 2543 | } 2544 | }, 2545 | { 2546 | "type": "Feature", 2547 | "properties": { 2548 | "description": "Great Northern Road , Tamlaght Road (Homebase), Omagh", 2549 | "url": "https://trafficwatchni.com/twni/cameras/static?id=196" 2550 | }, 2551 | "geometry": { 2552 | "type": "Point", 2553 | "coordinates": [ 2554 | -6.7501246, 2555 | 54.4957129 2556 | ] 2557 | } 2558 | }, 2559 | { 2560 | "type": "Feature", 2561 | "properties": { 2562 | "description": "Gortmerron Link Road, Dungannon", 2563 | "url": "https://trafficwatchni.com/twni/cameras/static?id=197" 2564 | }, 2565 | "geometry": { 2566 | "type": "Point", 2567 | "coordinates": [ 2568 | -6.7501246, 2569 | 54.4957129 2570 | ] 2571 | } 2572 | }, 2573 | { 2574 | "type": "Feature", 2575 | "properties": { 2576 | "description": "Ballykelly", 2577 | "url": "https://trafficwatchni.com/twni/cameras/static?id=68" 2578 | }, 2579 | "geometry": { 2580 | "type": "Point", 2581 | "coordinates": [ 2582 | -7.0166599, 2583 | 55.044791 2584 | ] 2585 | } 2586 | }, 2587 | { 2588 | "type": "Feature", 2589 | "properties": { 2590 | "description": "Drumahoe Park and Ride", 2591 | "url": "https://trafficwatchni.com/twni/cameras/static?id=75" 2592 | }, 2593 | "geometry": { 2594 | "type": "Point", 2595 | "coordinates": [ 2596 | -7.28151341066481, 2597 | 54.97701405 2598 | ] 2599 | } 2600 | }, 2601 | { 2602 | "type": "Feature", 2603 | "properties": { 2604 | "description": "Caw Roundabout", 2605 | "url": "https://trafficwatchni.com/twni/cameras/static?id=71" 2606 | }, 2607 | "geometry": { 2608 | "type": "Point", 2609 | "coordinates": [ 2610 | -7.2771712, 2611 | 55.0094004 2612 | ] 2613 | } 2614 | }, 2615 | { 2616 | "type": "Feature", 2617 | "properties": { 2618 | "description": "Belt Road", 2619 | "url": "https://trafficwatchni.com/twni/cameras/static?id=69" 2620 | }, 2621 | "geometry": { 2622 | "type": "Point", 2623 | "coordinates": [ 2624 | -7.2984141, 2625 | 54.9807784 2626 | ] 2627 | } 2628 | }, 2629 | { 2630 | "type": "Feature", 2631 | "properties": { 2632 | "description": "Greenhaw", 2633 | "url": "https://trafficwatchni.com/twni/cameras/static?id=77" 2634 | }, 2635 | "geometry": { 2636 | "type": "Point", 2637 | "coordinates": [ 2638 | -7.3114264, 2639 | 55.0227412 2640 | ] 2641 | } 2642 | }, 2643 | { 2644 | "type": "Feature", 2645 | "properties": { 2646 | "description": "Culmore Roundabout", 2647 | "url": "https://trafficwatchni.com/twni/cameras/static?id=73" 2648 | }, 2649 | "geometry": { 2650 | "type": "Point", 2651 | "coordinates": [ 2652 | -7.30382379067324, 2653 | 55.02353185 2654 | ] 2655 | } 2656 | }, 2657 | { 2658 | "type": "Feature", 2659 | "properties": { 2660 | "description": "Dales Corner/A6 Glendermott Rd - A2 ColumbraTerrace", 2661 | "url": "https://trafficwatchni.com/twni/cameras/static?id=74" 2662 | }, 2663 | "geometry": { 2664 | "type": "Point", 2665 | "coordinates": [ 2666 | -7.30382379067324, 2667 | 55.02353185 2668 | ] 2669 | } 2670 | }, 2671 | { 2672 | "type": "Feature", 2673 | "properties": { 2674 | "description": "Rossdowney Road", 2675 | "url": "https://trafficwatchni.com/twni/cameras/static?id=78" 2676 | }, 2677 | "geometry": { 2678 | "type": "Point", 2679 | "coordinates": [ 2680 | -7.3002691, 2681 | 54.995395 2682 | ] 2683 | } 2684 | }, 2685 | { 2686 | "type": "Feature", 2687 | "properties": { 2688 | "description": "Great James Street", 2689 | "url": "https://trafficwatchni.com/twni/cameras/static?id=76" 2690 | }, 2691 | "geometry": { 2692 | "type": "Point", 2693 | "coordinates": [ 2694 | -7.3274966, 2695 | 55.0003033 2696 | ] 2697 | } 2698 | }, 2699 | { 2700 | "type": "Feature", 2701 | "properties": { 2702 | "description": "Strand Road", 2703 | "url": "https://trafficwatchni.com/twni/cameras/static?id=79" 2704 | }, 2705 | "geometry": { 2706 | "type": "Point", 2707 | "coordinates": [ 2708 | -7.3150402, 2709 | 55.012975 2710 | ] 2711 | } 2712 | }, 2713 | { 2714 | "type": "Feature", 2715 | "properties": { 2716 | "description": "Gaol Square, Enniskillen", 2717 | "url": "https://trafficwatchni.com/twni/cameras/static?id=200" 2718 | }, 2719 | "geometry": { 2720 | "type": "Point", 2721 | "coordinates": [ 2722 | -7.3150402, 2723 | 55.012975 2724 | ] 2725 | } 2726 | }, 2727 | { 2728 | "type": "Feature", 2729 | "properties": { 2730 | "description": "Dublin Road at Great Northern Road, Omagh", 2731 | "url": "https://trafficwatchni.com/twni/cameras/static?id=194" 2732 | }, 2733 | "geometry": { 2734 | "type": "Point", 2735 | "coordinates": [ 2736 | -7.3150402, 2737 | 55.012975 2738 | ] 2739 | } 2740 | }, 2741 | { 2742 | "type": "Feature", 2743 | "properties": { 2744 | "description": "Dromore Road at Asda, Omagh", 2745 | "url": "https://trafficwatchni.com/twni/cameras/static?id=195" 2746 | }, 2747 | "geometry": { 2748 | "type": "Point", 2749 | "coordinates": [ 2750 | -7.3150402, 2751 | 55.012975 2752 | ] 2753 | } 2754 | }, 2755 | { 2756 | "type": "Feature", 2757 | "properties": { 2758 | "description": "Craigavon Bridge", 2759 | "url": "https://trafficwatchni.com/twni/cameras/static?id=72" 2760 | }, 2761 | "geometry": { 2762 | "type": "Point", 2763 | "coordinates": [ 2764 | -7.3164636, 2765 | 54.989784 2766 | ] 2767 | } 2768 | }, 2769 | { 2770 | "type": "Feature", 2771 | "properties": { 2772 | "description": "Buncrana Road", 2773 | "url": "https://trafficwatchni.com/twni/cameras/static?id=70" 2774 | }, 2775 | "geometry": { 2776 | "type": "Point", 2777 | "coordinates": [ 2778 | -7.3579137, 2779 | 55.0335509 2780 | ] 2781 | } 2782 | }, 2783 | { 2784 | "type": "Feature", 2785 | "properties": { 2786 | "description": "Foyle Bridge", 2787 | "url": "https://trafficwatchni.com/twni/cameras/static?id=20" 2788 | }, 2789 | "geometry": { 2790 | "type": "Point", 2791 | "coordinates": [ 2792 | -7.4442503, 2793 | 52.7391422 2794 | ] 2795 | } 2796 | } 2797 | ] 2798 | } 2799 | -------------------------------------------------------------------------------- /static/css/leaflet.awesome-markers.css: -------------------------------------------------------------------------------- 1 | /* 2 | Author: L. Voogdt 3 | License: MIT 4 | Version: 1.0 5 | */ 6 | 7 | /* Marker setup */ 8 | .awesome-marker { 9 | background: url('images/markers-soft.png') no-repeat 0 0; 10 | width: 35px; 11 | height: 46px; 12 | position:absolute; 13 | left:0; 14 | top:0; 15 | display: block; 16 | text-align: center; 17 | } 18 | 19 | .awesome-marker-shadow { 20 | background: url('images/markers-shadow.png') no-repeat 0 0; 21 | width: 36px; 22 | height: 16px; 23 | } 24 | 25 | /* Retina displays */ 26 | @media (min--moz-device-pixel-ratio: 1.5),(-o-min-device-pixel-ratio: 3/2), 27 | (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5),(min-resolution: 1.5dppx) { 28 | .awesome-marker { 29 | background-image: url('images/markers-soft@2x.png'); 30 | background-size: 720px 46px; 31 | } 32 | .awesome-marker-shadow { 33 | background-image: url('images/markers-shadow@2x.png'); 34 | background-size: 35px 16px; 35 | } 36 | } 37 | 38 | .awesome-marker i { 39 | color: #333; 40 | margin-top: 10px; 41 | display: inline-block; 42 | font-size: 14px; 43 | } 44 | 45 | .awesome-marker .icon-white { 46 | color: #fff; 47 | } 48 | 49 | /* Colors */ 50 | .awesome-marker-icon-red { 51 | background-position: 0 0; 52 | } 53 | 54 | .awesome-marker-icon-darkred { 55 | background-position: -180px 0; 56 | } 57 | 58 | .awesome-marker-icon-lightred { 59 | background-position: -360px 0; 60 | } 61 | 62 | .awesome-marker-icon-orange { 63 | background-position: -36px 0; 64 | } 65 | 66 | .awesome-marker-icon-beige { 67 | background-position: -396px 0; 68 | } 69 | 70 | .awesome-marker-icon-green { 71 | background-position: -72px 0; 72 | } 73 | 74 | .awesome-marker-icon-darkgreen { 75 | background-position: -252px 0; 76 | } 77 | 78 | .awesome-marker-icon-lightgreen { 79 | background-position: -432px 0; 80 | } 81 | 82 | .awesome-marker-icon-blue { 83 | background-position: -108px 0; 84 | } 85 | 86 | .awesome-marker-icon-darkblue { 87 | background-position: -216px 0; 88 | } 89 | 90 | .awesome-marker-icon-lightblue { 91 | background-position: -468px 0; 92 | } 93 | 94 | .awesome-marker-icon-purple { 95 | background-position: -144px 0; 96 | } 97 | 98 | .awesome-marker-icon-darkpurple { 99 | background-position: -288px 0; 100 | } 101 | 102 | .awesome-marker-icon-pink { 103 | background-position: -504px 0; 104 | } 105 | 106 | .awesome-marker-icon-cadetblue { 107 | background-position: -324px 0; 108 | } 109 | 110 | .awesome-marker-icon-white { 111 | background-position: -574px 0; 112 | } 113 | 114 | .awesome-marker-icon-gray { 115 | background-position: -648px 0; 116 | } 117 | 118 | .awesome-marker-icon-lightgray { 119 | background-position: -612px 0; 120 | } 121 | 122 | .awesome-marker-icon-black { 123 | background-position: -682px 0; 124 | } 125 | -------------------------------------------------------------------------------- /static/js/leaflet.awesome-markers.js: -------------------------------------------------------------------------------- 1 | /* 2 | Leaflet.AwesomeMarkers, a plugin that adds colorful iconic markers for Leaflet, based on the Font Awesome icons 3 | (c) 2012-2013, Lennard Voogdt 4 | 5 | http://leafletjs.com 6 | https://github.com/lvoogdt 7 | */ 8 | 9 | /*global L*/ 10 | 11 | (function (window, document, undefined) { 12 | "use strict"; 13 | /* 14 | * Leaflet.AwesomeMarkers assumes that you have already included the Leaflet library. 15 | */ 16 | 17 | L.AwesomeMarkers = {}; 18 | 19 | L.AwesomeMarkers.version = '2.0.1'; 20 | 21 | L.AwesomeMarkers.Icon = L.Icon.extend({ 22 | options: { 23 | iconSize: [35, 45], 24 | iconAnchor: [17, 42], 25 | popupAnchor: [1, -32], 26 | shadowAnchor: [10, 12], 27 | shadowSize: [36, 16], 28 | className: 'awesome-marker', 29 | prefix: 'glyphicon', 30 | spinClass: 'fa-spin', 31 | extraClasses: '', 32 | icon: 'home', 33 | markerColor: 'blue', 34 | iconColor: 'white' 35 | }, 36 | 37 | initialize: function (options) { 38 | options = L.Util.setOptions(this, options); 39 | }, 40 | 41 | createIcon: function () { 42 | var div = document.createElement('div'), 43 | options = this.options; 44 | 45 | if (options.icon) { 46 | div.innerHTML = this._createInner(); 47 | } 48 | 49 | if (options.bgPos) { 50 | div.style.backgroundPosition = 51 | (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px'; 52 | } 53 | 54 | this._setIconStyles(div, 'icon-' + options.markerColor); 55 | return div; 56 | }, 57 | 58 | _createInner: function() { 59 | var iconClass, iconSpinClass = "", iconColorClass = "", iconColorStyle = "", options = this.options; 60 | 61 | if(options.icon.slice(0,options.prefix.length+1) === options.prefix + "-") { 62 | iconClass = options.icon; 63 | } else { 64 | iconClass = options.prefix + "-" + options.icon; 65 | } 66 | 67 | if(options.spin && typeof options.spinClass === "string") { 68 | iconSpinClass = options.spinClass; 69 | } 70 | 71 | if(options.iconColor) { 72 | if(options.iconColor === 'white' || options.iconColor === 'black') { 73 | iconColorClass = "icon-" + options.iconColor; 74 | } else { 75 | iconColorStyle = "style='color: " + options.iconColor + "' "; 76 | } 77 | } 78 | 79 | return ""; 80 | }, 81 | 82 | _setIconStyles: function (img, name) { 83 | var options = this.options, 84 | size = L.point(options[name === 'shadow' ? 'shadowSize' : 'iconSize']), 85 | anchor; 86 | 87 | if (name === 'shadow') { 88 | anchor = L.point(options.shadowAnchor || options.iconAnchor); 89 | } else { 90 | anchor = L.point(options.iconAnchor); 91 | } 92 | 93 | if (!anchor && size) { 94 | anchor = size.divideBy(2, true); 95 | } 96 | 97 | img.className = 'awesome-marker-' + name + ' ' + options.className; 98 | 99 | if (anchor) { 100 | img.style.marginLeft = (-anchor.x) + 'px'; 101 | img.style.marginTop = (-anchor.y) + 'px'; 102 | } 103 | 104 | if (size) { 105 | img.style.width = size.x + 'px'; 106 | img.style.height = size.y + 'px'; 107 | } 108 | }, 109 | 110 | createShadow: function () { 111 | var div = document.createElement('div'); 112 | 113 | this._setIconStyles(div, 'shadow'); 114 | return div; 115 | } 116 | }); 117 | 118 | L.AwesomeMarkers.icon = function (options) { 119 | return new L.AwesomeMarkers.Icon(options); 120 | }; 121 | 122 | }(this, document)); 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /static/js/supervision.js: -------------------------------------------------------------------------------- 1 | // map 2 | var map = L.map( 3 | "map", 4 | { 5 | center: [0, 0], 6 | crs: L.CRS.EPSG3857, 7 | zoom: 1, 8 | zoomControl: true, 9 | preferCanvas: false 10 | } 11 | ); 12 | L.control.scale().addTo(map); 13 | 14 | // tile layers 15 | var cosmodiumcsTileLayer = L.tileLayer( // cosmodiumcs custom tile layer 16 | "https://api.mapbox.com/styles/v1/cosmodiumcs/cl5cuv2ar000315o5qr197too/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoiY29zbW9kaXVtY3MiLCJhIjoiY2w1Y3VucHRjMDZtdjNkb3libjNlMjEyZSJ9.z2TV_0S6PuuIHS847jCq1A", 17 | {attribution: "© CosmodiumCS"} 18 | 19 | ).addTo(map); 20 | var satelliteTileLayer = L.tileLayer('http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'); // sattelite tile layer 21 | 22 | // minimap 23 | const miniMap = new L.Control.MiniMap(L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 24 | attribution: 'Map data © OpenStreetMap contributors', 25 | maxZoom: 18 26 | })).addTo(map); 27 | 28 | // geocoder 29 | var geocoder = L.Control.geocoder({ 30 | defaultMarkGeocode: false 31 | }).on('markgeocode', function(e) { 32 | map.fitBounds(e.geocode.bbox); 33 | }).addTo(map); 34 | 35 | // icons 36 | var cameraIcon = L.icon({ 37 | iconUrl: '{{ url_for("static", filename="assets/camera.png") }}', 38 | iconSize: [40, 40], 39 | }); 40 | var busIcon = L.icon({ 41 | iconUrl: '{{ url_for("static", filename="assets/bus.png") }}', 42 | iconSize: [40, 40], 43 | }); 44 | var boatIcon = L.icon({ 45 | iconUrl: '{{ url_for("static", filename="assets/boat.png") }}', 46 | iconSize: [40, 40], 47 | }); 48 | 49 | // var cameraIcon = L.icon({ // cameras 50 | // iconUrl: 'assets/camera.png', 51 | // iconSize: [40, 40], 52 | // }); 53 | // var busIcon = L.icon({ // buses 54 | // iconUrl: 'assets/bus.png', 55 | // iconSize: [40, 40], 56 | // }); 57 | // var boatIcon = L.icon({ // boats 58 | // iconUrl: 'assets/boat.png', 59 | // iconSize: [40, 40], 60 | // }); 61 | 62 | // cluster icons 63 | function cameraClusterIcon(cluster) { // cameras 64 | return L.divIcon({ 65 | html: '