91³Ô¹ÏÍø

Watch CBS News

Here's how Roseville has lowered water usage while accommodating growing population

ROSEVILLE — Even though we've had back-to-back wet winters, state officials say drought is still one of California's most severe environmental threats.

One Placer County city is reducing its overall water usage with the help of homeowners, businesses, and even space-based technology.

Roseville is one of the most rapidly growing cities in the region, and it's been able to accommodate all these new homes without needing any extra water.

"Since 2013, the population of Roseville's grown by 25%. Yet, water usage is down 17%," said Sean Bigley, the City of Roseville's assistant environmental utilities director.

Bigley said the key has been conservation.

"We're seeing deliberate behavior changes by our customers," he said.

Roseville has a popular .

"We've been able to work to get rid of some of the turf area," Bigley said.

A recent project at a shopping center replaced lush green grass with drought-tolerant landscaping. It now saves an estimated 500,000 gallons of water each year.

Roseville also has a team of water waste inspectors. Last year, they launched nearly 4,000 investigations including the bathroom of Beauty Solutions.

"We had an issue with our toilet and it was just running, running, running, and he was like, 'Hey, your water's kind of spiking. What's going on? Let's figure it out,' " said Maylene Roper with Beauty Solutions.

The city even uses satellites that can pinpoint underground water leaks from space.

"They can actually do ground penetrating scans, and they can actually determine where some leaks are, we have many circumstances where that technology has helped us," Bigley said.

It's an effort to meet state rules taking effect in 2030 that limit people to using just 42 gallons of water per person, per day.

"Agencies that after some warnings aren't able to get there, they could be subject to fines and penalties," Bigley said.

State law will also prohibit most decorative grass landscaping on public property beginning in 2027 and that will expand to commercial and industrial properties in 2028.

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=fd53910ecf4604072044ab7c46d9b028'; 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(); } }); }); }); });