O voo das Andorinhas-de-coleira: Espécie criticamente ameaçada de extinção é reencontrada na Bacia do rio Paraopeba, em Minas Gerais
recent-searches
روابط سريعة
•
O voo das Andorinhas-de-coleira: Espécie criticamente ameaçada de extinção é reencontrada na Bacia do rio Paraopeba, em Minas Gerais
Aves foram registradas durante expedição realizada por biólogos da Vale e especialistas acadêmicos
Uma população reprodutiva da andorinha-de-coleira, ave considerada criticamente ameaçada de extinção no estado de Minas Gerais, conhecida pelos cientistas como Pygochelidon melanoleuca, foi encontrada na bacia do rio Paraopeba. A descoberta inédita ocorreu durante expedição/diagnóstico ambiental realizado ao longo do rio Paraopeba por biólogos da Vale e especialistas acadêmicos. A presença da espécie em um trecho de aproximadamente 60 quilômetros do rio Paraopeba, entre os municípios de Pompéu e Curvelo, apresenta dados inéditos e relevantes sobre o tamanho populacional e a biologia reprodutiva desses animais. Além disso, o diagnóstico tem produzido o mais completo conjunto de dados sobre a biologia reprodutiva da espécie em todo o mundo. O diagnóstico também avaliou a existência de eventuais impactos do rompimento da barragem em Brumadinho, em 2019, sobre a população desses animais; o que não foi constatado.
Andorinhas-de-coleira. Espécie ameaçada de extinção - (crédito: Gabriele Andreia da Silva)
“Não havia estudos que demonstrassem a existência de uma população reprodutiva da andorinha-de-coleira no rio Paraopeba e é por isso que os dados obtidos neste monitoramento representam um enorme avanço no conhecimento sobre as populações desta espécie”, destaca o biólogo e especialista em aves, Leonardo Lopes, professor da UFV. Leonardo ainda destaca que este monitoramento permitiu a documentação, até então inédita, da andorinha-de-coleira em plena atividade reprodutiva. Estudos anteriores já haviam descrito o ninho da espécie, mas nenhum pesquisador havia até então conseguido investigar detalhes sobre a reprodução da espécie. Isso porque a andorinha-de-coleira constrói seus ninhos em locais de difícil acesso, mais especificamente no interior de fendas localizadas nos afloramentos rochosos ao longo das corredeiras de rios.
O barqueiro das andorinhas
Para chegar até os pássaros a expedição contou com a experiência e o conhecimento de moradores locais, como o barqueiro, Samuel Santos, um dos guias da expedição. “Conheço bem a região, sou ribeirinho, nascido as margens do rio São Francisco, e gosto de “passarinhar” por aí, sair em busca de pássaros. Sobre a expedição é uma alegria encontrar as andorinhas. Estar no meio dos pássaros faz bem para a alma, faz bem para o coração”, destaca.
Microcâmeras especiais para desvendar os esconderijos
Como os ninhos da andorinha-de-coleira são de difícil acesso, para “visitar a casa das aves” foi necessário o uso de uma microcâmera própria para inspecionar locais de difícil acesso e com baixa luminosidade. O material que as aves utilizam para a construção do ninho, incluindo penas, folhas secas e fibras vegetais, é geralmente coletado nas margens, no próprio pedral ou nas pequenas ilhas de vegetação encontradas no leito do rio.
Filhotes da andorinha
Monitoramento da biodiversidade
O monitoramento da biodiversidade em áreas impactadas e não impactadas pelo rompimento da barragem em Brumadinho, também chamado de Programa de Diagnóstico de Danos Ambientais sobre o Meio Biótico, é parte do Acordo de Reparação Integral assinado em 2021 pela Vale, pelo Governo do Estado de Minas Gerais, pelos Ministérios Públicos Federal e do Estado de Minas Gerais, e pela Defensoria Pública de Minas Gerais, para a reparação dos danos causados. Ao todo, entre Jeceaba e Três Marias, passando por Brumadinho, na confluência com o ribeirão Ferro-Carvão, local mais afetado pelo rompimento, são monitorados 35 pontos ao longo do rio Paraopeba para a biodiversidade aquática e 20 áreas para a biodiversidade terrestre. Todas as atividades de monitoramento são frequentemente acompanhadas pelos órgãos ambientais competentes.
“Quando monitoramos os locais impactados e não impactados é possível avaliar as condições ambientais de maneira ampla, e como o rompimento pode ou não ter influenciado a ocorrência, riqueza e distribuição da fauna e flora presentes ao longo da bacia do rio Paraopeba. Encontrar uma população saudável dessa espécie, em grande número e em novos pontos no rio Paraopeba é um importante indicativo ambiental e indica que o rompimento não interferiu na qualidade de vida dessas aves. Além disso, as expedições e os monitoramentos da Vale realizados em parceria com as instituições de ensino, ficarão como importantes fontes de pesquisas para as próximas gerações”, ressalta Cristiane Cäsar, analista ambiental da Vale.
Media Relations Office - vale
imprensa@vale.com
https://saladeimprensa.vale.com/press-releases
The following has evaluated to null or missing: ==> restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=name eq 'Press topics' or name eq 'Temas de imprensa'&fields=id&restricFields=actions,availableLanguages&page=1&pageSize=1").items [in template "44549#44620#65143" at line 4, column 42] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: pressTopicVocabularyId = restClient.g... [in template "44549#44620#65143" at line 4, column 17] ----
1<#assign
2 images_path = "/documents/d/guest/"
3 namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId()
4 pressTopicVocabularyId = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=name eq 'Press topics' or name eq 'Temas de imprensa'&fields=id&restricFields=actions,availableLanguages&page=1&pageSize=1").items[0].id
5/>
6
7<#function getDisplayPageUrl asset>
8 <#local
9 assetRenderer = asset.getAssetRenderer()
10 baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first
11 />
12 <#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/>
13</#function>
14
15<#function getCategoryFilterEndpoint asset>
16 <#local
17 pressTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == pressTopicVocabularyId)?first
18 pressTopicCategoryId = pressTopicCategory.getCategoryId()
19 />
20 <#return "/-/categories/" + pressTopicCategoryId />
21</#function>
22
23<#function getDDMFormFieldsValue DDMFormFieldsReferencesMap DDMFormFieldValuesMap fieldReference>
24 <#local field = DDMFormFieldsReferencesMap[fieldReference].name />
25 <#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" />
26</#function>
27
28<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint>
29 <#local
30 groupId = customDisplayPageJson.getLong("groupId")
31 uuid = customDisplayPageJson.getString("id")
32 privateLayout = customDisplayPageJson.getBoolean("privateLayout")
33 />
34 <#local customDisplayPageDataAttr>
35 data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}'
36 data-vale-category-endpoint=${categoryFilterEndpoint}
37 </#local>
38 <#return customDisplayPageDataAttr/>
39</#function>
40
41<section class="vale-widget-imprensa-relacionadas bg-verde-vale" id="vale-widget-imprensa-relacionadas-${namespace}">
42 <div class="fragment-container overflow-hidden">
43 <div class="container">
44 <div class="titulo d-flex justify-content-between mt-7 mb-5">
45 <h2 class="text-amarelo-vale">
46 <@liferay.language key="press" />
47 </h2>
48 <div class="d-none d-md-flex align-self-center justify-content-end">
49 <img
50 class="${namespace} carrossel-card-branco-categoria-button-prev btn btn-primary border-amarelo-vale bg-amarelo-vale mr-3 p-1 rounded-circle"
51 src="${images_path}seta-2-esq_bra"
52 alt="button-prev"
53 />
54 <img
55 class="${namespace} carrossel-card-branco-categoria-button-next btn btn-primary border-amarelo-vale bg-amarelo-vale p-1 rounded-circle"
56 src="${images_path}seta-2-dir_bra"
57 alt="button-next"
58 />
59 </div>
60 </div>
61 <div class="swiper ${namespace} carrossel-card-branco-categoria">
62 <div class="swiper-wrapper mb-sm-6">
63 <#if entries?has_content>
64 <#list entries as curEntry>
65 <#assign
66 assetRenderer = curEntry.getAssetRenderer()
67 article = assetRenderer.getArticle()
68
69 categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry)
70
71 DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap()
72 DDMFormFieldsReferencesMap = assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true)
73
74 customDisplayPageJsonString = getDDMFormFieldsValue(DDMFormFieldsReferencesMap, DDMFormFieldValuesMap, "customDisplayPage")
75 customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString)
76
77 hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content
78 customDisplayPageDataAttr = hasCustomDisplayPage?then(
79 getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "")
80
81 displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint
82 />
83 <div class="swiper-slide">
84 <a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}>
85 <div class="box d-flex flex-column justify-content-between p-3">
86 <div>
87 <p class="text-verde-aqua mb-2">
88 <#assign categories = curEntry.getCategories() />
89 <#list categories as category>
90 <#if category.vocabularyId == pressTopicVocabularyId>
91 ${category.name}
92 <#break>
93 </#if>
94 </#list>
95 </p>
96 <p class="text-verde-vale">
97 ${curEntry.getTitle(locale)}
98 </p>
99 </div>
100 <p class="text-cinza-escuro m-0">
101 <#assign dataField = DDMFormFieldsReferencesMap['data'].name />
102 <#assign data = DDMFormFieldValuesMap[dataField][0].getValue().getString(locale) />
103 <#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/>
104
105 ${date_localized}
106 </p>
107 <img
108 class="onda position-absolute"
109 src="${images_path}onda_verde"
110 />
111 </div>
112 </a>
113 </div>
114 </#list>
115 </#if>
116 </div>
117 </div>
118 <a
119 class="bg-amarelo-vale border-amarelo-vale btn btn-nm btn-primary mb-6"
120 href="${(locale == 'pt_BR')?then('/imprensa','/press-releases')}"
121 target="_blank"
122 >
123 <@liferay.language key="access-press-area" />
124 </a>
125 </div>
126 </div>
127</section>
128
129<style>
130.vale-widget-imprensa-relacionadas .onda {
131 position: absolute;
132 bottom: 1.875rem;
133 right: -0.125rem;
134}
135
136.vale-widget-imprensa-relacionadas .box {
137 background-color: var(--branco);
138 border-left: 10px solid var(--amarelo-vale);
139 height: 14.6875rem;
140 margin-bottom: 2rem;
141}
142
143.vale-widget-imprensa-relacionadas p {
144 display: -webkit-box;
145 line-clamp: 4;
146 overflow: hidden;
147 -webkit-line-clamp: 4;
148 -webkit-box-orient: vertical;
149}
150
151@media screen and (min-width: 768px) {
152 .vale-widget-imprensa-relacionadas .box {
153 border-left: 20px solid var(--amarelo-vale);
154 height: 11.875rem;
155 }
156
157 .vale-widget-imprensa-relacionadas p {
158 line-clamp: 3;
159 -webkit-line-clamp: 3;
160 }
161}
162
163.vale-widget-imprensa-relacionadas .container {
164 overflow: visible;
165}
166
167.vale-widget-imprensa-relacionadas .swiper {
168 overflow: visible;
169}
170
171.vale-widget-imprensa-relacionadas .swiper-slide {
172 width: auto;
173}
174
175</style>
176
177<script>
178(function(){
179
180var swiper = new Swiper(".${namespace}.carrossel-card-branco-categoria", {
181 slidesPerView: 1,
182 spaceBetween: 32,
183 navigation: {
184 nextEl: ".${namespace}.carrossel-card-branco-categoria-button-next",
185 prevEl: ".${namespace}.carrossel-card-branco-categoria-button-prev",
186 disabledClass: "disabled",
187 navigationDisabledClass: "disabled",
188 },
189 pagination: {
190 clickable: true,
191 },
192 slideClass: "swiper-slide",
193 breakpoints: {
194 768: {
195 slidesPerView: 2,
196 },
197 1024: {
198 slidesPerView: 3,
199 },
200 },
201});
202
203 // Tagueamento
204
205 const namespace = document.querySelector("#vale-widget-imprensa-relacionadas-${namespace}");
206
207 const section = namespace.querySelector("h2").innerText;
208
209 const links = namespace.querySelectorAll("a");
210
211 const handleEventLinkClick = (title, href) => {
212 Analytics.track("Link", {
213 section: section,
214 rotulo: title + " : " + href,
215 });
216 };
217
218 links.forEach(link => {
219 const text = link.querySelector('p.text-verde-vale');
220 const title = text ? text.innerText : '';
221 link.addEventListener("click", () => handleEventLinkClick(title, link.href))
222 })
223
224 // Configurar URL de página de exibição dinâmica
225 const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]');
226
227 displayPageUrls.forEach(displayPageUrl => {
228 const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"];
229 const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"];
230 Liferay.Service(
231 '/layout/get-layout-by-uuid-and-group-id',
232 JSON.parse(customDisplayPage),
233 layout => {
234 const friendlyURL = layout["friendlyURL"];
235 if (friendlyURL) {
236 displayPageUrl.href = friendlyURL + categoryEndpoint;
237 }
238 }
239 );
240 })
241})()
242
243</script>
See also