Geocek is a specialized tool for open-source intelligence (OSINT) research, designed to geolocate images based on visual cues such as license plates, road signage, infrastructure, and road layouts.
It employs a Constraint-Intersection Geolocation methodology, utilizing public OpenStreetMap (OSM) data via the Overpass API and Nominatim.
- No Paid APIs: Uses 100% free OpenStreetMap-based services.
- Plate Prefix Mapping: Automatically narrows search areas based on regional license plate prefixes (currently focusing on Indonesia).
- Landmark Normalization: Handles fuzzy mentions of POIs (Point of Interest) like hospitals, malls, etc.
- Road Infrastructure Logic: Filters by road classification, lane count, and presence of medians.
- Confidence Scoring: Weighted scoring system to estimate location probability.
- Multi-Output Format: Generates text reports, GeoJSON data, and interactive Folium maps.
- Ensure you have Python 3.11+ installed.
- Clone this repository or download the files.
- Install dependencies:
pip install -r requirements.txt
Generate geolocation candidates from an analysis JSON file:
python main.py -i tests/sample_input.json -f all -v-i, --input: Path to your visual metadata JSON file.-f, --format: Choose output betweenreport,geojson,map, orall.-o, --output-dir: Where to save results (default:output/).-v, --verbose: Enable detailed processing logs.
- Signal Extraction: Visual cues are parsed into a
SignalBundle. - Area Refinement: The search begins with a wide bounding box based on the license plate region, then refines via Nominatim geocoding of landmarks.
- Overpass Query: Searches for matching nodes and ways (hospitals, roads) within the refined bounding box.
- Constraint Filtering: Intersects candidates that meet multiple criteria (e.g., a hospital within 500m of a 4-lane primary road).
- Scoring & Estimation: Assigns a confidence score and estimates a radius error based on signal matches and spatial proximity.
This tool relies on the hard work of the OpenStreetMap community. Please respect the usage policies of the public APIs:
- Nominatim: Max 1 request per second.
- Overpass API: Use public instances sparingly.
Created as part of the Geocek internal toolsuite for OSINT research.