91³Ô¹ÏÍø

Watch CBS News

There's a massive model of Boston inside City Hall. Here's how you can see it for free.

There's a room in Boston City Hall where you can see the entire city all at once. 

The planning department's is a large, open space that houses a 1:40 inch scale, three-dimensional replica of downtown Boston and several surrounding neighborhoods.

Boston City Hall's model room

"Every time a person walks in here, I know what the first sound coming out of their mouth will be. It'll be 'wow.' It's universal, regardless of which country they come from, that word is 'wow,'" said Prataap Patrose of the Boston Planning Department.

Patrose has been with the department for about 40 years and his office is across the hall from the room. Over the years, the model has featured every building, road and contour of the city and it's grown and changed along with the real thing.

modelroom.jpg
The model room inside Boston City Hall. CBS Boston

"When I got to Boston in 1980, this was sitting where the Greenway is sitting today and it was like a literal wall between downtown and the waterfront," said Patrose, as he held a model of the Central Artery that was removed after the .

The model serves an important purpose for city planners.

"A planning tool"

"We use it as a planning tool to understand how might different interventions, like a new building being proposed or a new area of the city being developed, how might that visually be and physically be manifested," said Patrose.

Patrose used a section of Dorchester Avenue as an example. He removed a triangular area full of warehouses and replaced it with a sectional model that has new streets, residential towers and open green spaces.

The basswood buildings are made in house.

"It took five people to get the base model built over roughly a 10-to-15 year period and since then we've been adding pieces to it as the city has been evolving," Patrose said.

The model room is free and open to the public from 9 a.m. through 5 p.m. Monday through Friday. To schedule a tour, contact Colleen Woods at colleen.woods@boston.gov.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });