The location data is stored inside `oc_files_metadata`.
- `occ photos:update-1000-cities` to update the cities1000 file.
- `occ photos:map-media-to-location`to map picture coordinates to a location
- `ReverseGeoCoderService` download the necessary files and build the `KDTree`
- `UpdateReverseGeocodingFilesCommand` command to allow to manually create the needed reverse geocoding files
- `MediaLocationManager` to manager the location mappings
- `MapMediaToLocationCommand` command to manually trigger location data mapping. Useful for pre-existing pictures.
- `LocationManagerNodeEventListener` to react to node, user and share events.
- `MapMediaToLocationJob` to reduce the load in event listeners
```php
┌─────────────────────┐
┌────────────►│MapMediaToLocationJob│
│ └─────────┬───────────┘
│ │
┌────────────────────────┴───────┐ │
│LocationManagerNodeEventListener├──┐ ▼
└────────────────────────────────┘ │ ┌────────────────────┐ ┌──────────────┐
├─►│MediaLocationManager├────►│LocationMapper│
┌─────────────────────────┐ │ └─────────┬──────────┘ └──────────────┘
│MapMediaToLocationCommand├─────────┘ │
└─────────────────────────┘ │
▼
┌──────────────────────────────────┐ ┌──────────────────────┐
│UpdateReverseGeocodingFilesCommand├──►│ReverseGeoCoderService│
└──────────────────────────────────┘ └──────────────────────┘
```
Signed-off-by: Louis Chemineau <louis@chmn.me>