{"id":13425730,"url":"https://github.com/bmwcarit/barefoot","last_synced_at":"2025-04-13T00:48:22.847Z","repository":{"id":17711270,"uuid":"20525702","full_name":"bmwcarit/barefoot","owner":"bmwcarit","description":"Java map matching library for integrating the map into software and services with state-of-the-art online and offline map matching that can be used stand-alone and in the cloud.","archived":false,"fork":false,"pushed_at":"2023-04-14T17:11:38.000Z","size":38674,"stargazers_count":675,"open_issues_count":57,"forks_count":184,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-04-13T00:48:08.631Z","etag":null,"topics":["java","map","map-matching","openstreetmap","spatial-analysis","tracking"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bmwcarit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-06-05T13:19:58.000Z","updated_at":"2025-03-29T09:54:59.000Z","dependencies_parsed_at":"2023-10-20T18:29:42.907Z","dependency_job_id":null,"html_url":"https://github.com/bmwcarit/barefoot","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwcarit%2Fbarefoot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwcarit%2Fbarefoot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwcarit%2Fbarefoot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bmwcarit%2Fbarefoot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bmwcarit","download_url":"https://codeload.github.com/bmwcarit/barefoot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650437,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","map","map-matching","openstreetmap","spatial-analysis","tracking"],"created_at":"2024-07-31T00:01:17.533Z","updated_at":"2025-04-13T00:48:22.823Z","avatar_url":"https://github.com/bmwcarit.png","language":"Java","funding_links":[],"categories":["Java","Simultaneous Localization and Mapping","Localization"],"sub_categories":["Vector Map","SLAM"],"readme":"# Barefoot\n\nAn open source Java library for online and offline map matching with OpenStreetMap. Together with its extensive set of geometric and spatial functions, an in-memory map data structure and basic machine learning functions, it is a versatile basis for scalable location-based services and spatio-temporal data analysis on the map. It is designed for use in parallel and distributed systems and, hence, includes a stand-alone map matching server and can be used in distributed systems for map matching services in the cloud.\n\n#### Flexible and extensive\n\nBarefoot consists of a software library and a (Docker-based) map server that provides access to street map data from OpenStreetMap and is flexible to be used in distributed cloud infrastructures as map data server or side-by-side with Barefoot's stand-alone servers for offline (matcher server) and online map matching (tracker server), or other applications built with Barefoot library. Access to map data is provided with a fast and flexible in-memory map data structure. Together with GeographicLib [1] and ESRI's geometry API [2], it provides an extensive set of geographic and geometric operations for spatial data analysis on the map.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/barefoot-ecosystem.png?raw=true\" width=\"650\"\u003e\n\u003c/p\u003e\n\n#### State-of-the-art map matching\n\nBarefoot includes a Hidden Markov Model map matching implementation for both, offline map matching as proposed by Newson and Krumm in [3] and online map matching as proposed by Goh et al. in [4]. Offline map matching is the path reconstruction of a moving object from a recorded GPS trace. In contrast, online map matching determines an object's position and movement on the map iteratively from live GPS position updates in real-time.\n\n#### Scalable and versatile\n\nBarefoot is designed for use in parallel and distributed high-throughput systems [5]. For map matching large batches of GPS traces (offline map matching), it can be easily integrated in Apache Hadoop or Apache Spark (see example below), whereas Apache Storm and Apache Spark Streaming provide a runtime environment for processing massive data streams (online map matching). To support other data analysis functions, Barefoot comes with basic machine learning support, e.g., DBSCAN for spatial cluster analysis [6].\n\n#### Open source and open data\n\nBarefoot is licensed under the business-friendly Apache License 2.0 and uses only business-friendly open source software with open map data from OpenStreetMap.\n\n## Documentation\n\n### Manual\n\nSee [wiki](https://github.com/bmwcarit/barefoot/wiki).\n\n### Javadoc\n\nSee [Javadoc](http://bmwcarit.github.io/barefoot/doc/index.html).\n\n## Showcases and Quick Starts\n\n### Online and offline HMM map matching \n\nBarefoot provides a HMM map matching solution that can be used via the software library API, see the [wiki](https://github.com/bmwcarit/barefoot/wiki#hmm-map-matching), or via REST-like APIs provided with the stand-alone servers (matcher and tracker servers), see below or the [wiki](https://github.com/bmwcarit/barefoot/wiki#stand-alone-servers). This map matching solution covers both, online and offline map matching:\n\n- __Offline map matching__: Most map matching applications rely on the matching of a sequence of position measurements recorded in the past (traces) for reconstruction of the object's path on the map. Offline map matching finds the best matching  on the map and exploits availability of the full trace.\n- __Online map matching__: In many other applications, objects send position updates to some monitoring system periodically. An online map matching system matches each position update right away and, hence, keeps track of the objects' movements on the map in (near) real-time.\n\nAccuracy of map matching depends mostly on the quality and quantity of input data, which consists of a sequence of measurement samples over time (including position measurement). Samples are submitted as a whole sequence for offline map matching or one after another for online map matching. A single sample includes the following information:\n\n- __time__ of the measurement sample which is given in unix time.\n- __position__ of the object (point in space, e.g. GPS measurement).\n- __heading__ of the object (azimuth measurement) which is optional and, if available, increases map matching accuracy.\n\n#### Matcher server (Quick Start)\n\nMap matching of a GPS trace (violet markers) in Munich city area shown as geometrical path (orange path)\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/matcher/matching-satellite.png\" width=\"700\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.mapbox.com/about/maps/\"\u003e\u0026#xA9; Mapbox\u003c/a\u003e \u003ca href=\"http://www.openstreetmap.org/\"\u003e\u0026#xA9; OpenStreetMap\u003c/a\u003e \u003ca href=\"https://www.mapbox.com/map-feedback/\"\u003e\u003cb\u003eImprove this map\u003c/b\u003e\u003c/a\u003e \u003ca href=\"https://www.digitalglobe.com/\"\u003e\u0026#xA9; DigitalGlobe\u003c/a\u003e \u003ca href=\"http://geojson.io\"\u003e\u0026#xA9; geojson.io\u003c/a\u003e\n\u003c/p\u003e\n\n##### Map server\n\n_Note: The following example uses the setup of the test map server. For further details, see the [wiki](https://github.com/bmwcarit/barefoot/wiki#map-server)._\n\n1. Install prerequisites.\n\n    - Docker Engine (version 1.6 or higher, see [https://docs.docker.com/installation/ubuntulinux/](https://docs.docker.com/installation/ubuntulinux/))\n\n2. Download OSM extract (examples require `oberbayern.osm.pbf`)\n\n    ``` bash\n    curl http://download.geofabrik.de/europe/germany/bayern/oberbayern-latest.osm.pbf -o barefoot/map/osm/oberbayern.osm.pbf\n    ```\n\n3. Build Docker image.\n\n    ``` bash\n    cd barefoot\n    sudo docker build -t barefoot-map ./map\n    ```\n\n4. Create Docker container.\n\n    ``` bash\n    sudo docker run -it -p 5432:5432 --name=\"barefoot-oberbayern\" -v ${PWD}/map/:/mnt/map barefoot-map\n    ```\n\n5. Import OSM extract (in the container).\n  \n    ``` bash\n    root@acef54deeedb# bash /mnt/map/osm/import.sh\n    ```\n\n    _Note: To detach the interactive shell from a running container without stopping it, use the escape sequence Ctrl-p + Ctrl-q._\n\n6. Make sure the container is running (\"up\").\n\n    ``` bash\n    sudo docker ps -a\n    ...\n    ```\n\n    _Note: The output of the last command should show status 'Up x seconds'._\n\n##### Matcher server\n\n_Note: The following example is a quick start setup. For further details, see the [wiki](https://github.com/bmwcarit/barefoot/wiki#matcher-server)._\n\n1. Install prerequisites.\n\n    - Maven (e.g. with `sudo apt-get install maven`)\n    - Java JDK (Java version 7 or higher, e.g. with `sudo apt-get install openjdk-1.7-jdk`)\n\n2. Package Barefoot JAR. (Includes dependencies and executable main class.)\n\n    ``` bash\n    mvn package\n    ```\n\n    _Note: Add `-DskipTests` to skip tests._\n\n3. Start server with standard configuration for map server and map matching, and option for GeoJSON output format.\n\n    ``` bash\n    java -jar target/barefoot-\u003cVERSION\u003e-matcher-jar-with-dependencies.jar --geojson config/server.properties config/oberbayern.properties\n    ```\n\n    _Note: Stop server with Ctrl-c._\n\n    _Note: In case of 'parse errors', use the following Java options: `-Duser.language=en -Duser.country=US`_\n\n4. Test setup with provided sample data.\n\n    ``` bash\n    python util/submit/batch.py --host localhost --port 1234  --file src/test/resources/com/bmwcarit/barefoot/matcher/x0001-015.json\n    SUCCESS\n    ...\n    ```\n\n    _Note: On success, i.e. result code is SUCCESS, the output can be visualized with [http://geojson.io/](http://geojson.io/) and should show the same path as in the figure above. Otherwise, result code is either TIMEOUT or ERROR._\n\n#### Tracker server (Quick Start)\n\nOnline (real-time) map matching of a GPS trace in Munich city area with most likely position (blue dot) and alternative possible positions and routes (green dots and paths with transparency according to their probability). Alternative positions and routes disappear with continuously processed updates, which shows the principle of online map matching converging alternatives over time.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/tracker/monitor-1600x1000.gif\" width=\"650\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.mapbox.com/about/maps/\"\u003e\u0026#xA9; Mapbox\u003c/a\u003e \u003ca href=\"http://www.openstreetmap.org/\"\u003e\u0026#xA9; OpenStreetMap\u003c/a\u003e \u003ca href=\"https://www.mapbox.com/map-feedback/\"\u003e\u003cb\u003eImprove this map\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n##### Map server\n\n(see above)\n\n##### Tracker server\n\n_Note: The following example is a quick start setup. For further details, see the [wiki](https://github.com/bmwcarit/barefoot/wiki#tracker-server)._\n\n1. Install prerequisites.\n\n    - Maven (e.g. with `sudo apt-get install maven`)\n    - Java JDK (Java version 7 or higher, e.g. with `sudo apt-get install openjdk-1.7-jdk`)\n    - ZeroMQ (e.g. with `sudo apt-get install libzmq3-dev`)\n    - NodeJS (e.g. with `sudo apt-get install nodejs`)\n\n2. Package Barefoot JAR. (Includes dependencies and executable main class.)\n\n    ``` bash\n    mvn package\n    ```\n\n    _Note: Add `-DskipTests` to skip tests._\n\n3. Start tracker with standard configuration for map server, map matching, and tracking.\n\n    ``` bash\n    java -jar target/barefoot-\u003cVERSION\u003e-tracker-jar-with-dependencies.jar config/tracker.properties config/oberbayern.properties\n    ```\n\n    _Note: Stop server with Ctrl-c._\n\n    _Note: In case of 'parse errors', use the following Java options: `-Duser.language=en -Duser.country=US`_\n\n4. Install and start monitor (NodeJS server).\n\n    Install (required only once)\n    ``` bash\n    cd util/monitor \u0026\u0026 npm install \u0026\u0026 cd ../..\n    ```\n    ... and start:\n    ``` bash\n    node util/monitor/monitor.js 3000 127.0.0.1 1235\n      ```\n\n5. Test setup with provided sample data.\n\n    ``` bash\n    python util/submit/stream.py --host localhost --port 1234 --file src/test/resources/com/bmwcarit/barefoot/matcher/x0001-001.json\n    SUCCESS\n    ...\n    ```\n\n    _Note: On success, i.e. result code is SUCCESS, the tracking is visible in the browser on [http://localhost:3000](http://localhost:3000). Otherwise, result code is either TIMEOUT or ERROR._\n\n### Spatial search and operations\n\n#### Spatial operations\n\nA straight line between two points, here Reykjavik (green marker) and Moskva (blue marker), on the earth surface is  a geodesic (orange). The closest point on a geodesic to another point, here Berlin (violet marker), is referred to as the interception point (red marker).\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/spatial/intercept-satellite.png\" width=\"700\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.mapbox.com/about/maps/\"\u003e\u0026#xA9; Mapbox\u003c/a\u003e \u003ca href=\"http://www.openstreetmap.org/\"\u003e\u0026#xA9; OpenStreetMap\u003c/a\u003e \u003ca href=\"https://www.mapbox.com/map-feedback/\"\u003e\u003cb\u003eImprove this map\u003c/b\u003e\u003c/a\u003e \u003ca href=\"https://www.digitalglobe.com/\"\u003e\u0026#xA9; DigitalGlobe\u003c/a\u003e \u003ca href=\"http://geojson.io\"\u003e\u0026#xA9; geojson.io\u003c/a\u003e\n\u003c/p\u003e\n\n``` java\nimport com.bmwcarit.barefoot.spatial.Geography;\nimport com.bmwcarit.barefoot.spatial.SpatialOperator;\n\nimport com.esri.core.geometry.Point;\n\nSpatialOperator spatial = new Geography();\n\nPoint reykjavik = new Point(-21.933333, 64.15);\nPoint moskva = new Point(37.616667, 55.75);\nPoint berlin = new Point(13.408056, 52.518611);\n\ndouble f = spatial.intercept(reykjavik, moskva, berlin);\nPoint interception = spatial.interpolate(reykjavik, moskva, f);\n```\n\nOther spatial operations and formats provided with GeographicLib and ESRI Geometry API:\n\n- Geodesics on ellipsoid of rotation (lines on earth surface)\n- Calculation of distances, interception, intersection, etc.\n- WKT (well-known-text) import/export\n- GeoJSON import/export\n- Geometric operations (convex hull, overlap, contains, etc.)\n- Quad-tree spatial index\n\n#### Spatial search\n\nSpatial search in the road map requires access to spatial data of the road map and spatial operations for distance and point-to-line projection. Barefoot implements the following basic search operations:\n\n- radius\n- nearest\n- k-nearest (kNN)\n\nThe following code snippet shows a radius search given a certain map:\n\n``` java\nimport com.bmwcarit.barefoot.roadmap.Loader;\nimport com.bmwcarit.barefoot.roadmap.Road;\nimport com.bmwcarit.barefoot.roadmap.RoadMap;\n\nimport com.esri.core.geometry.GeometryEngine;\n\nRoadMap map = Loader.roadmap(\"config/oberbayern.properties\", true).construct();\n\nPoint c = new Point(11.550474464893341, 48.034123185269095);\ndouble r = 50; // radius search within 50 meters\nSet\u003cRoadPoint\u003e points = map.spatial().radius(c, r);\n\nfor (RoadPoint point : points) {\n\tGeometryEngine.geometryToGeoJson(point.geometry()));\n\tGeometryEngine.geometryToGeoJson(point.edge().geometry()));\n}\n```\n\nA radius search, given a center point (red marker), returns road segments (colored lines) with their closest points (colored markers) on the road.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/spatial/radius-satellite.png\" width=\"700\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.mapbox.com/about/maps/\"\u003e\u0026#xA9; Mapbox\u003c/a\u003e \u003ca href=\"http://www.openstreetmap.org/\"\u003e\u0026#xA9; OpenStreetMap\u003c/a\u003e \u003ca href=\"https://www.mapbox.com/map-feedback/\"\u003e\u003cb\u003eImprove this map\u003c/b\u003e\u003c/a\u003e \u003ca href=\"https://www.digitalglobe.com/\"\u003e\u0026#xA9; DigitalGlobe\u003c/a\u003e \u003ca href=\"http://geojson.io\"\u003e\u0026#xA9; geojson.io\u003c/a\u003e\n\u003c/p\u003e\n\n### Simple routing (Dijkstra)\n\nTBD.\n\n### Spatial cluster analysis\n\nSpatial cluster analysis aggregates point data to high density clusters for detecting e.g. points of interest like frequent start and end points of trips. For that purpose, Barefoot includes a DBSCAN implementation for simple density-based spatial cluster analysis, which is an unsupervised machine learning algorithm. For details, see the [wiki](https://github.com/bmwcarit/barefoot/wiki#spatial-cluster-analysis).\n\nThe following code snippet shows the simple usage of the algorithm: \n\n``` java\nimport com.bmwcarit.barefoot.analysis.DBSCAN;\n\nimport com.esri.core.geometry.GeometryEngine;\nimport com.esri.core.geometry.MultiPoint;\nimport com.esri.core.geometry.Point;\n\nList\u003cPoint\u003e points = new LinkedList\u003cPoint\u003e();\n...\n// DBSCAN algorithm with radius neighborhood of 100 and minimum density of 10\nSet\u003cList\u003cPoint\u003e\u003e clusters = DBSCAN.cluster(points, 100, 10);\n\nfor (List\u003cPoint\u003e cluster : clusters) {\n\tMultiPoint multipoint = new MultiPoint();\n\tfor (Point point : cluster) {\n\t\tmultipoint.add(point);\n\t}\n\tGeometryEngine.geometryToGeoJson(multipoint);\n}\n```\n\nAs an example, the figure below shows typical locations for standing times of a New York City taxi driver (hack license BA96DE419E711691B9445D6A6307C170) derived by spatial cluster analysis of start and end points of all trips in January 2013. For details on the data set, see below.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"doc-files/com/bmwcarit/barefoot/analysis/dbscan-satellite.png\" width=\"700\"\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://www.mapbox.com/about/maps/\"\u003e\u0026#xA9; Mapbox\u003c/a\u003e \u003ca href=\"http://www.openstreetmap.org/\"\u003e\u0026#xA9; OpenStreetMap\u003c/a\u003e \u003ca href=\"https://www.mapbox.com/map-feedback/\"\u003e\u003cb\u003eImprove this map\u003c/b\u003e\u003c/a\u003e \u003ca href=\"https://www.digitalglobe.com/\"\u003e\u0026#xA9; DigitalGlobe\u003c/a\u003e \u003ca href=\"http://geojson.io\"\u003e\u0026#xA9; geojson.io\u003c/a\u003e\n\u003c/p\u003e\n\n## License\n\nCopyright 2015 BMW Car IT GmbH\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n## Maintainer(s)\n\n- Sebastian Mattheis\n\n## Dependencies\n\n#### Barefoot library\n\n_The following dependencies are linked only dynamically in the Java source of Barefoot. They can be resolved usually automatically with Maven. For details, see [NOTICE.txt](NOTICE.txt)._\n\n* ESRI Geometry API, 1.1, Apache-2.0 ([https://github.com/Esri/geometry-api-java](https://github.com/Esri/geometry-api-java))\n  * Java, JSON 20090211 (see below)\n  * Jackson, 1.9.12, Apache-2.0 ([https://github.com/FasterXML/jackson-core](https://github.com/FasterXML/jackson-core))\n* GeographicLib-Java, 1.46, MIT License ([http://geographiclib.sourceforge.net/](http://geographiclib.sourceforge.net/))\n* Java JSON, 20090211, MIT License with extra clause \"The Software shall be used for Good, not Evil.\" ([http://www.json.org](http://www.json.org))\n* PostgreSQL JDBC, 9.2-1003-jdbc4, BSD 3-Clause ([http://jdbc.postgresql.org/about/license.html](http://jdbc.postgresql.org/about/license.html))\n* JUnit, 4.11, CPL-1.0 ([https://github.com/junit-team/junit](https://github.com/junit-team/junit))\n  * Hamcrest, 1.3, BSD 3-Clause ([https://github.com/hamcrest/JavaHamcrest](https://github.com/hamcrest/JavaHamcrest))\n* SLF4J, 1.7.10, MIT License ([http://slf4j.org](http://slf4j.org))\n* Logback, 1.0.9, LGPL-2.1 ([http://logback.qos.ch](http://logback.qos.ch/))\n  * SLF4J, 1.7.10 (see above)\n  * Logback core, 1.0.9, LGPL-2.1 ([http://logback.qos.ch](http://logback.qos.ch/))\n* JeroMQ, 0.3.5, LGPL-3.0 ([https://github.com/zeromq/jeromq](https://github.com/zeromq/jeromq))\n\n#### Barefoot map\n\n_The following dependencies are not linked in any source but used for setting up map servers._\n\n* Docker, Apache License 2.0 ([https://www.docker.com](https://www.docker.com))\u003cbr/\u003e\n  _Note: Docker is used only as a tool for setting up map databases, e.g. in the test setup._\n* PostgreSQL, PostgreSQL License ([http://www.postgresql.org/](http://www.postgresql.org/))\n* PostGIS, GPL-2.0 ([http://postgis.net/](http://postgis.net/))\n* Osmosis, GPL-3 ([https://github.com/openstreetmap/osmosis](https://github.com/openstreetmap/osmosis))\u003cbr/\u003e\n  _Note: A single file from Osmosis project, i.e. pgsnapshot_schema_0.6.sql, is included in directory map/osm but is not compiled in any binary._\n* OpenStreetMap, ODbL ([http://download.geofabrik.de](http://download.geofabrik.de))\u003cbr/\u003e\n  _Note: A sample, i.e. oberbayern.osm.pbf, is required for testing but not included in the source repository._\n\n##### Barefoot map tools\n\n_The following dependencies are linked only dynamically in the Python source of map server tools for importing data into the map server._\n\n* psycopg 'psycopg2', LGPL-3.0 ([http://initd.org/psycopg/license/](http://initd.org/psycopg/license/))\n* NumPy 'numpy', BSD 3-Clause ([http://www.numpy.org/](http://www.numpy.org/))\n* GDAL OGR 'osgeo.ogr' 1.10, MIT License ([http://trac.osgeo.org/gdal/wiki/GdalOgrInPython](http://trac.osgeo.org/gdal/wiki/GdalOgrInPython))\n* Python Standard Library 2.7.3, Python License ([https://docs.python.org/2/license.html](https://docs.python.org/2/license.html))\n  * 'os' ([https://docs.python.org/2/library/os.html](https://docs.python.org/2/library/os.html))\n  * 'optparse' ([https://docs.python.org/2/library/optparse.html](https://docs.python.org/2/library/optparse.html))\n  * 'getpass' ([https://docs.python.org/2/library/getpass.html](https://docs.python.org/2/library/getpass.html))\n  * 'binascii' ([https://docs.python.org/2/library/binascii.html](https://docs.python.org/2/library/binascii.html))\n  * 'json' ([https://docs.python.org/2/library/json.html](https://docs.python.org/2/library/json.html))\n  * 'unittest' ([https://docs.python.org/2/library/unittest.html](https://docs.python.org/2/library/unittest.html))\n\n#### Barefoot utilities\n\n##### Barefoot monitor\n\n_The following dependencies are linked only dynamically in the NodeJS source of the monitor._\n\n* Socket.io, 1.4.4, and packages, MIT License ([http://socket.io/](http://socket.io/))\n* Express, 4.13.4, and packages, MIT License ([https://github.com/strongloop/express](https://github.com/strongloop/express))\n  * inherits, 2.0.1, ISC License ([https://www.npmjs.com/package/inherits](https://www.npmjs.com/package/inherits))\n  * qs, 4.0.0, BSD 3-Clause ([https://www.npmjs.com/package/qs](https://www.npmjs.com/package/qs))\n* ZeroMQ (NodeJS binding), 2.14.0, MIT License ([https://github.com/JustinTulloss/zeromq.node](https://github.com/JustinTulloss/zeromq.node))\n  * ZeroMQ (C++), LGPL-3.0 ([https://github.com/zeromq/libzmq](https://github.com/zeromq/libzmq))\n\n_The following dependencies are linked only dynamically in the Javascript source of the monitor._\n\n* OpenLayers 3, BSD 2-Clause ([https://github.com/openlayers/ol3](https://github.com/openlayers/ol3))\n* jQuery, MIT License ([http://jquery.com/](http://jquery.com/))\n* Socket.io.js, MIT License ([http://socket.io/](http://socket.io/))\n\n##### Job submission scripts\n\n_The following dependencies are linked only dynamically in the Python source of the submission scripts._\n\n* Requests, 2.6.2, Apache License 2.0 ([https://github.com/kennethreitz/requests](https://github.com/kennethreitz/requests))\n* Python Standard Library 2.7.3, Python License ([https://docs.python.org/2/license.html](https://docs.python.org/2/license.html))\n  * 'os' ([https://docs.python.org/2/library/os.html](https://docs.python.org/2/library/os.html))\n  * 'sys' ([https://docs.python.org/2/library/sys.html](https://docs.python.org/2/library/sys.html))\n  * 'optparse' ([https://docs.python.org/2/library/optparse.html](https://docs.python.org/2/library/optparse.html))\n  * 'json' ([https://docs.python.org/2/library/json.html](https://docs.python.org/2/library/json.html))\n  * 'subprocess' ([https://docs.python.org/2/library/subprocess.html](https://docs.python.org/2/library/subprocess.html))\n  * 'time' ([https://docs.python.org/2/library/time.html](https://docs.python.org/2/library/time.html))\n  * 'datetime' ([https://docs.python.org/2/library/datetime.html](https://docs.python.org/2/library/datetime.html))\n\n##### Documentation\n* OpenJUMP, GPL-2.0 ([http://www.openjump.org](http://www.openjump.org))\u003cbr/\u003e\n  _Note: OpenJUMP project files included in directory openjump for test and debugging purposes._\n* Documents and graphics, CC BY 4.0 ([http://creativecommons.org/licenses/by/4.0/legalcode](http://creativecommons.org/licenses/by/4.0/legalcode))\u003cbr/\u003e\n  _Note: The documentation includes PNG, PDF, TikZ/LaTeX, and Markdown files for this project (mainly included in directory doc-files) and is licensed under CC BY 4.0._\n\n##### Datasets\n\n* Some tests and examples use an extract of NYC taxi data which is included in the source repository. The data is licensed under CC0 license (Public Domain). For details see:\n  _Brian Donovan and Daniel B. Work  “New York City Taxi Trip Data (2010-2013)”. 1.0. University of Illinois at Urbana-Champaign. Dataset. http://dx.doi.org/10.13012/J8PN93H8, 2014._\n\n## References\n\n[1] [GeographicLib](http://geographiclib.sourceforge.net/).\n\n[2] [ESRI's Geometry API](https://github.com/Esri/geometry-api-java).\n\n[3] P. Newson and J. Krumm. [Hidden Markov Map Matching Through Noise and Sparseness](http://research.microsoft.com/en-us/um/people/jckrumm/Publications%202009/map%20matching%20ACM%20GIS%20camera%20ready.pdf). In _Proceedings of International Conference on Advances in Geographic Information Systems_, 2009.\n\n[4] C.Y. Goh, J. Dauwels, N. Mitrovic, M.T. Asif, A. Oran, and P. Jaillet. [Online map-matching based on Hidden Markov model for real-time traffic sensing applications](http://www.mit.edu/~jaillet/general/map_matching_itsc2012-final.pdf). In _International IEEE Conference on Intelligent Transportation Systems_, 2012.\n\n[5] S. Mattheis, K. Al-Zahid, B. Engelmann, A. Hildisch, S. Holder, O. Lazarevych, D. Mohr, F. Sedlmeier, and R. Zinck. [Putting the car on the map: A scalable map matching system for the Open Source Community](http://subs.emis.de/LNI/Proceedings/Proceedings232/2109.pdf). In _INFORMATIK 2014: Workshop Automotive Software Engineering_, 2014.\n\n[6] M. Ester, H.-P. Kriegel, J. Sander, X. Xu. [A Density-based algorithm for discovering clusters in large spatial databases with noise](https://www.aaai.org/Papers/KDD/1996/KDD96-037.pdf). In _Proceedings of the Second International Conference on Knowledge Discovery and Data Mining (KDD-96)_, 1996. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmwcarit%2Fbarefoot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbmwcarit%2Fbarefoot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbmwcarit%2Fbarefoot/lists"}