|
1 | 1 | # GeoProcessor |
2 | | -a C# Net5 library and app for processing vehicle geolocation files, including snap-to-route. |
| 2 | +A C# Net5 library and app for processing vehicle geolocation files, |
| 3 | +snapping tracks/routes to roadways using the Bing or Google online |
| 4 | +snap-to-route processors (**note:** you'll need an account with Bing or Google to |
| 5 | +access those). |
| 6 | + |
| 7 | +### TL;DR |
| 8 | +The libarary source code should run anywhere Net5 is supported...but |
| 9 | +I've only tested it, and the executable, on Windows 10. |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +You will need a Bing or Google API key for the library and program to |
| 14 | +work. |
| 15 | + |
| 16 | +### Command line options |
| 17 | +|Key|Explanation|Default| |
| 18 | +|-------|---------------|-----------| |
| 19 | +|-i, --inputFile|the input file to process|*none*| |
| 20 | +|-n, --defaultName|default name for a route if none is specified in the input file|Unnamed Route| |
| 21 | +|-o, --outputFile|the output file to create<br/><br/>file type (e.g., kmz) will be derived from input file extension but can be overriden|*none*| |
| 22 | +|-t, --outputType|the type of output file to create. Must be one of *kml* or *kmz*| kml| |
| 23 | +|-p, --snapProcessor|the snap-to-route processor to use. Must be one of *Bing* or *Google*| Undefined | |
| 24 | +|-r, --runInteractive|force entry of all command line parameters regardless of whether or not they're specified in config file| false (not set)| |
| 25 | +|-k, --storeApiKey|prompt user for a snap-to-route processor's API key and store it, encrypted, in the app's user configuration| false (not set)| |
| 26 | + |
| 27 | +### Configuration Files |
| 28 | +The app has a general configuration file, in its program directory, for |
| 29 | +configuring the logging system, specifying how close raw coordinates should |
| 30 | +be to each other to be merged, etc. It's a simple JSON file that looks |
| 31 | +like this: |
| 32 | +```json |
| 33 | +{ |
| 34 | + "Processors": { |
| 35 | + "Distance": { |
| 36 | + "MaxDistanceMultiplier": 3, |
| 37 | + "MaxPointsPerRequest": -1, |
| 38 | + "MaxSeparation": "100 ft" |
| 39 | + }, |
| 40 | + "Bing": { |
| 41 | + "MaxPointsPerRequest": 100, |
| 42 | + "MaxSeparation": "2 km" |
| 43 | + }, |
| 44 | + "Google": { |
| 45 | + "MaxPointsPerRequest": 100, |
| 46 | + "MaxSeparation": "2 km" |
| 47 | + } |
| 48 | + }, |
| 49 | + "Logging": { |
| 50 | + "EventElements": "None", |
| 51 | + "SourceRootPath": "C:\\Programming\\KMLProcessor\\", |
| 52 | + "Channels": { |
| 53 | + "Debug": { |
| 54 | + "MinimumLevel": "Information" |
| 55 | + }, |
| 56 | + "Console": { |
| 57 | + "MinimumLevel": "Information" |
| 58 | + } |
| 59 | + } |
| 60 | + } |
| 61 | +} |
| 62 | +``` |
| 63 | +There's also a user configuration file which stores encrypted snap-to-route |
| 64 | +API keys, if those are defined by the user (i.e., not simply entered) |
| 65 | +each time the program is run). It looks like this: |
| 66 | +```json |
| 67 | +{ |
| 68 | + "APIKeys": { |
| 69 | + "Bing": { |
| 70 | + "EncryptedValue": "CfDJ8DZjcBUs1sNEu98tAdCI1mAkm...omitted for brevity" |
| 71 | + }, |
| 72 | + "Google": { |
| 73 | + "EncryptedValue": "CfDJ8DZjcBUs1sNEu98tAdCI1mCS2...omitted for brevity" |
| 74 | + } |
| 75 | + } |
| 76 | +} |
| 77 | +``` |
| 78 | +On Windows it's located at <br/> |
| 79 | +*C:\Users\\[username]\AppData\Local\J4JSoftware\GeoProcessor*. |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + |
0 commit comments