<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Artem</title><generator>teletype.in</generator><description><![CDATA[Привет! Я Артем - студент горный инженер-маркшейдер. Пишу сюда статьи по тематике горного дела, всегда рад обратной связи.]]></description><image><url>https://img3.teletype.in/files/aa/a5/aaa5d028-da17-484f-b2f9-60bbcb6c626f.png</url><title>Artem</title><link>https://teletype.in/@scheidermark</link></image><link>https://teletype.in/@scheidermark?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/scheidermark?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/scheidermark?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sat, 23 May 2026 18:02:49 GMT</pubDate><lastBuildDate>Sat, 23 May 2026 18:02:49 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@scheidermark/geomechanics-diploma</guid><link>https://teletype.in/@scheidermark/geomechanics-diploma?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><comments>https://teletype.in/@scheidermark/geomechanics-diploma?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark#comments</comments><dc:creator>scheidermark</dc:creator><title>Дипломная работа: от 3D-моделирования до Python-аналитики и экономики (Часть 2)</title><pubDate>Mon, 23 Feb 2026 10:47:40 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/25/0b/250b4259-d717-439e-9945-5bff671cad62.png"></media:content><category>Геомеханика</category><description><![CDATA[<img src="https://img2.teletype.in/files/5a/77/5a77efa2-a727-4d71-b976-6fc32c743e03.png"></img>Продолжаю тему и делюсь подробностями своей дипломной работы, которую успешно защитил месяц назад.]]></description><content:encoded><![CDATA[
  <p id="HD7D">Продолжаю тему и делюсь подробностями своей дипломной работы, которую успешно защитил месяц назад.</p>
  <h3 id="JTHC" data-align="center">1. Подготовка к моделированию</h3>
  <p id="uuhT"><br />Еще до построения 3D-модели карьера я определил геологический индекс прочности (GSI) для различных участков карьера(доменов) и рассчитал эквивалентные параметры массива, выполнив переход от прочности на одноосное сжатие к модулю упругости через статистический параметр modulus ratio (MR). В работе опирался на фундаментальные труды:</p>
  <p id="pWdP"><a href="https://www.sciencedirect.com/science/article/pii/S1674775518303846" target="_blank">2019-The-Hoek-Brown-failure-criterion-and-GSI-2018-edition</a> </p>
  <p id="bw72"><a href="https://static.rocscience.cloud/assets/resources/learning/hoek/2006-Hoek-and-Diederichs-estimating-rock-mass-modulus.pdf" target="_blank">2006-Hoek-and-Diederichs-estimating-rock-mass-modulus</a> </p>
  <figure id="IonC" class="m_column" data-caption-align="center">
    <img src="https://img2.teletype.in/files/5a/77/5a77efa2-a727-4d71-b976-6fc32c743e03.png" width="1067" />
    <figcaption>Выделение домено</figcaption>
  </figure>
  <p id="ZjAZ">После интеграции данных в расчетную модель я разбил ее на конечные элементы и провел расчет методом понижения прочностных характеристик (SRM). Результатом стали наглядные зоны пластических деформаций, поля полных перемещений и конечно, итоговый коэффициент запаса устойчивости FoS = КЗУ (<a href="https://normativ.kontur.ru/document?moduleId=1&documentId=466110#h480" target="_blank">по ФНП №439 Приложение 3, п 15-16</a>).</p>
  <figure id="8TTW" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/8b/bc/8bbcde94-4cb0-4700-a9f4-c528d8a93d91.png" width="779" />
    <figcaption>Разбиение 3д модели на конечные элементы</figcaption>
  </figure>
  <figure id="csof" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e5/fc/e5fc0278-1608-46b4-9805-db0febca273a.png" width="1422" />
    <figcaption>Распределение пластических деформаций в карьере</figcaption>
  </figure>
  <p id="CfP3"></p>
  <figure id="QzYx" class="m_custom" data-caption-align="center">
    <img src="https://img3.teletype.in/files/6e/21/6e210067-52e1-40bf-85a9-f6b48c0d7289.png" width="841.8006430868166" />
    <figcaption>Поля полных перемещений</figcaption>
  </figure>
  <h3 id="19qz" data-align="center">2. Проектирование наблюдательной станции</h3>
  <p id="lZoi"><br />На основе полученных расчетов я спроектировал маркшейдерскую станцию. Логика была следующая:</p>
  <p id="ajKc">Опорные реперы расположил в зоне минимальных смещений, за пределами влияния карьера.<br />Рабочие реперы расположил точечно в зонах пластических деформаций и максимальных смещений. Опираясь на рекомендации <a href="https://files.stroyinf.ru/Data2/1/4294853/4294853736.pdf" target="_blank">ВНИМИ</a>, выбрал шаг между реперами 5-10-15 метров (в зависимости от величины расчетных перемещений).</p>
  <figure id="C1Ip" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/18/90/189095da-7fa7-4bc9-89c3-b56997ed7567.png" width="806.3804347826085" />
    <figcaption>Расположение наблюдательной станции</figcaption>
  </figure>
  <figure id="8Gqr" class="m_column" data-caption-align="center">
    <img src="https://img3.teletype.in/files/20/fc/20fc7523-9778-4587-b92c-59074d90d869.png" width="2480" />
    <figcaption>Схема глубинного контроля и расположение инклинометров</figcaption>
  </figure>
  <h3 id="kptx" data-align="center">3. Автоматизация и геотехнические риски</h3>
  <p id="AejL"><br />В заключении я разработал программу автоматизированного мониторинга. Базой послужил <strong><em>Приказ Ростехнадзора от 13.11.2020 №439, приложение 8 таблица 1</em></strong>, регламентирующий количество циклов наблюдений. Но чтобы сделать систему гибкой и учесть внешние факторы, я проанализировал статистические данные.</p>
  <p id="rXUh">С помощью Python (библиотека pandas) я проанализировал массив метеонаблюдений за 65 лет, которые после фильтрации данных сократились до 45. </p>
  <figure id="T4rp" class="m_column" data-caption-align="center">
    <img src="https://img1.teletype.in/files/04/ab/04ab2678-e3f2-45e6-8534-1b0668217591.png" width="1804" />
    <figcaption>Статистические вычисления в Python</figcaption>
  </figure>
  <p id="n3Xh">Что это дало:<br />Нашел ежемесячную частоту наиболее разрушительных для массива погодных событий(ливни, циклы заморозки/оттайки), каждому месяцу рассчитал баллы опасности. На основе этих рисков адаптировал и дополнил базовую программу наблюдений, чем выше баллы опасности, тем чаще проводятся наблюдения.</p>
  <figure id="Dn6J" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/7e/8e/7e8ed4f9-8714-498d-b85f-84ffdff57685.png" width="525" />
    <figcaption>Частота событий по месяцам</figcaption>
  </figure>
  <figure id="TFgA" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/0f/7f/0f7fd7b2-5d6f-4804-94d2-080298e36851.png" width="670" />
    <figcaption>Матрица геотехнических рисков</figcaption>
  </figure>
  <p id="qgw5">В итоге расписал всё до мелочей, работу роботизированных тахеометров, места установки скважинных инклинометров, привязку циклов наблюдений к БВР и даже способы компенсации рефракции при измерениях на основе температурных датчиков.</p>
  <p id="SLfD">4. Экономический эффект<br />В моем проекте я применил принцип концентрированного мониторинга, чтобы не «засеивать» датчиками весь массив,  сфокусировал ресурсы только на участках повышенной опасности, выявленных при моделировании. Это позволяет:</p>
  <p id="1gpa">1. Не устанавливать реперы там, где в этом нет необходимости, реперы устанавливаются только в зонах повышенной опасности;<br />2. Повышать точность мониторинга в наиболее опасных зонах;<br />3.Минимизировать риски внезапных обрушений, которые могут стоить компании человеческих жизней и миллионных убытков.</p>
  <figure id="JoDy" class="m_column">
    <img src="https://img3.teletype.in/files/af/55/af550f8a-d50a-4572-97bf-0e7cb148b8b2.png" width="1344" />
  </figure>
  <p id="7yuK">На последнем графике видно, что операционные затраты на маркшейдерскую службу с учетом трат на мониторинг составляют всего 2,7% от годовых трат предприятия. Это ничтожная цена за безопасность работы всего карьера, для примера траты на ДТ составляют 32,5%.</p>
  <p id="4rLm">Выполняя эту работу, я по-новому взглянул на специальность и увидел карьер как систему, где на стыке геомеханики, IT и экономики рождаются самые интересные, смелые и эффективные решения.</p>
  <p id="ZAFC">Для меня маркшейдер сегодня - это не «просто человек за тахеометром», а горный инженер-стратег и системный интегратор. Это специалист, который переводит хаос природных напряжений и координат на язык безопасности, цифр и прибыли, связывая воедино разрозненные данные. Именно на этом пересечении технологий и классического горного дела я вижу свое будущее: превращать неочевидные риски в прозрачную систему, внедрять IT и беспилотные технологии в производство.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@scheidermark/llmstudy</guid><link>https://teletype.in/@scheidermark/llmstudy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><comments>https://teletype.in/@scheidermark/llmstudy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark#comments</comments><dc:creator>scheidermark</dc:creator><title>От обучения к базе знаний, как промпт-инжиниринг помогает мне в работе с QGIS и Obsidian</title><pubDate>Fri, 23 Jan 2026 19:18:01 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/36/32/3632d729-b221-4d3c-8e21-e0a9c9829414.png"></media:content><tt:hashtag>cad</tt:hashtag><tt:hashtag>mentor_report</tt:hashtag><tt:hashtag>workflow</tt:hashtag><tt:hashtag>freecad</tt:hashtag><tt:hashtag>prompt_engineering</tt:hashtag><tt:hashtag>qgis</tt:hashtag><tt:hashtag>промптинжиниринг</tt:hashtag><tt:hashtag>obsidian</tt:hashtag><tt:hashtag>база_знаний</tt:hashtag><description><![CDATA[<img src="https://img1.teletype.in/files/48/65/48658821-9725-4471-b672-83c06d09ee8f.png"></img>Мы привыкли использовать большие языковые модели как продвинутый поиск или калькулятор, но это всё равно что забивать микроскопом гвозди. Для меня как для инженера, время очень ценный ресурс. Поэтому я собрал систему, которая превращает LLM в полноценную &quot;кафедру&quot;: здесь один агент учит меня сложным программам вроде QGIS, а второй сразу преобразует эти знания в структурированные заметки для Obsidian. В этой статье я поделюсь промптами и логикой системы, которая помогает мне учиться в разы быстрее.]]></description><content:encoded><![CDATA[
  <blockquote id="TRfT">Мы привыкли использовать большие языковые модели как продвинутый поиск или калькулятор, но это всё равно что забивать микроскопом гвозди. Для меня как для инженера, время очень ценный ресурс. Поэтому я собрал систему, которая превращает LLM в полноценную &quot;кафедру&quot;: здесь один агент учит меня сложным программам вроде QGIS, а второй сразу преобразует эти знания в структурированные заметки для Obsidian. В этой статье я поделюсь промптами и логикой системы, которая помогает мне учиться в разы быстрее.</blockquote>
  <p id="Hm44">Не так давно я начал экспериментировать с написанием различных промптов и анализировать как написание промпта влияет на итоговый результат. Сейчас в заметках у меня накопились десятки различных вариаций и я пришел к выводу, что самым полезными для меня являются промпты на менторов (агентов) со специализацией на различном ПО, например Civil3d, QGis и тд. В этой статье я напишу свой вариант использования LLM в связке с Obsidian Vault для обучения техническим программам и автоматизированному формированию заметок, что будет очень полезно в контексте организации обучения в связке с созданием большого количества заметок для личной базы знаний. </p>
  <p id="PzKX">В статье будет приведено два промпта:</p>
  <ul id="vxqH">
    <li id="PYWY">первый — это QGIS-ментор, который принимает задачу, разбивает ее на этапы, утверждает все с пользователем и проходя по каждому из этапов помогает пользователю разобраться в программе, при необходимости углубляясь в необходимые темы. На выходе получается структурированный отчет-инструкция по выполненной работе, который может редактироваться по запросу пользователя, урезаться или наоборот дополняться необходимыми деталями.</li>
    <li id="x4gX">второй промпт — технический писатель получает отчет от QGIS-ментора (или любого другого агента-ментора), преобразует его под формат Obsidian Vault и выводит как блок кода markdown. Код вставляется в Obsidian и сразу формируется в красивую заметку.</li>
  </ul>
  <p id="bVc2">Я нахожу это очень удобным и полезным по нескольким причинам:</p>
  <p id="h4nd">Во-первых: можно обучаться сразу на практике как будто пользователь на индивидуальном занятии с опытнейшим преподавателем, который находит все необходимые материалы, ссылки и которому можно без стеснения задавать почти бесконечное количество вопросов в рамках задачи.</p>
  <p id="XgoX">Во-вторых: колоссальная экономия времени, ментор дает пользователю примеры решения, которые сразу же применяются на практике и лучше запоминаются. Так же можно прописать требование глубоко разобрать любую тему в ПО, например характерные линии в Civil 3d и сформировать на выходе информацию в заметку для личной базы знаний.</p>
  <p id="FhYG"><strong>Статья разбита на следующие части:</strong></p>
  <ol id="uyTH">
    <li id="XVG3"><em>Промпт, ментор-QGis(агент)</em></li>
    <li id="989M"><em>Промпт, технический писатель(агент)</em></li>
    <li id="AZ7A"><em>Интеграция агентов с Obsidian</em></li>
    <li id="xgrG"><em>Выводы</em></li>
    <li id="iFTx"><em>Полезные ссылки</em></li>
  </ol>
  <p id="42Tj">Ниже приведена схема взаимодействия пользователя с агентом-ментором, агентом-техписателем и базой данных Obsidian</p>
  <figure id="PMXs" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/48/65/48658821-9725-4471-b672-83c06d09ee8f.png" width="785" />
    <figcaption>Система взаимодействия пользователя с агентами</figcaption>
  </figure>
  <h2 id="dbTx" data-align="center">1. Промпт, ментор-QGis</h2>
  <p id="Xl6J"></p>
  <section style="background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="LChD"># РОЛЬ И ЦЕЛЬ (QGIS Mentor)</p>
    <p id="t9c0">Ты - **профессиональный картограф и маркшейдер с многолетним опытом преподавания, эксперт в QGIS**.</p>
    <p id="jYP4">Твоя задача - быть моим личным ментором, помогая решать задачи в программе QGIS и создавая для меня персональную базу знаний.</p>
    <p id="tLWe">**Уровень пользователя:** Новичок (небольшой опыт, знает основы интерфейса).</p>
    <p id="bVl2">**Версия QGIS:** По умолчанию 3.34 (пользователь может изменить командой &#x60;!version&#x60;).</p>
    <p id="GIES">---</p>
    <p id="10yF">## ПЕРЕД НАЧАЛОМ РАБОТЫ (Твоё первое сообщение)</p>
    <p id="BJLL">В самом первом сообщении ты должен представиться и обязательно изложить следующие ограничения:</p>
    <p id="wf8p">1. **Отсутствие «зрения»:** Напомни, что ты не видишь мой экран или файлы.</p>
    <p id="E5g2">2. **БЕЗОПАСНОСТЬ ДАННЫХ:** Настоятельно порекомендуй мне **всегда сохранять проект** перед выполнением сложных операций.</p>
    <p id="wZjY">---</p>
    <p id="Z2vr">## КЛЮЧЕВЫЕ ПРАВИЛА ВЗАИМОДЕЙСТВИЯ</p>
    <p id="sEjK">1. **Анализ запроса:** Получив вопрос, проанализируй его. Если он неясен, запроси уточнения. Если некорректен или невыполним, тактично объясни почему и предложи альтернативу.</p>
    <p id="jCTh">2. **Оценка сложности:** Перед началом кратко оцени сложность (например, «Это задача средней сложности, примерно 5 шагов»).</p>
    <p id="xpVr">3. **Пошаговый план:** Предоставь краткий, пронумерованный план решения. Не начинай объяснение, пока я не напишу «продолжай».</p>
    <p id="XEHU">4. **Итеративное объяснение:** Объясняй по **одному шагу за раз**. После каждого шага жди моего ответа.</p>
    <p id="0cXZ">5. **Проактивная проверка:** В конце каждого шага задавай вопрос: **«Этот шаг получился? Можем переходить к следующему?»**.</p>
    <p id="9wnF">6. **Протокол &quot;Я застрял&quot;:** Если я отвечаю, что у меня **не получается** или я чего-то не вижу, немедленно переходи в **режим отладки**. Задавай уточняющие вопросы, чтобы найти проблему (например, «Какое сообщение об ошибке вы видите?», «Какие пункты есть в вашем меню?»).</p>
    <p id="H6ft">7. **Финальный отчёт и База Знаний:** Когда тема исчерпана, создай полный структурированный отчёт. **Присвой ему уникальный ID** (например, &#x60;[QGIS_LESSON_001]&#x60;) и в конце добавь ободряющую фразу.</p>
    <p id="xrWT">## Финальный отчёт и База Знаний</p>
    <p id="e5jT">По завершении задачи ты ОБЯЗАН предложить пользователю создать отчет.</p>
    <p id="rwUe">- Сначала представь **черновик** отчета по структуре ниже.</p>
    <p id="D6t9">- Если пользователь вводит команду &#x60;!refine&#x60; [ваш комментарий/запрос], ты должен обсудить детали, изменить глубину изложения или дополнить пункты.</p>
    <p id="noCL">- Как только отчет утвержден (или если пользователь сразу согласен), выдай финальную версию.</p>
    <p id="KxQx">## Структура отчета (для Техписателя)</p>
    <p id="6vwO">Внутри тегов используй строго следующий формат:</p>
    <p id="sKfD">**ID:** &#x60;[CAD_TIP_XXX]&#x60; (присвой порядковый номер)</p>
    <p id="g0Th">**Task:** [Краткое описание задачи]</p>
    <p id="HpxH">**Solution:** [ Пошаговое описание решения]</p>
    <p id="ifPd">**Best_Practice:** [Как это делать профессионально: стандарты, &quot;легкость&quot; и редактируемость модели]</p>
    <p id="RddX">**Meta:** #cad #mentor_report #workflow</p>
    <p id="q7PY">---</p>
    <p id="5HNG">## ПРАВИЛА ОТВЕТА И СТИЛЬ</p>
    <p id="48kH">1. **Стиль ментора:** Говори как опытный, терпеливый и поддерживающий преподаватель. Объясняй так, как будто сидишь рядом и смотришь на стандартный интерфейс QGIS.</p>
    <p id="U9RO">2. **Точность формулировок:** Всегда используй точные названия инструментов, меню и панелей в обратных кавычках. Пример: «Откройте меню &#x60;&#x60; &#x60;Слой&#x60; &#x60;&#x60; -&gt; &#x60;&#x60; &#x60;Добавить слой&#x60; &#x60;&#x60;».</p>
    <p id="GRqZ">3. **Система предупреждений:** Используй префиксы:</p>
    <p id="bfGF">- **&#x60;[💡 СОВЕТ]&#x60;**: Для полезных рекомендаций.</p>
    <p id="HasK">- **&#x60;[⚠️ ВНИМАНИЕ!]&#x60;**: Для необратимых действий или шагов, где легко допустить ошибку.</p>
    <p id="uoHL">4. **Совет от наставника:** В финальном отчёте твой совет **обязательно** должен включать **альтернативные методы решения задачи** или **распространенные ошибки**, которых следует избегать. Если решение включает плагин, дай краткую инструкцию по его установке.</p>
    <p id="341z">---</p>
    <p id="tU0D">## ПРИМЕР ПОЛНОГО ВЗАИМОДЕЙСТВИЯ (Few-Shot Example)</p>
    <p id="OZRv">- **Пользователь:** Как мне просто поменять цвет полигона?</p>
    <p id="mBLI">- **Ты:** Здравствуйте! Я ваш личный ментор по QGIS. [...] *(полное приветствие)*. Что касается вашего вопроса: это простая задача, займёт 2 шага. **План:** 1. Открыть свойства слоя. 2. Изменить цвет заливки. Если готовы, напишите «продолжай».</p>
    <p id="RFZB">- **Пользователь:** продолжай</p>
    <p id="8LA8">- **Ты:** **Шаг 1:** На панели &#x60;&#x60; &#x60;Слои&#x60; &#x60;&#x60;, кликните правой кнопкой мыши по вашему слою и выберите &#x60;&#x60; &#x60;Свойства...&#x60; &#x60;&#x60;. У вас получилось?</p>
    <p id="kdlJ">- **Пользователь:** не получается, у меня нет такого пункта</p>
    <p id="xUhi">- **Ты:** Понял. Давайте разбираться. **(Режим отладки)**. Вы точно кликаете правой кнопкой мыши именно на названии слоя? Какие пункты вы видите в самом низу меню?</p>
    <p id="bfLo">- **Пользователь:** ой, все, нашел, получилось.</p>
    <p id="sjOU">- **Ты:** Отлично! Тогда **Шаг 2:** [...] *(объяснение шага 2)*.</p>
    <p id="cQw8">- **Пользователь:** все готово, спасибо!</p>
    <p id="z39O">- **Ты:** Отлично! Рад был помочь. Вот конспект урока. **ID Урока: &#x60;[QGIS_LESSON_001]&#x60;** [...] *(полный отчет)*. Вы прекрасно справились! Так держать!</p>
    <p id="AUuf">---</p>
    <p id="lKW9">## УПРАВЛЯЮЩИЕ КОМАНДЫ</p>
    <p id="hGCw">- **&#x60;!reset&#x60;**: Полностью сбрасывает наш диалог.</p>
    <p id="Phu6">- **&#x60;!status&#x60;**: Напоминает, на каком шаге мы находимся, и предлагает следующий шаг.</p>
    <p id="eTb5">- **&#x60;!help&#x60;**: Выводит справку по командам.</p>
    <p id="5mPz">- **&#x60;!version [номер]&#x60;**: Устанавливает вашу версию QGIS (например, &#x60;!version 3.22&#x60;).</p>
    <p id="VV7d">- **&#x60;!recall [ID]&#x60;**: Напоминает ключевые шаги из урока с указанным ID.</p>
    <p id="U7lL">- **&#x60;!export_kb&#x60;**: Выводит всю вашу базу знаний (список ID и заголовков уроков) в формате Markdown.</p>
    <p id="jXbj">- **&#x60;!explain [простой/подробный]&#x60;**: Устанавливает уровень детализации для следующих объяснений.</p>
    <p id="kjPU">---</p>
    <p id="H9jF">## НАЧАЛО РАБОТЫ</p>
    <p id="yHWi">Подтверди, что ты понял свою роль и все инструкции. Затем выведи своё **первое сообщение** согласно разделу «ПЕРЕД НАЧАЛОМ РАБОТЫ» и будь готов принять мой первый вопрос.</p>
  </section>
  <p id="ncqR"></p>
  <p id="rvJH">В конце промпта я добавил управляющие команды, чтобы взаимодействие с промптом было еще более гибким, при желании их можно расширить или наоборот убрать лишние. </p>
  <p id="NjpU">Для примера приведу карту, которую я сделал с нуля, настроив все объекты и фактически создал свою подложку, используя <a href="https://ggspb.org/normativnaya-baza/files/uslovnye-znaki-dlia-topograficheskikh-kart-masshtabov-25000-50000-100000.pdf" target="_blank">методические требования</a>, свои начальные знания QGis и этот промпт, потратив 1 вечер:</p>
  <p id="sDDZ"></p>
  <figure id="NrYB" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/0a/94/0a94521b-1e27-4b89-b500-172aefd9dce9.png" width="1008" />
    <figcaption>Оформленная карта</figcaption>
  </figure>
  <figure id="R31P" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/93/f3/93f37d4d-149a-426a-8606-0b8027f2c606.png" width="1002" />
    <figcaption>Укрупненный вид карты</figcaption>
  </figure>
  <p id="LwZK">После выполненной задачи и обсуждения, QGis-ментор выдает отчет:</p>
  <figure id="T8OO" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/12/ff/12ff185f-d0a5-4517-bd7b-82bca87546ea.png" width="552" />
    <figcaption>Пример отчета ментора</figcaption>
  </figure>
  <p id="7fHx">С этим отчетом иду в другой чат или проект/бота, вставляю его и получаю размеченный документ для <a href="https://obsidian.md/" target="_blank">Obsidian Vault</a> от универсального технического писателя (он универсальный, потому что принимает любые черновики и преобразует их в заготовки для красивых заметок Obsidian):</p>
  <h2 id="PeH1" data-align="center">2. Промпт, технический писатель</h2>
  <p id="j8O8"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="MLIs"># Role: Senior Technical Writer &amp; Obsidian Architect</p>
    <p id="xyBG">## Context</p>
    <p id="N7Vk">Ты - эксперт по управлению знаниями и технический писатель. Твоя задача: принимать отчеты от Агента-Ментора и преобразовывать их в профессиональные заметки для базы знаний (Obsidian Vault), ничего не сокращая и не меняя смысла.</p>
    <p id="FYsu">## Task</p>
    <p id="9sTP">Преврати входящий отчет в Markdown-файл, используя продвинутое форматирование Obsidian (YAML, Callouts, Wiki-links).</p>
    <p id="g7F2">## Formatting Rules (Strict)</p>
    <p id="mGnp">1. **YAML Frontmatter:** В начале заметки обязательно создай блок:</p>
    <p id="XWnK">---</p>
    <p id="G3GE">id: [ID из отчета]</p>
    <p id="CvFv">task_type: cad_solution</p>
    <p id="jqvh">created: {{date}}</p>
    <p id="sWQF">tags: [все теги из Meta через запятую]</p>
    <p id="08UJ">---</p>
    <p id="lHYq">2. **Заголовок:** Используй &#x60;Task&#x60; как основной заголовок H1, но сформулируй его лаконично.</p>
    <p id="LXqp">3. **Визуальная структура (Obsidian Callouts):**</p>
    <p id="X02J">- Блок **Solution** оформи в Callout-блок типа &#x60;[!success] Решение&#x60;.</p>
    <p id="MLXK">- Блок **Best Practice** оформи в Callout-блок типа &#x60;[!abstract] Лучшие практики&#x60;. Используй списки для читаемости.</p>
    <p id="BrxA">4. **ID и Навигация:**</p>
    <p id="NJVE">- В самом верху текста (под H1) добавь: &#x60;&gt; [!info] ID Заметки: #[[ID_из_отчета]]&#x60;.</p>
    <p id="pvsR">## Input Example (от Ментора)</p>
    <p id="7HXT">---REPORT_START---</p>
    <p id="fkmU">**ID:** &#x60;[CAD_TIP_042]&#x60;</p>
    <p id="mOML">**Task:** Создание параметрической резьбы в FreeCAD через Spreadsheet.</p>
    <p id="RBwv">**Solution:** Создать таблицу, задать параметры &#x27;Pitch&#x27; и &#x27;Diameter&#x27;, связать их с эскизом профиля через выражения (Expression).</p>
    <p id="JA6o">**Best_Practice:** Всегда использовать именованные ячейки. Избегать &quot;Hardcoded&quot; значений в эскизах для легкого ресайзинга.</p>
    <p id="J8LN">**Meta:** #cad #mentor_report #workflow #freecad</p>
    <p id="UN73">---REPORT_END---</p>
    <p id="bvNX">## Your Output (Example)</p>
    <p id="YwMw"># Параметрическая резьба в FreeCAD через Spreadsheet</p>
    <p id="ZaRE">&gt; [!info] ID Заметки: #[[CAD_TIP_042]]</p>
    <p id="0Grn">### Описание</p>
    <p id="2VRZ">Создание параметрической резьбы с использованием связки Spreadsheet и эскизов.</p>
    <p id="lVfH">&gt; [!success] Решение</p>
    <p id="g7nl">&gt; 1. Создать таблицу (Spreadsheet).</p>
    <p id="Mb3o">&gt; 2. Задать параметры &#x60;Pitch&#x60; и &#x60;Diameter&#x60;.</p>
    <p id="m2PV">&gt; 3. Связать параметры с эскизом профиля через **Expressions**.</p>
    <p id="qbDp">&gt; [!abstract] Best Practices</p>
    <p id="UqiI">&gt; * **Именованные ячейки:** Всегда присваивайте имена ячейкам в таблице.</p>
    <p id="H6J7">&gt; * **Гибкость:** Избегайте &quot;Hardcoded&quot; (жестко вписанных) значений для обеспечения легкого ресайзинга модели.</p>
    <tt-tags id="f6oO">
      <tt-tag name="cad">#cad</tt-tag>
      <tt-tag name="mentor_report">#mentor_report</tt-tag>
      <tt-tag name="workflow">#workflow</tt-tag>
      <tt-tag name="freecad">#freecad</tt-tag>
    </tt-tags>
  </section>
  <p id="k7nq"></p>
  <p id="rIXs">Технический писатель выдает markdown файл, уже содержащий подготовленную для обсидиана заметку с необходимой разметкой и решением: </p>
  <p id="ZwxI"></p>
  <figure id="9iA3" class="m_original">
    <img src="https://img1.teletype.in/files/44/49/44492d86-437c-4614-9396-5d7e09a4b4be.png" width="712" />
  </figure>
  <h2 id="8WMw" data-align="center">3. Интеграция с Obsidian</h2>
  <p id="7tTw">Заметка получена, теперь необходимо немного настроить Obsidian, скачав плагины для более удобного форматирования, я скачал следующие плагины:</p>
  <ol id="Jxfd">
    <li id="kjQy">Advanced tables. Плагин помогает сделать красивые и легко изменяемые таблицы;</li>
    <li id="bPty">Dataview. Мощный плагин для сортировки данных заметок, если заметок много, то можно будет фильтровать и анализировать данные в них;</li>
    <li id="XxrR">Excalidraw. Плагин позволяет делать зарисовки в заметках, иногда удобнее сделать быструю зарисовку/качественный рисунок, чем описывать словами. </li>
  </ol>
  <p id="kbZU">Очередность действий для установки плагинов на рисунке ниже:</p>
  <figure id="D83P" class="m_custom">
    <img src="https://img1.teletype.in/files/05/01/0501c9ed-c18d-488a-a3d8-a2d3f24d886c.png" width="777" />
  </figure>
  <p id="KtJZ">Все, данные готовы, можно копировать md файл из промпта-техписателя, создать новую заметку командой Ctrl+N и вставить в нее файл, получится красивый документ с расставленными наверху данными и тегами, по которым можно выполнить поиск.</p>
  <p id="Ru77"></p>
  <figure id="Td2L" class="m_custom">
    <img src="https://img3.teletype.in/files/eb/55/eb55e5b6-7932-4db9-9d63-69d169ef5d19.png" width="855.9447287615149" />
  </figure>
  <figure id="C6Ua" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/d8/da/d8dab598-b0fd-4fc1-92f7-22490f5474bb.png" width="854" />
    <figcaption>Внешний вид заметки</figcaption>
  </figure>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="Nncz">Можно настроить выноски заметок под себя, заменив соответствующие теги в промпте или в самом документе. За зеленое обрамление решения отвечает выноска [!success] после которой идет нужный заголовок, в данном случае «Решение». Полный список и функционал этих тегов есть на сайте обсидиана <a href="https://help.obsidian.md/callouts" target="_blank">ссылка для ознакомления</a></p>
  </section>
  <figure id="gNY9" class="m_original" data-caption-align="center">
    <img src="https://img3.teletype.in/files/ac/d8/acd8791b-6c83-4479-b112-d1cdf65fe001.png" width="167" />
    <figcaption>Оформление выноски</figcaption>
  </figure>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="3oy1">Так же ключевые определения в заметке можно связывать с другими документами или формировать новые, не выходя из текущей. Для этого необходимо ввести [[]], обсидиан предложит сослаться на существующий документ, если не ссылаться на существующую заметку и написать внутри квадратных скобок название, то создастся новая заметка, связанная с текущей. </p>
    <p id="eGyk">Чтобы дать название ссылки на заметку, необходимо в квадратных скобках выбрать документ на которую идет ссылка и после ее названия поставить символ | и ввести необходимое название. В примере [[GGS|net]] отображается в тексте как net — ссылка на заметку GGS.</p>
  </section>
  <figure id="VCX0" class="m_original">
    <img src="https://img2.teletype.in/files/5e/10/5e107c14-4a6f-4633-aec2-f48da4c03d2d.png" width="375" />
  </figure>
  <figure id="Xpz6" class="m_original">
    <img src="https://img1.teletype.in/files/c1/b2/c1b2eeb4-6ca6-4901-847f-e3c3209cc4fc.png" width="311" />
  </figure>
  <h3 id="qMlr" data-align="center">Выводы</h3>
  <p id="Gcat">В этой статье я рассмотрел как связать LLM с обучением в ПО и быстро создавать заметки в Obsidian vault. Мне это помогает быстрее и качественнее разбирать функционал современных программ и фиксировать результаты своего обучения в виде персональной базы знаний, к которой можно будет вернуться в случае решения похожей задачи через время и не тратить время на вспоминание алгоритмов решения. Приведенные выше промпты использовались в Gemini 3, Grok 3,4, Qwen 3. </p>
  <p id="jbNx">Очень важно, что пользователь является ключевым звеном в этой системе и без него ничего работать не будет, приведенное выше взаимодействие агентов сделано для улучшенного обучения и формирования личной базы знаний.</p>
  <p id="V7wY"></p>
  <h3 id="OS2z">Полезные ссылки:</h3>
  <ol id="uN6i">
    <li id="fOXq">Ссылка на обсидиан: <a href="https://obsidian.md/" target="_blank">https://obsidian.md/</a> </li>
    <li id="bK5H">Оформление карт: <a href="https://ggspb.org/normativnaya-baza/files/uslovnye-znaki-dlia-topograficheskikh-kart-masshtabov-25000-50000-100000.pdf" target="_blank">https://ggspb.org/normativnaya-baza/files/uslovnye-znaki-dlia-topograficheskikh-kart-masshtabov-25000-50000-100000.pdf</a>   </li>
    <li id="rz72">Выноски в обсидиане: <a href="https://help.obsidian.md/callouts" target="_blank">https://help.obsidian.md/callouts</a></li>
    <li id="o7NV">Промпт для оценки и улучшения промптов: <a href="https://teletype.in/@foxhunterx/S3z_5cw4n4D" target="_blank">https://teletype.in/@foxhunterx/S3z_5cw4n4D</a></li>
  </ol>
  <p id="0MwI"></p>
  <tt-tags id="NvXT">
    <tt-tag name="prompt_engineering">#prompt_engineering</tt-tag>
    <tt-tag name="qgis">#qgis</tt-tag>
    <tt-tag name="промптинжиниринг">#промптинжиниринг</tt-tag>
    <tt-tag name="obsidian">#obsidian</tt-tag>
    <tt-tag name="база_знаний">#база_знаний</tt-tag>
  </tt-tags>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@scheidermark/ExcelAngleToolkit</guid><link>https://teletype.in/@scheidermark/ExcelAngleToolkit?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><comments>https://teletype.in/@scheidermark/ExcelAngleToolkit?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark#comments</comments><dc:creator>scheidermark</dc:creator><title>Excel-калькулятор углов: как преобразовать градусы, минуты и секунды в десятичные значения и обратно</title><pubDate>Fri, 14 Mar 2025 08:25:32 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f7/79/f779db3d-ee00-4e6b-a61d-c22a21defe02.png"></media:content><category>Геодезия, картография, кадастр</category><description><![CDATA[<img src="https://img1.teletype.in/files/8b/32/8b3226a0-51e8-4aa9-95b8-8a9992178500.png"></img>Работа с углами в формате градусы-минуты-секунды часто вызывает сложности при автоматизации расчетов. В этой статье разберу, как с помощью Excel:   Преобразовать строку вида 46°12′44″ в десятичное число. Выполнить обратное преобразование: из 46,2122222 получить 46°12′44″.Рассмотрю текстовыми функциями (ЛЕВСИМВ, ПСТР, НАЙТИ, ЦЕЛОЕ), на основе рассмотренных функций получим формулы для инженерных, маркшейдерско-геодезических расчетов.]]></description><content:encoded><![CDATA[
  <p id="tTNd">Хочу рассмотреть задачу перевода углов формата (d°m′s″) в десятичные значение и обратно из десятичного значения в формат градусы° минуты′ секунды″ и математические операции над ними при помощи microsoft excel.</p>
  <p id="NbYC">Пусть имеется угол <u>46°12′44″</u>, необходимо найти синус этого угла или сложить его с углом <u>23°34′23″</u>. Можно разбить каждый из углов на 3 части - 3 ячейки и , преобразовать их к формату десятичных чисел, помня о том, что в 1 градусе 60 минут, а в 1 минуте 60 секунд. Можно воспользоваться онлайн калькулятором, а можно и написать калькулятор самому, распишу ниже несколько способов:</p>
  <h2 id="Bc24" data-align="center">Простой способ</h2>
  <p id="QYTn"></p>
  <figure id="NhKm" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/d7/86/d786999e-ceda-4a62-a28e-d28bed011bb8.png" width="336" />
    <figcaption>Рисунок 1 - исходные данные</figcaption>
  </figure>
  <p id="etAY"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="8qgH">Формула перевода будет простой и выглядеть следующим образом: <code>=N9+O9/60+P9/3600 (46+12/60+44/3600) = 46,21(2)</code></p>
  </section>
  <p id="wDAJ"></p>
  <figure id="NaPi" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/d0/3d/d03d2b05-7375-4d3c-b8fe-2678054e8965.png" width="578.8620689655173" />
    <figcaption>Рисунок 2 - перевод угла с разбиением на ячейки</figcaption>
  </figure>
  <p id="Nofm">Но можно осуществить переход без разбиения значения угла на 3 ячейки, красиво, но чуть сложнее.</p>
  <h2 id="YbbD" data-align="center"><strong>Интересный способ</strong></h2>
  <p id="COLZ">Способ позволяет получить десятичное значение угла, в соседней ячейке без дополнительных разбиений угла, сразу приведу формулу и ниже объясню как она работает: </p>
  <p id="6lIa"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="iPqK"><code>=ЛЕВСИМВ(M9;НАЙТИ(&quot;°&quot;;M9)-1)+ПСТР(M9;НАЙТИ(&quot;°&quot;;M9)+1;НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1)/60+ПСТР(M9;НАЙТИ(&quot;&#x27;&quot;;M9)+1;НАЙТИ(&quot;&quot;&quot;&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600</code></p>
  </section>
  <figure id="f8vn" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/90/8d/908d2867-1d58-4805-9220-d5fea341ccc4.png" width="397" />
    <figcaption>Рисунок 3 - лаконичные преобразования</figcaption>
  </figure>
  <p id="cEBX"></p>
  <figure id="PzD6" class="m_custom" data-caption-align="center">
    <img src="https://img4.teletype.in/files/f2/13/f213109b-fc45-485a-895b-072ab7f36b6a.png" width="800" />
    <figcaption>Рисунок 4 - разбиение формулы</figcaption>
  </figure>
  <h2 id="wFzo"></h2>
  <h2 id="OmDS" data-align="center"><u>Извлечение градусов</u></h2>
  <p id="LVlw"></p>
  <p id="SydT">Пойду по порядку, сначала разберу часть формулы, извлекающую значение градусов </p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="kIGW"><code>=ЛЕВСИМВ(M9;НАЙТИ(&quot;°&quot;;M9)-1)  </code></p>
  </section>
  <p id="nnD4"><code>ЛЕВСИМВ(текст; количество извлекаемых символов)</code> - эта функция позволяет извлекать необходимое количество символов из строки, начиная слева. Как видно из примера, функция обрабатывает ячейку </p>
  <p id="ijBj"><strong>Первый аргумент</strong>: это <code>текст </code>- ячейка <code>М9;</code></p>
  <p id="Pbei"><strong>Второй аргумент:</strong> это <code>количество извлекаемых символов</code>, для нахождения воспользовался функцией <code>НАЙТИ(&quot;°&quot;;M9)</code>. Эта функция находит позицию искомого символа, после выполнения будет выведено число 3, так как знак градусов находится на третьей позиции, чтобы вывести только числовые значения нужно от 3 отнять 1 <code>НАЙТИ(&quot;°&quot;;M9)-1)</code>, таким образом получим количество чисел до знака градусов. Если в <code>ЛЕВСИМВ</code> не добавлять второй аргумент - <code>количество извлекаемых символов</code>, то выведется первое слева значение <code>ЛЕВСИМВ(M9) = 3.</code> (рисунок 3)</p>
  <p id="idip"><strong>Результат:</strong></p>
  <p id="IveB"> <code>=ЛЕВСИМВ(M9;2) </code></p>
  <p id="RYsX"></p>
  <h3 id="EFuK"><u>Извлечение минут и перевод в градусы</u></h3>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="OeKF"> <code>ПСТР(M9;НАЙТИ(&quot;°&quot;;M9)+1;НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1)/60</code></p>
  </section>
  <p id="qCrE">Функция найти разобрана выше, из нового - это функция <code>ПСТР</code>. ПСТР возвращает заданное число знаков из строки, начиная с указанной позиции. <code>ПСТР(текст; начальная позиция; количество возвращаемых символов)</code>. </p>
  <p id="6iWb"><strong>Первый аргумент:</strong> <code>М9</code> - это ячейка(<code>текст</code>) в которой ведется поиск;</p>
  <p id="U5ha"><strong>Второй аргумент:</strong> <code>начальная позиция - НАЙТИ(&quot;°&quot;;M9)+1</code>, то есть начальной позицией является позиция после знака «°»,единица прибавляется, так как <code>НАЙТИ(&quot;°&quot;;M9)</code> = позиция знака градусов «°», а необходимо найти следующую за ней;</p>
  <p id="VxRe"><strong>Третий аргумент: <code>количество возвращаемых символов </code></strong></p>
  <p id="6TzA"><code><strong> НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1</strong></code></p>
  <p id="LP4F">Находим позицию знака минут «&#x27;» в примере это 6, </p>
  <p id="WLV2">Находим позицию знака «°» это 3</p>
  <p id="mQ3n">Вычитаем одно из другого и понимаем, что захватываем лишний символ и вместо числа получим число и текст, чтобы этого избежать просто вычитаем единицу.</p>
  <p id="ZPU2">Результат: 6-3-1 =2, два символа между «°» и «&#x27;» будут найдены и использованы в расчетах.</p>
  <p id="g9WT"><strong>Финальный результат работы формулы: </strong></p>
  <p id="b81E"><code><strong>ПСТР(M9;4;2) </strong></code>выведется 2 символа ячейки<strong> <code>M9</code>, </strong>начиная с четвертого, далее поделится на 60, так как в 1 градусе 60 минут.</p>
  <p id="eRXX"></p>
  <p id="e19N"></p>
  <h2 id="klGL" data-align="center"><u>Извлечение секунд и перевод в градусы</u></h2>
  <p id="U3p9"></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="kRg3"><code>ПСТР(M9;НАЙТИ(&quot;&#x27;&quot;;M9)+1;НАЙТИ(&quot;&quot;&quot;&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600</code> </p>
  </section>
  <p id="hscc">Формула аналогична формуле для извлечения минут.</p>
  <p id="pRNf"></p>
  <p id="E3if"><strong>Первый аргумент:</strong> <code>М9</code> - это ячейка(<code>текст</code>) в которой ведется поиск;</p>
  <p id="xvY1"><strong>Второй аргумент:</strong> <code>начальная позиция - НАЙТИ(&quot;&#x27;&quot;;M9)+1</code>, то есть начальной позицией является позиция после знака «&#x27;»,единица прибавляется, так как <code>НАЙТИ(&quot;&#x27;&quot;;M9)</code> = позиция знака секунд «&#x27;», а необходимо найти следующую за ней;</p>
  <p id="NYr5"><strong>Третий аргумент: <code>количество возвращаемых символов </code></strong></p>
  <p id="o9wb"><code><strong> НАЙТИ(&quot;&quot;&quot;&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1</strong></code></p>
  <p id="f8OA">Находим позицию знака секунд «<code><strong>&quot;</strong></code>» в примере это 9. <strong>ВАЖНО!</strong> В Excel кавычки (<code>&quot;</code>) используются для обозначения текстовых строк. Если нужно указать сам символ кавычки внутри строки, то он должен быть &quot;экранирован&quot; — удвоен.</p>
  <p id="xQbR">Находим позицию знака «<code><strong>&#x27;</strong></code>» это 6</p>
  <p id="EzKM">Вычитаем одно из другого и понимаем, что захватываем лишний символ и вместо числа получим число и текст, чтобы этого избежать просто вычитаем единицу.</p>
  <p id="NIqe">Результат: 9-6-1 =2, два символа между «&#x27;» и «&quot;» будут найдены и использованы в расчетах.</p>
  <p id="6xCv"><strong>Финальный результат работы формулы: </strong></p>
  <p id="XeN9"><code><strong>ПСТР(M9;6;2) </strong></code>выведется 2 символа ячейки<strong> <code>M9</code>, </strong>начиная с шестого, далее поделится на 3600, так как в 1 градусе 60 минут, а в 1 минуте 60 секунд.</p>
  <p id="UpTi">После останется все сложить и получим десятичные значения градусов, с которыми можно дальше удобно взаимодействовать.</p>
  <figure id="D3m7" class="m_original" data-caption-align="center">
    <img src="https://img3.teletype.in/files/6a/ae/6aaed9f0-3030-44d8-aa2c-3ac1c9b730b7.png" width="463" />
    <figcaption>Рисунок 5 - преобразованные значения и вычисления с ними</figcaption>
  </figure>
  <h3 id="qOwv" data-align="center"></h3>
  <h2 id="VNZX" data-align="center"><strong><u>Обратные преобразования из десятичного значения угла в формат (г°м′с″)</u></strong></h2>
  <p id="JBIT"></p>
  <p id="X6e8">Для этого потребуется одна функция, из которой будет составлена формула, это функция - <code>ЦЕЛОЕ</code>, готовая формула:</p>
  <figure id="E6NT" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/fa/77/fa77d6b8-094e-402d-b2fd-d920ed6c2f80.png" width="394" />
    <figcaption>Рисунок 6 - обратные преобразования </figcaption>
  </figure>
  <section style="background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="e3sr"><code>=ЦЕЛОЕ(M14)&amp;&quot;°&quot;&amp;ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60)&amp;&quot;&#x27;&quot;&amp;((((M14-ЦЕЛОЕ(M14))*60)-ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60))*60)&amp;&quot;&quot;&quot;&quot;</code></p>
  </section>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="w5Z7"><code>=ЦЕЛОЕ(угол) &amp; &quot;°&quot; &amp; <br />ЦЕЛОЕ((угол - ЦЕЛОЕ(угол)) * 60) &amp; &quot;&#x27;&quot; &amp; <br />ОКРУГЛ(((угол - ЦЕЛОЕ(угол)) * 60 - ЦЕЛОЕ((угол - ЦЕЛОЕ(угол)) * 60)) * 60; 2) &amp; &quot;&quot;&quot;&quot;</code> </p>
    <p id="SOU5">Формула облегченная для восприятия</p>
  </section>
  <p id="hFtU"><code>ЦЕЛОЕ</code> Округляет число до ближайшего меньшего целого.</p>
  <p id="zFvu"><u><strong>Первая часть формулы:</strong> </u><code>ЦЕЛОЕ(M14)&amp;&quot;°&quot;&amp; в</code>ыделяет целое число градусов из десятичного обозначения угла, <code>&amp;&quot;°&quot;&amp;</code> прибавляет к числу знак градусов и следующее число. <code>ЦЕЛОЕ(30,3125)&amp;&quot;°&quot;&amp;</code> = 30° ;</p>
  <p id="ZyQD"><strong><u>Вторая часть формулы:</u></strong> <code>ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60)&amp;&quot;&#x27;&quot;&amp;</code> из значения ячейки M14 вычитаю целое значение этой ячейки, разность умножаю на 60, чтобы найти количество минут, далее выделяю целое количество минут = <code>ЦЕЛОЕ((30,3125 - 30) * 60)&amp;&quot;&#x27;&quot;&amp; = ЦЕЛОЕ(0,3125*60)&amp;&quot;&#x27;&quot;&amp;</code> = 18&#x27; ;</p>
  <p id="V7NT"><strong><u>Третья часть формулы:</u></strong> <code>((((M14-ЦЕЛОЕ(M14))*60)-ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60))*60)&amp;&quot;&quot;&quot;&quot;</code>  получается матрешка - целое в целом в целом ;)      Из значения ячейки M14 вычитаю целое значение этой ячейки (<u>нахожу значение градусов после запятой</u>), разность умножаю на 60(<u>получаю значение уже в минутах</u>), потом проделываю эту операцию еще раз (Из значения ячейки M14 вычитаю целое значение этой ячейки, разность умножаю на 60) нахожу целое количество минут, далее разность минуты- минус целые минуты = дробное значение секунд, умножаю дробное значение секунд на 60 и получаю целое значение: ((<code>((30,3125 - 30)) * 60) - ЦЕЛОЕ((30,3125-30)*60))*60)&amp;&quot;&quot;&quot;&quot;</code> = 45&quot;.</p>
  <p id="O3en"></p>
  <p id="wHpj"><u>В статье я использовал обычные кавычки как обозначение минут &#x27; секунд &quot; , но обычно используются спецсимволы минуты ′  секунды ″. </u></p>
  <p id="kuUJ">В формуле <code>=ЛЕВСИМВ(M9;НАЙТИ(&quot;°&quot;;M9)-1)+ПСТР(M9;НАЙТИ(&quot;°&quot;;M9)+1;НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1)/60+ПСТР(M9;НАЙТИ(&quot;&#x27;&quot;;M9)+1;НАЙТИ(&quot;&quot;&quot;&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600</code> при использовании спецсимвола секунд ″ не нужно его удваивать:</p>
  <p id="ZJvb"><code>=ЛЕВСИМВ(M9;НАЙТИ(&quot;°&quot;;M9)-1)+ПСТР(M9;НАЙТИ(&quot;°&quot;;M9)+1;НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1)/60+ПСТР(M9;НАЙТИ(&quot;&#x27;&quot;;M9)+1;НАЙТИ(&quot;″&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600   </code></p>
  <section style="background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="mObi"><code>НАЙТИ(&quot;″&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600</code></p>
  </section>
  <p id="ZhK4">И если появляется ошибка #ЗНАЧ! необходимо проверить совпадение спецсимволов в угле и формуле преобразования, приведение их к одному формату исправляет ошибку и делает вас счастливее! </p>
  <figure id="ZZKB" class="m_original">
    <img src="https://img4.teletype.in/files/3c/04/3c04f2c2-fae9-4d2b-b3d7-7f5c2ec16ca1.png" width="140" />
  </figure>
  <section style="background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="E1Ux">(&#x27; &quot; - кавычки ) </p>
    <p id="C2zP">(′ ″ - спецсимволы)</p>
  </section>
  <p id="H94d"></p>
  <h3 id="S7Oy"><u>Резюмирую: </u>в данной статье я рассмотрел способы преобразования углов различными способами, показал как комбинируя функции ms excel можно получить удобный и лаконичный калькулятор пересчета углов, надеюсь было полезно!</h3>
  <p id="53jD"></p>
  <ul id="Qw4F">
    <li id="skAO">Для вышеприведенных преобразований необходимы следующие функции (<code>ЛЕВСИМВ</code>, <code>НАЙТИ</code>, <code>ПСТР</code>, <code>ЦЕЛОЕ</code>)</li>
    <li id="hjZ2">Для перевода углов формата (d°m′s″) в десятичные значение используется формула: <code>=ЛЕВСИМВ(M9;НАЙТИ(&quot;°&quot;;M9)-1)+ПСТР(M9;НАЙТИ(&quot;°&quot;;M9)+1;НАЙТИ(&quot;&#x27;&quot;;M9)-НАЙТИ(&quot;°&quot;;M9)-1)/60+ПСТР(M9;НАЙТИ(&quot;&#x27;&quot;;M9)+1;НАЙТИ(&quot;&quot;&quot;&quot;;M9)-НАЙТИ(&quot;&#x27;&quot;;M9)-1)/3600</code></li>
    <li id="s30f">Для обратного преобразования из десятичного значения угла в формат (г°м′с″) используется формула:                                        <code>=ЦЕЛОЕ(M14)&amp;&quot;°&quot;&amp;ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60)&amp;&quot;&#x27;&quot;&amp;((((M14-ЦЕЛОЕ(M14))*60)-ЦЕЛОЕ((M14-ЦЕЛОЕ(M14))*60))*60)&amp;&quot;&quot;&quot;&quot;</code></li>
  </ul>
  <p id="db2g"></p>
  <h3 id="VLLy"><strong>Источники:</strong></h3>
  <p id="1PTB"><a href="https://support.microsoft.com/ru-ru/office/%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BB%D0%B5%D0%B2%D1%81%D0%B8%D0%BC%D0%B2-%D0%BB%D0%B5%D0%B2%D0%B1-9203d2d2-7960-479b-84c6-1ea52b99640c" target="_blank">ЛЕВСИМВ, ЛЕВБ (функции ЛЕВСИМВ, ЛЕВБ) - Служба поддержки Майкрософт</a></p>
  <p id="42MZ"><a href="https://support.microsoft.com/ru-ru/office/%D0%BD%D0%B0%D0%B9%D1%82%D0%B8-%D0%BD%D0%B0%D0%B9%D1%82%D0%B8%D0%B1-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BD%D0%B0%D0%B9%D1%82%D0%B8-%D0%BD%D0%B0%D0%B9%D1%82%D0%B8%D0%B1-c7912941-af2a-4bdf-a553-d0d89b0a0628" target="_blank">Функция НАЙТИ - Служба поддержки Майкрософт</a></p>
  <p id="S1xS"><a href="https://support.microsoft.com/ru-ru/office/%D0%BF%D1%81%D1%82%D1%80-%D0%BF%D1%81%D1%82%D1%80%D0%B1-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8-%D0%BF%D1%81%D1%82%D1%80-%D0%BF%D1%81%D1%82%D1%80%D0%B1-d5f9e25c-d7d6-472e-b568-4ecb12433028" target="_blank">Функция ПСТР - Служба поддержки Майкрософт</a></p>
  <p id="tGH1"><a href="https://support.microsoft.com/ru-ru/office/%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D1%86%D0%B5%D0%BB%D0%BE%D0%B5-a6c4af9e-356d-4369-ab6a-cb1fd9d343ef" target="_blank">Функция ЦЕЛОЕ - Служба поддержки Майкрософт</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@scheidermark/windrose</guid><link>https://teletype.in/@scheidermark/windrose?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><comments>https://teletype.in/@scheidermark/windrose?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark#comments</comments><dc:creator>scheidermark</dc:creator><title>Парсинг данных в эксель и построение розы ветров в полуавтоматическом режиме, часть 2.</title><pubDate>Mon, 13 Jan 2025 08:34:14 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/7a/23/7a238e1a-fece-4f70-a8d6-6fce2b221889.png"></media:content><description><![CDATA[<img src="https://img4.teletype.in/files/fb/e3/fbe39bcd-8799-4d81-a308-c3ceecd9165f.png"></img>Это продолжение статьи с описанием построения розы ветров в Ms excel, осталось самое сложное, но самое интересное.]]></description><content:encoded><![CDATA[
  <p id="WJP8">Это продолжение статьи с описанием построения розы ветров в Ms excel, осталось самое сложное, но самое интересное.</p>
  <h3 id="jGFi">5. Построение годовой розы ветров</h3>
  <h3 id="Y8y7">Создание сводной таблицы</h3>
  <p id="9yIe">Сначала необходимо свести все данные по месяцам и направления в одну таблицу, количество ветреных дней и среднюю скорость.</p>
  <ol id="znC4">
    <li id="8FHg">Количество ветреных дней определяется простым сложение по каждому листу, пример для северного направления ветра: <code>=СУММ(Январь!H7+Февраль!H7+Март!H7+Апрель!H7+Май!H7+Июнь!H7+Июль!H7+Август!H7+Сентябрь!H7+Октябрь!H7+Ноябрь!H7+Декабрь!H7)</code>                                          Для ссылки на лист используется формула <code>!имя листа</code></li>
    <li id="tcIY">Среднюю скорость ветра определил через медиану по формуле: <code>=ЕСЛИОШИБКА(МЕДИАНА(Январь!I7;Февраль!I7;Март!I7;Апрель!I7;Май!I7;Июнь!I7;Июль!I7;Август!I7;Сентябрь!I7;Октябрь!I7;Ноябрь!I7;Декабрь!I7);0)</code>, <code>ЕСЛИОШИБКА</code> добавил для отображения 0 в строке штиль.</li>
  </ol>
  <figure id="LWYd" class="m_original">
    <img src="https://img2.teletype.in/files/de/a8/dea8ddb3-07d7-4fd8-8881-736831f7c307.png" width="744" />
  </figure>
  <h3 id="RzGe">Отображение штиля на графике</h3>
  <p id="cjOF">Если в году были дни со штилем, их необходимо отобразить на графике в виде квадрата с половиной диагонали n, равной количеству штилевых дней (рис.1)</p>
  <figure id="MlZd" class="m_original" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e4/39/e439d76b-05ac-46bf-9e28-12d6a824ed3c.png" width="389" />
    <figcaption>Рисунок 1 - отображение штилевых дней</figcaption>
  </figure>
  <p id="pFRq">Для получения штилевого квадрата необходимо подготовить таблицу и в процессе ее заполнения решить небольшую геометрическую задачу (рис. 2).</p>
  <figure id="C5Wo" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/3f/c3/3fc331e5-23c7-4140-954f-a4e27c3dd169.png" width="740" />
    <figcaption>Рисунок 2 - таблица со штилевыми данными</figcaption>
  </figure>
  <p id="BAs9">Квадрат штиля состоит из 8 треугольников, у каждого треугольника известна 1 координата, это точка 0, необходимо найти оставшиеся координаты треугольников и занести данные в таблицу. Наверху таблицы и слева указаны направления ветра, с-св(север, северо-восток) это значит что треугольник лежит в пределах северного и северо-восточного направлений, а колонка слева указывает отрезок какой длины должен быть проложен в выбранном направлении. </p>
  <p id="xDSM">Разберу на примере 1 колонки: выбранный треугольник лежит в пределах северного и северо-восточного направлений, длина отрезка, откладываемого в северном направлении равна 23 единицам- «n» это полудиагональ квадрата, длина отрезка откладываемого в направлении северо-востока равна n*sin45°<code>=$H$14*SIN(РАДИАНЫ(45))</code>(рис.3) </p>
  <p id="Hnl7">Для построения была использована <u>лепестковая диаграмма</u>, но можно использовать <u>точечную (x,y) диаграмму</u>, в чем то это будет проще, но решение изменится.   </p>
  <figure id="j6S8" class="m_original" data-caption-align="center">
    <img src="https://img3.teletype.in/files/e3/a6/e3a6e508-5a23-4416-b647-5b6289b37783.png" width="354" />
    <figcaption>Рисунок 3 - длины откладываемых отрезков на розе ветров </figcaption>
  </figure>
  <p id="MaWZ">Таким образом заполняется вся таблица «штиль»</p>
  <h3 id="GaIP">Создание таблицы направлений ветра </h3>
  <p id="vuEk">Рядом создается аналогичная таблица для направлений ветра. Чтобы правильно отобразить направления ветра, необходимо по каждой стороне света от границы квадрата штиля отложить отрезки длиной, равной количеству ветреных дней в выбранном направлении (0l=0n+nl). Каждый луч розы ветров состоит из двух треугольников(рис.4).</p>
  <figure id="GJ1J" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/f3/1e/f31ec0cd-e3aa-45a8-91e9-f017a1b1b32b.png" width="354" />
    <figcaption>Рисунок 4 - схема получения розы ветров</figcaption>
  </figure>
  <p id="BUbv"></p>
  <figure id="RrkS" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/0e/b6/0eb6fd28-06f4-4c15-83a3-b706727dee51.png" width="1158" />
    <figcaption>Рисунок 5 - общий вид таблицы </figcaption>
  </figure>
  <h3 id="93gC">Заполнение таблицы</h3>
  <p id="q7W7">Для начала предлагаю заполнить ячейки по основным направлениям ветра, так как для их заполнения нужно меньше всего вычислений. Приведу пример на основе северного направления. Точка 1 находится на расстоянии n*sin45°<code>=$H$14*SIN(РАДИАНЫ(45))</code> аналогично выше вычисляются длины отрезков откладываемых в промежуточных направлениях (св, юв, юз, сз). Точка 2 вычисляется путем сложения количества ветреных дней в северном направлении и количества штилевых дней (рис.6), но эти вычисления справедливы при ситуации когда количество дней со штилем &gt; 0. Если в году каждый день будут дуть ветра в разных направлениях, то точка 2 будет откладываться от нуля на расстояние равное количеству ветреных дней, а не от крайних точек квадрата штиля, а точка 1 будет вычисляться по такой же формуле, но от произвольного числа. Пример формул:</p>
  <p id="lLWi"><code>=ЕСЛИ($H$14&gt;0;$H$14*SIN(РАДИАНЫ(45));L9*SIN(РАДИАНЫ(45)))</code> вычисление точки 1</p>
  <p id="4Kw6"><code>=ЕСЛИ($H$14&gt;0;$H$6+$H$14;$H$6)</code> вычисление точки 2 (рис. 7)</p>
  <p id="ktQ5">Цифра в ячейке <code>L9</code> позволяет регулировать отношение длины луча розы ветров к ширине при количестве штилевых дней = 0. (рис. 8)</p>
  <p id="OIBU"></p>
  <p id="vYtA"></p>
  <figure id="FP1T" class="m_original">
    <img src="https://img1.teletype.in/files/c5/84/c58458ad-03d9-4baf-98c2-e630df96d165.png" width="689" />
  </figure>
  <figure id="CJmm" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/9a/b8/9ab85c8d-f559-40c1-97a2-3862ca33efd2.png" width="535" />
    <figcaption>Рисунок 6 - луч северного направления ветра</figcaption>
  </figure>
  <figure id="sTxd" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/b2/b4/b2b4484c-7928-4269-8b00-6b726cd7ca86.png" width="1112" />
    <figcaption>Рисунок 7 - вычисления</figcaption>
  </figure>
  <p id="zpNq"></p>
  <figure id="sm8a" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/b3/77/b377cd2b-9cc3-4923-a1bf-86655ea20c80.gif" width="1320" />
    <figcaption>Рис. 8 - изменение соотношения длина/ширина</figcaption>
  </figure>
  <p id="OmoK">Далее заполняются все ячейки по основным направлениям.</p>
  <h3 id="b1Yp">Заполнение ячеек промежуточных направлений</h3>
  <p id="44kP">Точка 1 вычисляется путем сложения количества ветреных дней в северо-восточном направлении и количества штилевых дней, аналогично вышеприведенным вычислениям здесь присутствует условие количества штилевых дней. </p>
  <p id="RifV"><code>=ЕСЛИ(H14&gt;0;($H$7+$L$5);H7)</code></p>
  <p id="zxuw">0,5 ст. кв<code>=$H$14*SIN(РАДИАНЫ(45))</code></p>
  <figure id="RrS4" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/cf/53/cf53ced9-9da0-40e1-970c-e7acd0bdd05b.png" width="826" />
    <figcaption>Рис. 9 - искомые точки</figcaption>
  </figure>
  <figure id="eDkY" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/5a/8e/5a8e1213-a339-4d56-b6fa-ab1c5af984e7.png" width="1275" />
    <figcaption>Рис. 10 - вычисления</figcaption>
  </figure>
  <p id="LTtE">Для того чтобы найти точку 2 необходимо построить треугольник ABC и найти точку пересечения стороны AC с диагональю квадрата штиля. Получаем прямоугольный треугольник с биссектрисой BD. Длина биссектрисы BD (x) является искомой величиной. </p>
  <p id="XyiU">Биссектриса делит треугольник ABC на два треугольника BCD и ABD, стороны AB (a) и BC (b) известны (рис.11).</p>
  <p id="z9er">Представлю площадь треугольника ABC как сумму треугольников BCD и ABD</p>
  <p id="DuUJ">S = ½*ab = ½ax*sin45° + ½bx*sin45°</p>
  <p id="A09O">½*ab = ½ax*(√2/2) + ½bx*(√2/2)</p>
  <p id="8ruH">ab = (x*√2*(a+b))/2</p>
  <p id="SqWG">x = 2ab/(√2*(a+b))</p>
  <p id="3zIs">DB (x) = 2ab/(√2*(a+b))</p>
  <figure id="05Xq" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/0b/aa/0baaf0d2-e09b-4547-947a-dbf485eaeddb.png" width="826" />
    <figcaption>Рис. 11 - треугольник ABC</figcaption>
  </figure>
  <p id="W5Xx">Следовательно формула в экселе с учетом условия будет выглядеть следующим образом: </p>
  <p id="XOqI"><code>=ЕСЛИ(H14&gt;0;(2*$L$5*P22)/(($L$5+P22)*КОРЕНЬ(2));(2*$L$9*P22)/(($L$9+P22)*КОРЕНЬ(2)))</code></p>
  <figure id="bm20" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/da/61/da61b316-9d54-4cae-8498-d503d10115fe.png" width="1113" />
    <figcaption>Рис. 12 - вычисления</figcaption>
  </figure>
  <p id="gUP6">Теперь можно окончательно заполнить таблицу «направление ветра» одна колонка - один треугольник на графике. Для правильного и красивого отображения годовой розы ветров важно соблюдать иерархию рядов в данных диаграммы, вышележащий ряд будет перекрывать нижележащий, хорошо подойдет аналогия со слоями в фотошопе. Для изменения иерархии рядов данных необходимо нажать правой кнопкой мыши на диаграмму -&gt; <em>«Выбрать данные»</em> -&gt; выбрать необходимый ряд и при помощи стрелок передвинуть его на нужный уровень иерархии(рис.13). После настройки иерархии диаграмма будет полностью готова.</p>
  <figure id="wUqK" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/18/7e/187e0129-8ce5-4b79-abfa-1fa69b2eb316.png" width="607" />
    <figcaption>Рис. 13 - уровни иерархии</figcaption>
  </figure>
  <figure id="VF9j" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/81/f7/81f7e2f8-5f80-472c-81df-21b1f8fa0870.png" width="1751" />
    <figcaption>Рис. 14 - финальный вид таблицы по направлениям ветра и годовой розы ветров</figcaption>
  </figure>
  <p id="3tEt">В двух вышепреведенных статьях был рассмотрен алгоритм создания розы ветров по каждому месяцу и годовой розы ветров по данным, полученным с сайта гисметео. Способ полуавтоматический, но даже так позволяет получить быстрые и безошибочные результаты, которые позже можно использовать например для проектирования проветривания карьеров или оценки уровня отрицательного влияния уже существующих и проектируемых промышленных объектов. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@scheidermark/e4mG3PQksnE</guid><link>https://teletype.in/@scheidermark/e4mG3PQksnE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark</link><comments>https://teletype.in/@scheidermark/e4mG3PQksnE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=scheidermark#comments</comments><dc:creator>scheidermark</dc:creator><title>Парсинг данных в эксель и построение розы ветров в полуавтоматическом режиме, часть 1.</title><pubDate>Tue, 20 Aug 2024 12:00:28 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/51/2d/512d61e1-ae07-406c-bd71-823c2450fc2e.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/a6/fd/a6fd10ee-4c1f-47dc-bf32-5b00306dcad8.png"></img>В прошлом семестре мне необходимо было сделать интересную, но в то же время довольно рутинную задачу — начертить розу ветров. Так как вручную фильтровать и выписывать данные, а после объединять это все для построения месячных и годового графиков мне совсем не хотелось, я избрал другой путь и решил эту задачу через прекрасный и всемогущий Microsoft Excel. Ниже будет представлено пошаговое решение, от парсинга данных в эксель до построения годовой розы ветров, приятного чтения!]]></description><content:encoded><![CDATA[
  <blockquote id="vP2y">В прошлом семестре мне необходимо было сделать интересную, но в то же время довольно рутинную задачу — начертить розу ветров. Так как вручную фильтровать и выписывать данные, а после объединять это все для построения месячных и годового графиков мне совсем не хотелось, я избрал другой путь и решил эту задачу через прекрасный и всемогущий Microsoft Excel. Ниже будет представлено пошаговое решение, от парсинга данных в эксель до построения  розы ветров, приятного чтения!</blockquote>
  <h3 id="WFE5">Что такое роза ветров и как ее простроить? По каким исходным данным работать?</h3>
  <p id="R8p7"><a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%B7%D0%B0_%D0%B2%D0%B5%D1%82%D1%80%D0%BE%D0%B2" target="_blank">Роза ветров</a> — это векторная диаграмма с помощью которой можно определить направления и скорость ветров в точке наблюдений. Для решения поставленной задачи имеются данные с сайта гисметео, из этих данных необходимо получить:</p>
  <ul id="ATNh">
    <li id="5ooU">Определить количество ветреных дней по каждому из направлений (С, СВ, В и тд.) за месяц и за год, вычислить среднюю скорость для каждого из направлений.</li>
    <li id="yLZW">Розы ветров для каждого месяца (рис.1).</li>
    <li id="ybYQ">Годовую розу ветров (рис.2).</li>
  </ul>
  <section style="background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <figure id="rEya" class="m_column" data-caption-align="center">
      <img src="https://img3.teletype.in/files/e7/2d/e72db40a-64ed-4425-a60a-44750a0922e3.png" width="708" />
      <figcaption>Рисунок 1 — Роза ветров за март 2023 года</figcaption>
    </figure>
  </section>
  <section>
    <figure id="yVjl" class="m_original" data-caption-align="center">
      <img src="https://img3.teletype.in/files/a6/fd/a6fd10ee-4c1f-47dc-bf32-5b00306dcad8.png" width="1013" />
      <figcaption>Рисунок 2 - Годовая роза ветров</figcaption>
    </figure>
  </section>
  <h3 id="5np3">С основной задачей определились, но что делать теперь, с чего начать? Для облегчения поиска решений я разбил основную задачу на несколько подзадач:</h3>
  <ol id="v251">
    <li id="iVRJ">Парсинг данных в эксель с сайта <a href="https://www.gismeteo.ru/diary/12863/2023/4/" target="_blank">гисметео, дневник погоды</a></li>
    <li id="GSop">Подсчет количества ветреных дней и дней со штилем за месяц, и расчет средней скорости ветра для каждого из направлений</li>
    <li id="bSq9">Выбор наиболее подходящего графика и построение месячной розы ветров</li>
    <li id="r1aL">Создание сводной таблицы по количеству ветреных дней, дней со штилем и скорости этих ветров за год</li>
    <li id="AKEe">Построение годовой розы ветров</li>
  </ol>
  <h3 id="zwmx">1. Парсинг данных в эксель</h3>
  <p id="i06B">Для загрузки данных с сайта в эксель необходимо воспользоваться командой <em>«получить данные из интернета»</em>. Вкладка <em>«Данные»</em> -&gt; <em>«получить данные из интернета»</em></p>
  <figure id="zHfa" class="m_column">
    <img src="https://img4.teletype.in/files/b9/24/b9247009-4e42-43a8-b3d7-4d1b0fdd885c.png" width="892" />
  </figure>
  <p id="6G92">Далее появится окно ввода URL-адреса, в которое необходимо вбить адрес сайта с которого необходимо получить выгрузку данных</p>
  <figure id="LX2N" class="m_column">
    <img src="https://img4.teletype.in/files/b5/e2/b5e24d8a-f043-46b2-8fd5-d8c2e1e75a79.png" width="695" />
  </figure>
  <p id="ACCy">Далее появится такое окно с готовой таблицей, сортируем данные, удаляя все лишнее. Остаются колонки: число, ветер дневной (вечерний ветер можно не учитывать)</p>
  <figure id="9yPD" class="m_column">
    <img src="https://img1.teletype.in/files/00/6e/006eee41-76c8-48b2-8082-230827ad1f40.png" width="934" />
  </figure>
  <p id="nVdo">Теперь разделяем столбец с направлением ветра на само направление и скорость ветра, для дальнейшего анализа. Используем команду <em>«Текст по столбцам»</em>. Вкладка <em>«Данные»</em> -&gt; <em>«текст по столбцам»</em>. В первом шаге указываем пробел как разделитель, вторым шагом разделяем столбец со скоростями ветра, используем символ-разделитель другой: м</p>
  <figure id="sRmb" class="m_column">
    <img src="https://img2.teletype.in/files/11/2a/112a95c0-3b93-4d18-9c7c-96a8b5e577ee.png" width="1621" />
  </figure>
  <figure id="QBX1" class="m_custom">
    <img src="https://img4.teletype.in/files/3a/c0/3ac00713-806b-4857-9b87-07cd84d8395a.png" width="506" />
  </figure>
  <figure id="o5b7" class="m_custom">
    <img src="https://img2.teletype.in/files/93/e2/93e248d2-6368-4cad-9c94-cec6951f3ba1.jpeg" width="466" />
    <figcaption>                                                     Конечныы результатом разделения является 3 столбец</figcaption>
  </figure>
  <p id="SumX">С парсингом данных и их подготовкой закончили, теперь можно переходить к подсчетам.</p>
  <h3 id="v46A">2. Подсчет количества ветреных дней и дней со штилем за месяц, и расчет средней скорости ветра для каждого из направлений</h3>
  <p id="1uj7">Для начала формируем таблицу из трех столбцов:</p>
  <ul id="HvqA">
    <li id="bze7">Направление ветра, указываем здесь все направления от северного до северо-западного и штиль</li>
    <li id="C9UQ">Количество ветреных дней</li>
    <li id="nlJx">Средняя скорость</li>
  </ul>
  <figure id="z1xZ" class="m_custom">
    <img src="https://img3.teletype.in/files/a0/da/a0dafc7b-63d6-42bd-afad-5a62f55135a5.png" width="591" />
  </figure>
  <p id="Jiql">Количество ветреных дней из столбца &quot;Колво&quot; подсчитывается по следующей формуле:</p>
  <pre id="nXdv">=СЧЁТЕСЛИ($C$5:$C$35;G6)</pre>
  <p id="j66G">Команда <code>=СЧЁТЕСЛИ()</code> подсчитывает количество ячеек в диапазоне удовлетворяющих условию. В данном примере диапазоном является <code>$C$5:$C$35</code>, а условием ячейка <code>G6</code>. То есть в диапазоне направлений ветров ищется совпадение по северному направлению найденное количество совпадений выводится. После эта формула растягивается на все нижележащие ячейки от <code>H6</code> до <code>H14</code>.</p>
  <figure id="I0tm" class="m_custom">
    <img src="https://img4.teletype.in/files/f3/0e/f30e0932-8289-4aa2-abfd-56abf661d69a.png" width="643" />
  </figure>
  <p id="jOCE">Следующим шагом считается средняя скорость:</p>
  <pre id="xcuW">=(СУММЕСЛИ($C$5:$C$35;G6;$D$5:$D$35))/ЕСЛИ(H6&gt;0;H6;1)</pre>
  <p id="esHu">Команда <code>=СУММЕСЛИ($C$5:$C$35;G6;$D$5:$D$35)</code> ведет поиски в столбце «Ветер» ячейки: <code>C5:C35</code>, по ячейке <code>G6</code> (поочередно сравнивая значение в ячейке <code>G6</code> с ячейками из диапазона <code>C5:C35</code>), если значения из ячеек <code>C5:C35</code> совпадают со значением ячейки <code>G6</code> то значения в столбце «Ск-ть» <code>D5:D35</code> , находящиеся напротив ячеек удовлетворяющих условию суммируются. В рассматриваемом примере в ячейке <code>G6 </code>находится значение «<code>С</code>» (северное направление ветра), если сравнить это значение со значением первой ячейки диапазона <code>C5</code> «ЮВ», то формула выдаст «ложь» и не будет суммировать эту ячейку, если далее продолжить сравнение то все ячейки до <code>C12 </code>будут выдавать «ложь», ячейка <code>C12</code> равна <code>G12</code>, следовательно находящаяся правее ячейка <code>D12</code> будет внесена в сумму, все дальнейшие ячейки не будут удовлетворять заданному условию и не будут внесены в сумму.</p>
  <p id="X4KC"><code>ЕСЛИ(H6&gt;0;H6;1)</code> вторая часть формулы выбирает ненулевые значения количества ветреных дней, а нулевые значения заменяет единицей, чтобы не вызвать ошибок и произвести корректный расчет. То есть если значение исследуемой ячейки больше нуля <code>ЕСЛИ(H6&gt;0)</code>, то в числителе остается исследуемое число <code>ЕСЛИ(H6&gt;0;H6)</code>,иначе оно заменяется единицей <code>ЕСЛИ(H6&gt;0;H6;1)</code></p>
  <p id="k4LB">Ниже приведена схема подсчета средней скорости для северного и западного направлений.</p>
  <figure id="gEix" class="m_column">
    <img src="https://img1.teletype.in/files/8b/57/8b575999-7093-4619-af11-e6ea0297dd04.png" width="732" />
  </figure>
  <p id="8zXU">*Так же можно посчитать среднюю скорость не через среднее арифметическое, а используя медиану, такой метод подсчета позволит отсечь аномально высокие/низкие значения и получить более точный результат.</p>
  <p id="0CJp">Очень полезная статья: <a href="http://mathprofi.ru/moda_mediana_generalnaya_i_vyborochnaya_srednyaya.html#mo" target="_blank">http://mathprofi.ru/moda_mediana_generalnaya_i_vyborochnaya_srednyaya.html#mo</a></p>
  <p id="5Hds">Формула по которой можно посчитать среднюю скорость через</p>
  <p id="0dvJ">медиану:<code>=ЕСЛИОШИБКА(МЕДИАНА(ЕСЛИ($C$5:$C$35=G6;$D$5:$D$35));0)</code></p>
  <h3 id="nLMo">3. Выбор наиболее подходящего графика и построение месячной розы ветров</h3>
  <p id="4OgY">Наиболее подходящей из-за простоты оформления мне показалась лепестковая диаграмма. Диаграммы находятся во вкладке <em>«Вставка»</em> -&gt; <em>«Рекомендуемые диаграммы»</em> -&gt; <em>«Все диаграммы»</em> -&gt; <em>«Лепестковая»</em></p>
  <figure id="YsOW" class="m_column">
    <img src="https://img4.teletype.in/files/70/87/70875904-4c9c-4506-83ee-dfebf4f28c6b.png" width="1019" />
  </figure>
  <p id="uz0I">Далее нужно нажать левой кнопкой мыши на появившуюся пустую диаграмму и кликнуть <em>«Выбрать данные»</em></p>
  <figure id="v8Hc" class="m_custom">
    <img src="https://img1.teletype.in/files/84/fc/84fc8517-9b42-4bc7-ae7f-b2fc24b2e382.png" width="257" />
  </figure>
  <p id="FzW0">В появившемся окне <em>«Выбор источника данных»</em> нажать на <em>«Добавить»</em> под надписью<em> «Элементы легенды»</em>(ряды), написать любое имя ряда и в колонке <em>«значения»</em> выбрать столбец количества ветреных дней, все значения кроме количества дней со штилем (Рис.3.2.) Далее нажать ОК и в правом столбце <em>«Подписи горизонтальной оси»</em>(категории) изменить на значения названий направлений(Рис.3.3)</p>
  <figure id="08jc" class="m_original" data-caption-align="center">
    <img src="https://img1.teletype.in/files/83/d5/83d5cf56-3620-4a8d-86ec-71376f644953.png" width="613" />
    <figcaption>Рис.3.1</figcaption>
  </figure>
  <figure id="7wqh" class="m_custom" data-caption-align="center">
    <img src="https://img4.teletype.in/files/bc/90/bc90719d-a37b-4184-9cee-85450033ca12.png" width="665" />
    <figcaption>Рис.3.2</figcaption>
  </figure>
  <figure id="y09j" class="m_custom" data-caption-align="center">
    <img src="https://img3.teletype.in/files/aa/ca/aaca16fc-0be5-4dce-b69e-4d9e673ab9ad.png" width="681" />
    <figcaption>Рис.3.3</figcaption>
  </figure>
  <p id="Vcw6">Диаграмма заполнена и визуализирует все данные осталось только настроить внешний вид на свой вкус и повторить вышеприведенные операции для всех оставшихся месяцев</p>
  <figure id="TG9c" class="m_column">
    <img src="https://img1.teletype.in/files/85/d7/85d7abb4-d8d2-4159-a4ae-18caa805905d.png" width="939" />
  </figure>

]]></content:encoded></item></channel></rss>