ASCII CITY
ANY ADDRESS · EXTRUDED FROM OPENSTREETMAP · DRAWN IN CHARACTERS
How far out from the target to pull buildings.
Camera focal length. Higher crops in tight.
Orbit the camera around the target.
Street level up to straight overhead.
Where the light comes from; it decides which faces go bright.
Character grid size. More cells, more detail.
The ramp luminance gets quantised onto.
Blows the render up past the window; scroll to pan.
- Nominatim turns your text into a coordinate.
- Overpass returns every building footprint inside the range.
- Each footprint is extruded to its tagged height — or 3 m per floor, or 10 m if OSM says nothing.
- The faces are projected through a pinhole camera and shaded by how squarely they face the light.
- Only buildings are drawn, so skylines read best. Empty ranges come back blank.
The renderer answers plain text too. Shrink your font first — the grid is wider than your window.
curl 'https://inkegg.io/api/ascii-city?location=Hong+Kong&format=text'
Takes the same knobs: radius, zoom, rotate, pitch, sun, resolution, charset.
This is a JavaScript port of
ascii-city
by Paul Wiench — originally a Python service you hit with
curl api.ascii-city.com. The projection, the shading and the character ramp
are his design; this version reimplements them in Node so InkEgg can serve it directly,
and adds camera, range and ramp controls.
Geometry and heights come from OpenStreetMap, reached through two of the project's community-run APIs: Nominatim for geocoding and Overpass for building data. Both are free, volunteer-funded services — this page caches results and paces its requests to stay a good citizen.
Map data © OpenStreetMap contributors, available under the Open Database License.