NOTÍCIAS

Prefeitura lança aplicativo da Defesa Civil de Sorocaba

 

 

A Prefeitura de Sorocaba dá mais um passo na modernização dos serviços públicos, a partir do lançamento, nesta sexta-feira (3), do aplicativo oficial da Defesa Civil. A ferramenta está disponível gratuitamente no Google Play e na Apple Store. A iniciativa representa avanço na gestão de riscos e na comunicação direta com a população, durante situações de emergência.

O aplicativo surge para tornar mais ágil e precisa a comunicação de alertas meteorológicos emitidos pela Defesa Civil do Estado e situações de risco na cidade. Com funcionalidades que vão além das notificações básicas, o aplicativo integra tecnologia de geolocalização e mapas interativos para oferecer informações precisas sobre áreas de alagamento e vias interditadas.

O lançamento do aplicativo ocorre em momento estratégico, considerando as mudanças climáticas e a proximidade do início do período de chuvas. A ferramenta posiciona Sorocaba na vanguarda da prevenção e resposta a emergências, estabelecendo novo padrão de comunicação entre poder público e sociedade civil.

Uma das características mais inovadoras do sistema é sua integração com o Waze for Cities, plataforma que permite à administração municipal, por meio da equipe de do Centro de Controle Operacional Integrado (CCOI) da Secretaria de Mobilidade (Semob), compartilhar informações de trânsito em tempo real diretamente com os usuários desse aplicativo de navegação.

O aplicativo da Defesa Civil também demonstra preocupação com a acessibilidade digital, ao disponibilizar cadastro completo de orientações da Defesa Civil, que funciona off-line, garantindo que informações essenciais de segurança permaneçam acessíveis mesmo durante interrupções no serviço de internet – situação comum durante emergências climáticas.

“Além das funcionalidades preventivas, o sistema estabelece canal direto para pedidos de socorro, permitindo que cidadãos solicitem ajuda com georreferenciamento automático, agilizando o atendimento das equipes de emergência”, aponta Ricardo Armênio, coordenador da Defesa Civil de Sorocaba. O acompanhamento do status dos chamados também pode ser feito pela própria plataforma, a aumentar a transparência do serviço público.

A ferramenta ainda incorpora o mapeamento dos pontos de apoio definidos no Plano Verão da cidade, período tradicionalmente marcado por maior incidência de chuvas e riscos de alagamentos na região. Essa funcionalidade permite que a população identifique rapidamente locais seguros durante emergências.

“A iniciativa reflete uma tendência nacional de digitalização dos serviços públicos e aproxima Sorocaba de outras grandes cidades que já adotaram tecnologias similares para gestão de emergências. O município demonstra capacidade de inovação na gestão pública ao investir em soluções tecnológicas acessíveis à população”, destaca Carlos Eduardo Paschoini, à frente da Semob, secretaria à qual a Defesa Civil está vinculada.

“Cabe destacar que o aplicativo foi desenvolvido internamente, pelos analistas de sistemas, junto a Coordenadoria Geral Tecnologia da Informação pela Seção de Sistemas, liderada pela Chefe de Seção Adriana Cicuto. Essa iniciativa é mais um fruto dos consecutivos projetos que esta CGTI vem trabalhando nesta gestão”, complementa Abel Junior, Coordenador Geral de TI.

 

$$ = $.noConflict();

var initPhotoSwipeFromDOM = function(gallerySelector) {

// parse slide data (url, title, size …) from DOM elements
// (children of gallerySelector)
var parseThumbnailElements = function(el) {
var thumbElements = el.childNodes,
numNodes = thumbElements.length,
items = [],
figureEl,
childElements,
linkEl,
size,
item;

for(var i = 0; i < numNodes; i++) {
figureEl = thumbElements[i]; //

element

// include only element nodes
if(figureEl.nodeType !== 1) {
continue;
}

linkEl = figureEl.children[0]; // element
linkEl = figureEl; //
element
// console.log(linkEl);
size = linkEl.getAttribute(‘data-size’).split(‘x’);

// create slide object
item = {
src: linkEl.getAttribute(‘href’),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};

if(figureEl.children.length > 1) {
//

content
item.title = figureEl.children[1].innerHTML;
}

if(linkEl.children.length > 0) {
// thumbnail element, retrieving thumbnail url
item.msrc = linkEl.children[0].getAttribute(‘src’);
}

item.el = figureEl; // save link to element for getThumbBoundsFn
items.push(item);
}

return items;
};

// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};

// triggers when user clicks on thumbnail
var onThumbnailsClick = function(e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;

var eTarget = e.target || e.srcElement;

var clickedListItem = closest(eTarget, function(el) {
return el.tagName === ‘FIGURE’;
});
clickedListItem = eTarget.parentNode;
if(!clickedListItem) {
return;
}

// find index of clicked item
var clickedGallery = clickedListItem.parentNode,
childNodes = clickedListItem.parentNode.childNodes,
numChildNodes = childNodes.length,
nodeIndex = 0,
index;

for (var i = 0; i = 0) {
openPhotoSwipe( index, clickedGallery );
}

return false;
};

// parse picture index and gallery index from URL (#&pid=1&gid=2)
var photoswipeParseHash = function() {
var hash = window.location.hash.substring(1),
params = {};

if(hash.length < 5) {
return params;
}

var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if(pair.length getThumbBoundsFn section of docs for more info
var thumbnail = items[index].el.getElementsByTagName(‘img’)[0], // find thumbnail
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();

return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
},

shareButtons: [
{id:’download’, label:’Download image’, url:”, download:true}
],

// history & focus options are disabled on CodePen
// remove these lines in real life:
historyEnabled: false,
focus: false

};

if(disableAnimation) {
options.showAnimationDuration = 0;
}

// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
};

// loop through all gallery elements and bind events
var galleryElements = document.querySelectorAll( gallerySelector );

for(var i = 0, l = galleryElements.length; i 0 && hashData.gid > 0) {
openPhotoSwipe( hashData.pid – 1 , galleryElements[ hashData.gid – 1 ], true );
}
};

// execute above function
initPhotoSwipeFromDOM(‘.pms-galeria’);

// All images need to be loaded for this plugin to work so
// we end up waiting for the whole window to load in this example
$$(window).load(function () {
$$(document).ready(function(){
collage();
$$(‘.pms-galeria’).collageCaption();
});
});

// Here we apply the actual CollagePlus plugin
function collage() {
$$(‘.pms-galeria img’).css(‘display’, ‘block’);
$$(‘.pms-galeria’).removeWhitespace().collagePlus({
‘fadeSpeed’ : 2000,
‘targetHeight’ : 150,
‘effect’ : ‘default’,
‘direction’ : ‘vertical’,
‘allowPartialLastRow’ : true
});
};

// This is just for the case that the browser window is resized
var resizeTimer = null;
$$(window).bind(‘resize’, function() {
// hide all the images until we resize them
$$(‘.pms-galeria .Image_Wrapper’).css(“opacity”, 0);
// set a timer to re-apply the plugin
if (resizeTimer) clearTimeout(resizeTimer);
resizeTimer = setTimeout(collage, 200);
});