address-geocoding

Convert Montréal addresses to coordinates using Nominatim and open dataset lookups.

1|Updated Mar 13, 2026
One-click install
npx skills add https://github.com/alistaircroll/montreal-open-data --skill address-geocoding-alistaircroll
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: address-geocoding
Source: https://github.com/alistaircroll/montreal-open-data/tree/main/skills/geo/address-geocoding
Command: npx skills add https://github.com/alistaircroll/montreal-open-data --skill address-geocoding-alistaircroll

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Montréal's CKAN open data portal has no dedicated geocoding API, making it hard to convert street addresses into coordinates for spatial analysis. This Skill provides proven strategies to geocode and reverse-geocode Montréal addresses using open data sources and free APIs. ## Core Features & Use Cases - Dataset-Based Coordinate Extraction: Query existing datasets (building permits, tree inventory) to extract latitude/longitude for known addresses via SQL. - Nominatim Geocoding: Forward and reverse geocoding through OpenStreetMap's free API with built-in rate-limit compliance (1 request/second). - Address Normalization: Handle Québec address conventions, French street names, abbreviations, accents, and civic number ranges. - Coordinate System Conversion: Guidance for converting NAD83 MTM8 (EPSG:32188) survey coordinates to WGS84 (EPSG:4326). - Use Case: A user asks "What crimes were reported near 3575 Parc Avenue?" — the Skill geocodes the address, determines the borough, and enables a proximity query against the crime dataset. ## Quick Start Geocode the address 3575 avenue du Parc, Montréal and tell me which borough it belongs to.

Frequently Asked Questions about address-geocoding

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I geocode a Montréal address without a city geocoding API?

Montréal's CKAN portal has no geocoding API, so use Nominatim (OpenStreetMap) for free geocoding with a 1 request/second rate limit. Alternatively, extract coordinates directly from datasets like building permits or the tree inventory that already store addresses with lat/lon.

How to convert MTM8 coordinates to latitude and longitude?

Use the pyproj library with a Transformer from EPSG:32188 (NAD83 MTM8) to EPSG:4326 (WGS84) for precise conversion. A rough linear approximation works for Montréal-only estimates, but pyproj is recommended for accuracy.

Does Nominatim have rate limits for geocoding?

Yes, Nominatim enforces a strict limit of 1 request per second. Batch geocoding requires adding a one-second sleep between requests and setting a descriptive User-Agent header to avoid being blocked.

Why does address matching fail on Montréal street names?

Failures usually come from French formatting: street names use French forms like "rue Saint-Denis", accents matter ("Côte-des-Neiges" vs "Cote-des-Neiges"), and abbreviations like "av." or "boul." vary across datasets. Normalize addresses before matching.

How do I find the borough for a Montréal address?

Geocode the address, then find the nearest borough center using a borough lookup table. For precise matching, download the limites-administratives-agglomeration GeoJSON and run a point-in-polygon test with the shapely library.