# OSM2CDR — Vector Map Export Service > Export OpenStreetMap data to 133+ professional formats (CDR, DWG, DXF, SVG, PDF, AI, SHP, GeoJSON, KML, STL, IFC, PMTiles, and 120+ more) with 85 map styles, 165 coordinate systems, and 55 UI languages. ## About OSM2CDR (osm2cdr.com) is a web service that converts OpenStreetMap (OSM) data into professional vector, raster, CAD, GIS, 3D/BIM, navigation, and transport map formats. Users select an area on an interactive map, choose export format and style, and receive high-quality files suitable for CAD, GIS, design, printing, 3D modeling, navigation devices, and urban analysis. The service is built on PostGIS with 2.9 million indexed places across 179 countries, QGIS headless rendering, and a WKB fast-path pipeline for high-performance spatial exports. ## Features - 133+ export formats across 8 categories - 85 map styles (standard, blueprint, vintage, neon, satellite-hybrid, and more) - 165 coordinate reference systems (43 popular worldwide + 122 Russian MSK zones) - 55 user interface languages - 6 detail levels (from schematic to full detail) - Custom area selection: rectangle, polygon, freehand drawing, city/address search - 128 programs in Program Selector (architecture, urban planning, GIS, 3D, etc.) - Geodata Library: 2.9M places, 179 countries, admin levels 2/4/6/8/10 ## Export Format Categories ### Vector (design & print) SVG, PDF, EPS, AI (Adobe Illustrator), PSD (Photoshop), EMF, WMF, HPGL ### CAD (engineering) DXF, DWG, CDR (CorelDRAW), KOMPAS (CDW), MapInfo (MIF/MID, TAB) ### GIS (geospatial) GeoJSON, Shapefile (SHP), KML, KMZ, GPX, WKT, GeoCSV, GML, GeoPackage (GPKG), SpatiaLite, FileGDB, FlatGeobuf, GeoParquet, GeoJSON-Seq, GeoArrow, Excel (XLSX with geometry), TopoJSON, Newline-delimited GeoJSON, OSM XML, OSM PBF ### Raster (images & tiles) PNG, JPEG, TIFF, GeoTIFF, Cloud-Optimized GeoTIFF (COG), WebP, MBTiles, PMTiles, Zarr, XYZ Tiles ### 3D / BIM STL, OBJ, glTF/GLB, PLY, FBX, COLLADA (DAE), X3D, VRML, 3DS, 3MF, STEP, USD/USDA/USDC, IFC, CityJSON, CityGML, 3D Tiles, Alembic, Minecraft (.schem) ### Navigation Garmin IMG, Garmin GPI (POI), OsmAnd OBF, TomTom OV2 ### Transport simulation OpenDRIVE (XODR), SUMO network, Lanelet2, ROS Occupancy Grid ## Geo Analysis (141 tools) - 10 scoring endpoints: Walk Score (walkability), Green, Transit, Safety, Education, Health, Commerce, Culture, Connectivity + composite Livability Index (0-100 scale each) - Area statistics: 22 metrics per area (population density, POI count, road length, building count, etc.) - POI search: KNN nearest, 15 categories, radius/bbox queries - Density analysis: POI, buildings, roads per km2 - Terrain tools: contour lines, hillshade, slope analysis, viewshed (real GDAL processing) - 288 data products: 274 extracts + 8 visual products + 6 widgets ## SEO & Structured Data - 2.9M place pages with 16 unique content blocks generated from PostGIS - JSON-LD Dataset schema for Google Dataset Search - Hreflang tags for 22 languages (ru, en, de, fr, es, zh, ar, cs, el, hi, hu, id, it, ja, ko, nl, pl, pt, sv, tr, uk, vi) + x-default - Dynamic Open Graph images for each place - 130 format landing pages in the sitemap (82 with hand-written detailed descriptions) - 300+ city dashboard pages ## API Base URL: https://osm2cdr.com/api ### Core endpoints - POST /api/export -- Create map export task (bbox, format, style, detail level, CRS) - GET /api/formats -- List all 133+ available formats with metadata - GET /api/status/{task_id} -- Check export task status and download URL - GET /api/geocode?q=QUERY -- Geocode search (Nominatim-based) - GET /api/styles -- List 85 available map styles - GET /api/crs -- List 165 supported coordinate systems ### Geo Analysis endpoints - GET /api/geo-analysis/tools -- List all 141 geo-analysis tools (tool_id, category, input/output type); every tool is free - GET /api/geo-analysis/{tool_id}/schema -- Tool descriptor of one tool (tool_id, tool_name, category, description, input_type, output_type, tier); parameter names and bounds are NOT in it -- they are documented on the tool's own page under https://osm2cdr.com/en/geo/ - POST /api/geo-analysis/{tool_id} -- Run a tool (buffer, isochrone, heatmap, contour, viewshed, ...) with a JSON body - POST /api/elevation-profile -- Elevation profile along an uploaded GPX track (multipart/form-data: file up to 25 MB, gain_threshold_m, step_m); returns sampled points, gain/loss summary and ready CSV/GPX bodies; the upload is deleted right after the response - GET /api/v2/stats/area?bbox=xmin,ymin,xmax,ymax -- Area statistics (22 metrics) - GET /api/v2/poi/search?lat=LAT&lon=LON&radius=M&category=CAT -- POI search (KNN, categories, radius) - GET /api/v2/density?bbox=xmin,ymin,xmax,ymax&category=poi|building|road|green -- Density analysis (POI, buildings, roads, green) - GET /api/v2/score/{walkability|green|transit|safety|education|health|commerce|culture|connectivity}?lat=LAT&lon=LON&radius=M -- Single score (0-100) - GET /api/v2/score/livability?lat=LAT&lon=LON&radius=M -- Composite Livability Index (0-100) - GET /api/v2/enrich?lat=LAT&lon=LON&radius=M -- All scores plus POI summary for one point - GET /api/v2/compare?area1=xmin,ymin,xmax,ymax&area2=xmin,ymin,xmax,ymax -- Compare two areas by area statistics ### Data Products - GET /api/data-products -- List 288 available data products - POST /api/data-products/extract -- Generate data extract ### Geodata Library - GET /api/places/search?q=QUERY -- Fulltext search across 2.9M places - GET /api/places/{country}/{place} -- Place details with statistics ## Pricing OSM2CDR is in beta; the price is shown before payment. There is no subscription: you pay per map. - Your own area from the builder: paid once per area from the account balance; the same area can be downloaded again in another format, style or settings at no extra charge. - Ready-made place maps from the catalogue: editable vector formats (PDF, DWG, DXF, CDR, AI, SVG, EPS and their variants) cost the same as one builder map; a place is paid for once, then any of its formats. This applies to places in Russia, Ukraine and Belarus for every client, and to places elsewhere in the world for clients from Russia. - Raster formats of catalogue maps (including PDF with a raster image), GIS and rare formats: under the same rule and at the same price as the vector ones. - No daily export quota, no area size limit, no watermark on exported files. - REST API endpoints are open. A cadastral order (parcel boundary from the Russian NSPD registry) costs the same as one map, requires signing in, and is charged once per parcel: downloading that parcel again in any format comes at no extra charge, and bonus balance may be used to pay for it. The data source sharply limited the flow of requests we may send, so we let users get the parcel right away instead of waiting in a queue for days. ## Technical Stack - Backend: Python 3.11, FastAPI, Celery, PostgreSQL 16 + PostGIS 3.4 - Rendering: QGIS headless, GDAL/OGR, WKB fast-path (10-50x speedup) - Data: OpenStreetMap planet (2.64B rows, 899 GB in PostGIS) - Infrastructure: Docker Compose, Nginx, Hetzner dedicated (125 GB RAM) ## Where to find (feature locations) Features advertised above are accessible at the following URLs: - **85 map styles** — interactive picker on the home page (https://osm2cdr.com/#map, style dropdown in the Format Wizard). Machine-readable list: https://osm2cdr.com/api/styles - **165 coordinate reference systems** — CRS picker inside the Format Wizard on the home page. Machine-readable list: https://osm2cdr.com/api/crs - **Scoring engines** — per-location scores on every place page (e.g. https://osm2cdr.com/en/map/france/paris/). REST endpoints (GET; query params lat, lon, radius in meters; example: ?lat=55.7558&lon=37.6173&radius=1000): - Walk Score: GET https://osm2cdr.com/api/v2/score/walkability - Green Score: GET https://osm2cdr.com/api/v2/score/green - Transit Score: GET https://osm2cdr.com/api/v2/score/transit - Safety Score: GET https://osm2cdr.com/api/v2/score/safety - Livability Index: GET https://osm2cdr.com/api/v2/score/livability - Education, Health, Commerce, Culture, Connectivity: GET https://osm2cdr.com/api/v2/score/{education|health|commerce|culture|connectivity} - All scores at once: GET https://osm2cdr.com/api/v2/enrich; two areas side by side: GET https://osm2cdr.com/api/v2/compare?area1=xmin,ymin,xmax,ymax&area2=xmin,ymin,xmax,ymax - **22 statistical metrics per location** — shown on each place page; computed via GET https://osm2cdr.com/api/v2/stats/area?bbox=xmin,ymin,xmax,ymax - **POI search / density analysis** — GET https://osm2cdr.com/api/v2/poi/search?lat=LAT&lon=LON&radius=M and GET https://osm2cdr.com/api/v2/density?bbox=xmin,ymin,xmax,ymax&category=poi - **REST API (OpenAPI)** — render via `POST https://osm2cdr.com/api/render`, poll `GET https://osm2cdr.com/api/status/{task_id}`, list formats via `GET https://osm2cdr.com/api/formats`, download via `GET https://osm2cdr.com/api/download/{task_id}/{format}`. Full interactive documentation at https://osm2cdr.com/api/docs (Swagger UI) and https://osm2cdr.com/api/redoc (ReDoc). Raw schema: https://osm2cdr.com/api/openapi.json - **Embed SDK** — https://osm2cdr.com/sdk.js (drop-in JS for third-party sites) - **Data products catalog** — https://osm2cdr.com/products/ (288 browsable products) - **City dashboards** — https://osm2cdr.com/en/dashboard/ (300+ cities with analytics) - **Geo analysis tools (141, all free)** — https://osm2cdr.com/en/geo/ (run them right on the page; up to 10 runs per day without sign-in, then free registration); machine-readable list: https://osm2cdr.com/api/geo-analysis/tools; how Walk/Green/Transit Score are computed: https://osm2cdr.com/en/blog/green-score-urban-analytics/ ## Progress Updates Task progress is delivered via REST polling. Open the export with `POST /api/render`, receive `task_id`, then poll `GET /api/status/{task_id}` every 2-5 seconds until `status == "completed"` or `status == "failed"`. Response includes `progress` (0-100), `step`, `error`, and a `files` map on completion. Typical client flow: 1. POST /api/render with `{bbox, formats, map_style, detail_level}` -> receive `{task_id, ...}` 2. Poll GET /api/status/{task_id} every 2-5 seconds -> read `{status, progress, step, files, error}` 3. When `status == "completed"`, download via GET /api/download/{task_id}/{format} Note: A WebSocket endpoint at `/ws/task/{task_id}` exists as a stub — it accepts the connection and immediately closes with code 1001 ("Not implemented. Poll /api/status/{task_id}"). It is reserved for a future Celery -> Redis Pub/Sub progress bridge. Do not rely on it; use REST polling. ## Links - Website: https://osm2cdr.com - Map Export: https://osm2cdr.com/#map - Format List: https://osm2cdr.com/api/formats - OpenAPI / Swagger: https://osm2cdr.com/api/docs - Embed SDK: https://osm2cdr.com/sdk.js - robots.txt: https://osm2cdr.com/robots.txt