<?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>Olga Gommershtadt</title><generator>teletype.in</generator><description><![CDATA[Olga Gommershtadt]]></description><image><url>https://img1.teletype.in/files/89/4c/894cfa63-2bb6-498b-b704-6db149b6a89f.png</url><title>Olga Gommershtadt</title><link>https://teletype.in/@gommershtadt</link></image><link>https://teletype.in/@gommershtadt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/gommershtadt?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/gommershtadt?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Sun, 31 May 2026 22:59:10 GMT</pubDate><lastBuildDate>Sun, 31 May 2026 22:59:10 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/h3x_bu7dedt</guid><link>https://teletype.in/@gommershtadt/h3x_bu7dedt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/h3x_bu7dedt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Добавляем профили высот на макет карты в новой версии QGIS</title><pubDate>Sat, 28 Mar 2026 15:39:10 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/6c/7a/6c7a553b-9491-44c9-a811-a9aabb7e88ec.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/60/02/60025238-1a99-4a57-b1b6-9136c28da0ff.png"></img>В ряде версий QGIS (включая так называемую &quot;стабильную&quot; версию) на момент марта 2026 не устанавливается плагин DataPlotly, который, несмотря на не самый удобный интерфейс и ошибки, был незаменим в ряде задач.]]></description><content:encoded><![CDATA[
  <p id="v4Y4">В ряде версий QGIS (включая так называемую &quot;стабильную&quot; версию) на момент марта 2026 не устанавливается плагин DataPlotly, который, несмотря на не самый удобный интерфейс и ошибки, был незаменим в ряде задач. </p>
  <p id="xUTh">Поэтому сейчас я расскажу, каким образом можно добавить на макет карты информацию о профилях высот, если у вас не устанавливается DataPlotly. Я расскажу про несколько способов, в один углубляться не буду. </p>
  <figure id="IHi7" class="m_custom">
    <img src="https://img3.teletype.in/files/60/02/60025238-1a99-4a57-b1b6-9136c28da0ff.png" width="500" />
  </figure>
  <h2 id="Zlyr">Этап подготовки данных. </h2>
  <p id="DzIr"><br />Для начала определимся, что мы хотим сделать и из каких данных. </p>
  <p id="0wxC"><strong>Дано</strong>: </p>
  <p id="v3FK">- слой с горнолыжными трассами</p>
  <p id="TG9e">- цифровая модель рельефа</p>
  <p id="xG1O">- точечный слой, который содержит в себе контрольные точки для каждой трассы (результат работы инструмента &quot;Точки вдоль линии&quot;). У такого слоя есть информация о высоте над уровнем моря в каждой точке </p>
  <figure id="Q7XB" class="m_custom">
    <img src="https://img2.teletype.in/files/57/64/57640c94-bbb2-461d-8919-9f6c17a947f3.png" width="584" />
    <figcaption>Атрибуты слоя с точками</figcaption>
  </figure>
  <p id="XDYQ"></p>
  <h2 id="73R3">Способ 1. Готовый скрипт для простой визуализации</h2>
  <p id="BxQp">Плюсы: относительно просто, если есть общее понимание того, как работает код </p>
  <p id="Z4Gx">Вам нужно открыть консоль в QGIS и добавить туда скрипт. Далее немного модифицировать его под свои задачи и задать уникальные цвета. </p>
  <figure id="pfqX" class="m_original">
    <img src="https://img4.teletype.in/files/3d/cd/3dcd2a09-ebd0-4781-a40f-b9942c717d87.png" width="554" />
  </figure>
  <p id="xYwc">Откройте дополнительное окно для скриптов:</p>
  <figure id="NlDm" class="m_original">
    <img src="https://img2.teletype.in/files/15/69/1569df19-d04e-402c-bf9c-e214b278c820.png" width="398" />
  </figure>
  <p id="UL5k">Далее либо откройте файл готового скрипта, который можно скачать <a href="https://drive.google.com/file/d/1jQnODPX1OWkHUhNpF6l8Xiq3UkeoLcM9/view?usp=sharing" target="_blank">с моего гугл диска</a>, либо вставьте код в саму консоль: </p>
  <pre id="gVvC" data-lang="python">import matplotlib.pyplot as plt
from collections import defaultdict
from qgis.core import QgsProject
import os
import numpy as np

LAYER_NAME = &quot;points_profile&quot;
OUT_PATH = &quot;/Users/olgagommerstadt/Documents/0_GIS/0_Cartetika/2026_03_QGIS_practive/2_lesson/all_profiles_smooth.png&quot;

COLOR_MAP = {
    1: &quot;#da20a5&quot;,
    2: &quot;#cd8745&quot;,
    3: &quot;#57dacb&quot;,
    4: &quot;#5045c9&quot;
}

SMOOTH_WINDOW = 5

layer = QgsProject.instance().mapLayersByName(LAYER_NAME)[0]

data = defaultdict(list)

for f in layer.getFeatures():
    num = f[&quot;number&quot;]
    dist = f[&quot;distance&quot;]
    elev = f[&quot;SAMPLE_1&quot;]

    if num is not None and dist is not None and elev is not None:
        data[int(num)].append((float(dist), float(elev)))

def moving_average_safe(y, window):
    y = np.asarray(y, dtype=float)
    if len(y) &lt; window or window &lt; 3:
        return y

    pad = window // 2
    y_pad = np.pad(y, (pad, pad), mode=&quot;edge&quot;)
    kernel = np.ones(window) / window
    return np.convolve(y_pad, kernel, mode=&quot;valid&quot;)

plt.figure(figsize=(12, 6))

for num, values in sorted(data.items()):
    if len(values) &lt; 2:
        continue

    values.sort(key=lambda x: x[0])

    x = np.array([v[0] for v in values], dtype=float)
    y = np.array([v[1] for v in values], dtype=float)

    color = COLOR_MAP.get(num, &quot;#999999&quot;)

    # исходная линия
     # plt.plot(x, y, color=color, linewidth=0.8, alpha=0.35)

    # сглаженная линия
    y_smooth = moving_average_safe(y, SMOOTH_WINDOW)
    plt.plot(x, y_smooth, label=f&quot;Трасса {num}&quot;, color=color, linewidth=2.2)

plt.title(&quot;Профили высот трасс&quot;)
plt.xlabel(&quot;Расстояние, м&quot;)
plt.ylabel(&quot;Высота над уровнем моря, м&quot;)
plt.grid(True)
plt.legend()
plt.savefig(OUT_PATH, dpi=200, bbox_inches=&quot;tight&quot;)
plt.close()

print(&quot;Сохранено:&quot;, OUT_PATH)</pre>
  <p id="NKNk"></p>
  <p id="HmEp">Теперь вам нужно модифицировать этот код под себя.</p>
  <p id="MUf8">1. Изменение путей и имен файлов</p>
  <pre id="jLns">LAYER_NAME = &quot;points_profile&quot;
OUT_PATH = &quot;/Users/olgagommerstadt/Documents/0_GIS/0_Cartetika/2026_03_QGIS_practive/2_lesson/all_profiles_smooth.png&quot;
</pre>
  <p id="Iu1T">Вместо points_profile вам нужно вставить название своего точечного слоя с замерами</p>
  <p id="p45h">Вместо пути в out_path вам нужно поставить свой путь, куда вы положите итоговое изображение. В этом варианте оно называется all_profiles_smooth</p>
  <p id="6Crp">2. Изменение цветов</p>
  <p id="HN6l">Например, у вас 4 трассы для визуализации. Для каждой вам нужен свой цвет. Поэтому эти цвета стоит указать в этом фрагменте кода: </p>
  <pre id="uPDg">COLOR_MAP = {
    1: &quot;#da20a5&quot;,
    2: &quot;#cd8745&quot;,
    3: &quot;#57dacb&quot;,
    4: &quot;#5045c9&quot;
}</pre>
  <p id="zRuE">3. Изменение названий атрибутов</p>
  <pre id="QnBH">for f in layer.getFeatures():
    num = f[&quot;number&quot;]
    dist = f[&quot;distance&quot;]
    elev = f[&quot;SAMPLE_1&quot;]</pre>
  <p id="alM6">Здесь вместо &quot;number&quot; нужно поставить свое название поля для номера трассы, вместо &quot;distance&quot; - свое название поля для дистанции от начала трассы (если вы создавали точечный слой с помощью точек вдоль линии, это поле будет называться так), вместо &quot;SAMPLE_1&quot; поставить название поля с высотой над уровнем моря. </p>
  <p id="pgmD">После того, как вы провели все необходимые модификации, можно запускать скрипт с помощью соответствующей кнопки. Если все замены проведены правильно, вы получите итоговое изображение по указанному вами пути. </p>
  <h3 id="Lto7">Способ 2 С помощью инструмента высотного профиля и умного наложения.</h3>
  <p id="nr2V">Плюсы: применимо на разных версиях QGIS, не требует программирования</p>
  <p id="Nirr">Минусы: много шагов</p>
  <p id="b5oZ">В новых версиях QGIS существует инструмент создания высотных профилей. Он не самый очевидный для использования, но работать с ним можно. </p>
  <p id="XDwT">В качестве исходного слоя будем использовать точечный слой. </p>
  <p id="Qjey"><strong>1. Открываем профиль высот</strong></p>
  <p id="5LP6">В выпадающем списке &quot;Вид&quot; - &quot;Профиль высот&quot; (&quot;View&quot; - &quot;Elevation profile&quot;) </p>
  <figure id="t2ay" class="m_custom">
    <img src="https://img4.teletype.in/files/fb/d3/fbd381e4-77ed-4659-8df3-4c1236d6829d.png" width="321.2538226299694" />
  </figure>
  <p id="eeju">В открывшемся инструменте вам нужно будет поочередно выделять по одной трассе.</p>
  <p id="lqVL"><strong>2. Настройка визуализации профиля</strong></p>
  <p id="V5Ra">- Слева в списке слоев у профиля активируйте слой с точками промеров. </p>
  <p id="1O7h">- Зайдите в настройки этого слоя в инструменте высотного профиля (правой кнопкой мыши - свойства/properties). </p>
  <p id="69nn">- Укажите, что высота каждой точки на графике должна определяться значением атрибута высоты.</p>
  <figure id="SMv3" class="m_column">
    <img src="https://img2.teletype.in/files/55/3d/553dbf2b-7100-4f54-bfc5-154b7613f29c.png" width="1952" />
    <figcaption>(мое поле высоты над уровнем моря называвется SAMPLE_1) </figcaption>
  </figure>
  <p id="Jrvc">- Укажите вид визуализации данных. Нам нужно показать не точки, а линии, поэтому там нужно выставить такие настройки: </p>
  <figure id="Lwjx" class="m_column">
    <img src="https://img2.teletype.in/files/d8/50/d8505bee-17ff-4d32-b417-e6d908d63ce8.png" width="1380" />
  </figure>
  <p id="Z6gq">Меню настроек можно закрыть. </p>
  <p id="IXuv">- В меню профиля высот нужно выбрать инструмент выбора контура из объекта и с помощью него на карте в основном окне QGIS выбрать первую трассу, профиль которой хотите построить. </p>
  <figure id="4Sm6" class="m_original">
    <img src="https://img3.teletype.in/files/ee/94/ee94453e-74b2-4d20-833b-15e83c7f6824.png" width="378" />
  </figure>
  <p id="mioc">Если все правильно, должен появиться профиль высот для этой трассы. </p>
  <figure id="RpvW" class="m_column">
    <img src="https://img1.teletype.in/files/0f/15/0f154e39-1ed3-4f7a-90a8-9aea875df147.png" width="2248" />
  </figure>
  <p id="3Ys2"><strong>3. Получение данных и определение параметров экспорта </strong></p>
  <p id="bFfV">&quot;Прокликайте&quot; так свои трассы, чтобы определить для них самые важные параметры, которые пригодятся для экспорта - минимальная высота профиля, максимальная высота профиля, максимальная ширина профиля. </p>
  <figure id="cLyG" class="m_column">
    <img src="https://img2.teletype.in/files/58/6a/586abb40-3a22-4ca4-83fb-6343c88fc7af.png" width="1442" />
  </figure>
  <p id="2hob">Эти данные нужны для дальнейшего экспорта, потому что для экспорта условных четырех профилей нужно сделать настройки так, чтобы сетка была одинакова во всех случаях. </p>
  <p id="IpQ2">- Выберите правильный цвет, соответствующий вашей трассе на карте (скопируйте его в свойствах слоя в основном окне QGIS) и далее вставьте его в настройках слоя в инструменте профиля высот. </p>
  <p id="x1VR"><strong>4. Экспорт графиков </strong></p>
  <p id="OVFs">Экспорт графика через нажатие специальной кнопки. Выбираете название файла, далее нужно указать верные параметры для максимума высоты, минимума высоты и максимальной ширины.</p>
  <figure id="zoQR" class="m_column">
    <img src="https://img4.teletype.in/files/fc/ea/fcea2ad6-61f0-4162-a512-b8f7e5e35d9b.png" width="1052" />
  </figure>
  <p id="LNQK">Самое главное - верно подобрать значения для экспорта, чтобы с каждым профилем ставить одни и те же настройки, и тогда профили в макете потом будут накладываться друг на друга легко. </p>
  <figure id="2dq9" class="m_column">
    <img src="https://img2.teletype.in/files/55/a0/55a0ca27-a0bb-49fd-a013-5d32cca76948.png" width="1386" />
  </figure>
  <p id="2JZ8">У вас должен получиться файл с графиком. </p>
  <p id="Dj6G">- Далее аналогичным образом вам нужно кликнуть на трассу 2, далее выбрать ей соответствующий цвет в настройках и экспортировать с указанием тех же настроек. Далее с остальными трассами/линиями аналогично. </p>
  <p id="2Xg5"><strong>5. Добавление профилей на макет одним изображением</strong></p>
  <p id="m9z5">Из-за особенностей инструмента высотного профиля мы не можем показать сразу несколько профилей на одном графике. Поэтому будем использовать хитрости. </p>
  <p id="Gcyl">Переходим в макет. С помощью инструмента добавления изображения </p>
  <figure id="tO0V" class="m_original">
    <img src="https://img4.teletype.in/files/72/39/7239a7af-6113-41ea-bb6d-6c96a6ae6567.png" width="80" />
  </figure>
  <p id="dYBc">Добавленному элементу нужно сказать, какое изображение мы хотим в него поместить. В настройках элемента нужно указать путь к первому профилю. </p>
  <figure id="OWaK" class="m_column">
    <img src="https://img4.teletype.in/files/30/26/3026b78f-eca0-4db7-b27d-0ddfffd51855.png" width="912" />
    <figcaption>Путь к первому профилю</figcaption>
  </figure>
  <p id="J9ze">Далее вам нужно скопировать этот элемент и вставить его несколько раз. Одна копия - одна линия профиля. Расскажу, что делать, на примере первой копии: </p>
  <ul id="g1Ui">
    <li id="5qhR">поставить элемент прямо на уже размещенный профиль</li>
    <li id="5OxQ">в настройках элемента указать, что вам нужен не файл &quot;1.png&quot;, а, например, &quot;2.png&quot;. </li>
    <li id="m4dW">в настройках отрисовки (rendering) нужно поставить способ визуализации &quot;Только темное&quot; (&quot;Only dark&quot;). Благодаря этому способу перекрытия вы оставите только полосу профиля + подписи. Если изображения ровно лежат друг на друге и параметры везде одинаковые, то подписи не будут превращаться в кашу. </li>
  </ul>
  <figure id="jcUc" class="m_column">
    <img src="https://img2.teletype.in/files/9f/62/9f627597-3b02-4c08-96ff-929b4fc34a69.png" width="1532" />
  </figure>
  <p id="kRIT"></p>
  <h2 id="7g4L">3 Способ. Использовать старый добрый DataPlotly. </h2>
  <p id="dffU">Если у вас устанавливается DataPlotly, то самый простой способ - использовать его для создания графика высот. </p>
  <p id="wUVx">Краткое описание, что нужно делать:</p>
  <p id="e0QH">В макете выберите инструмент ADD PLOT ITEM, далее в настройках нужно перейти в меню элементов графиков (scatter plot по умолчанию). В нем вам нужно зайти в настройки, сменить тип графика на профиль (XY graph), сказать, что в качестве исходных данных вы выбираете точечный слой с высотами. В качестве OY нужно выбрать поле высоты, в качестве данных для OX - поле distance (расстояние от начала профиля). </p>
  <p id="ypRH">Чтобы профиль строился только на одну трассу, нужно сделать ограничение в feature subset, задать там простое условие в доп настройках, чтобы отображаемые данные ограничивались только, например, первым профилем (number=1). </p>
  <p id="Lfnj">Далее нужно выбрать настройки визуализации, указать нужные параметры цветов, и пр. </p>
  <p id="mcFJ">Как только первый график будет настроен, в настройках модуля в разделе plots вы сможете добавить еще данные на ваш график с помощью кнопки &quot;+&quot; или с помощью копирования уже существующего набора данных, который вы настроили до этого. Для каждой линии нужно будет задать свой цвет. </p>
  <p id="ESwf"></p>
  <h2 id="N3kk">4 способ. Генератор геометрии</h2>
  <p id="nThn">Это довольно нетипичный способ создания профиля высот, но он имеет место быть. </p>
  <p id="7gzM">Логика: вы создаете точечный слой, где каждая точка будет иметь &quot;выпуклость&quot; наверх в соответствии с высотой над уровнем моря. </p>
  <p id="rX4q">Такой способ заслуживает отдельного туториала при необходимости. Описывать подробно процесс я не буду, но покажу пару примеров того, как такие профили выглядят на практике. </p>
  <figure id="EiRd" class="m_column">
    <img src="https://img2.teletype.in/files/5c/e7/5ce7e854-97e4-4cbd-a2e6-bc003507a03c.png" width="1280" />
  </figure>
  <figure id="mFdy" class="m_column">
    <img src="https://img4.teletype.in/files/fb/c5/fbc55e2b-9d5b-405f-bef0-3f9c29ef693d.png" width="1280" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/RfhgxMoWt9V</guid><link>https://teletype.in/@gommershtadt/RfhgxMoWt9V?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/RfhgxMoWt9V?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Как оформлять карты? Часть 1. Шрифты и референсы.</title><pubDate>Tue, 27 May 2025 13:14:48 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/61/b9/61b90928-3c98-43ca-8c70-ee417e17d389.png"></media:content><description><![CDATA[<img src="https://ltdfoto.ru/images/2025/05/25/Frame-3AV6.png"></img>Ольга Гоммерштадт, авторка канала https://t.me/mapnotes]]></description><content:encoded><![CDATA[
  <p id="Y1t7"><a href="https://t.me/mapnotes" target="_blank">Ольга Гоммерштадт, авторка канала https://t.me/mapnotes</a></p>
  <p id="gFK4">Когда мы создаём карту, мы работаем не только с данными, но и с восприятием. Карта — это визуальный рассказ: она должна быть понятной, аккуратной и логично организованной. Даже самая точная и информативная карта может оказаться бесполезной, если её сложно читать, если на ней слишком много отвлекающих элементов или неясно, что важно, а что — второстепенно.</p>
  <p id="kes6"><strong>Картографическое оформление</strong> — это целый набор решений, которые делают карту читаемой и приятной для глаза. Это и выбор цветов, и тип шрифта, и стиль линий, и размер подписи, и даже то, как мы размещаем легенду или масштаб. Удачное оформление помогает читателю быстро понять, о чём карта: будь то плотность населения, изменение температуры или распределение кофеен в городе.</p>
  <p id="cCXU">Важно помнить, что оформление зависит от цели карты. Если вы делаете карту для научной статьи — она должна быть строгой, чёткой и лишённой визуального шума. Если вы готовите карту для соцсетей или выставки — она может быть яркой, визуально выразительной и эмоциональной. В любом случае, у карты должно быть визуальное равновесие, смысловая иерархия и логика.</p>
  <p id="EsNu">Работая в QGIS или другом ГИС-софте, легко увлечься техникой и забыть про оформление. Но именно <strong>дизайн отличает карту от просто набора слоёв</strong>. Хороший картограф всегда думает о читателе: куда он первым посмотрит? Поймёт ли он масштаб? Не перегружена ли карта лишним?</p>
  <p id="GyRD">В этой серии коротких материалов я расскажу, как сделать карту не только точной, но и красивой. В первой части речь пойдёт о шрифтах: какие лучше использовать, где искать вдохновение и как с их помощью выстраивать структуру карты. В следующих выпусках — о цветах, иконках, легенде и других деталях, которые превращают карту в законченную визуальную работу.</p>
  <p id="JGeg"></p>
  <h3 id="1.-Выбор-шрифтов-на-карте">Выбор шрифтов на карте</h3>
  <p id="eZrv"></p>
  <p id="BwX4">Прежде чем приступить к выбору шрифтов нужно понять несколько вещей. Среди каких шрифтов мы выбираем и для чего мы выбираем шрифт.</p>
  <p id="vLvW">Шрифт в картографии играет не меньшую роль, чем цвета или символы. Вот некоторые функции шрифтов на карте:</p>
  <ul id="HVg2">
    <li id="k3Vw"><strong>Направляет взгляд</strong>: читатель первым делом замечает крупные подписи, потом — более мелкие.</li>
    <li id="0vAr"><strong>Создаёт иерархию</strong>: шрифт может показывать, что важнее — страна, город или река.</li>
    <li id="5KZO"><strong>Передаёт настроение</strong>: историческая карта, туристическая карта или урбанистическая — каждая требует своего подхода.</li>
    <li id="9yyo"><strong>Упрощает восприятие</strong>: хорошая типографика делает карту понятной, даже если вы смотрите на неё издалека или мельком.</li>
  </ul>
  <p id="NKoO"></p>
  <h4 id="Практические-советы-по-выбору-шрифта">Практические советы по выбору шрифта</h4>
  <p id="w000"></p>
  <p id="VkLl"><strong>1) Поймите, для чего выбирать шрифт</strong></p>
  <p id="ecIT">Предлагаю условно разделить все текстовые элементы на карте на две группы - подписи непосредственно карты и доп элементы. К подписям на карте относится все то, что подписывается - например, города, реки, страны и прочее. К дополнительным элементам я предлагаю относить то, что оформляется в ГИС на макете карты. Это заголовок, легенда, дополнительные текстовые поля, возможно графики, подписи масштабных линеек, копирайт и многое другое.</p>
  <figure id="dBcu" class="m_custom" data-caption-align="center">
    <img src="https://ltdfoto.ru/images/2025/05/25/Frame-3AV6.png" width="643" />
    <figcaption>Пример карты с разными текстовыми элементами и указанием на них</figcaption>
  </figure>
  <p id="YBlF"></p>
  <p id="8w7a"><strong>2) Определите цель карты</strong></p>
  <p id="mjJt"></p>
  <p id="enlJ">Туристическая, научная, художественная, урбанистическая — для каждой подойдёт разный стиль шрифта.</p>
  <p id="7Aca">Здесь немного поговорим о том, а какие стили шрифтов вообще бывают? Есть разные классификации, и вот одна из них.</p>
  <figure id="obVA" class="m_original" data-caption-align="center">
    <img src="https://ltdfoto.ru/images/2025/05/25/KLASSIFIKATIY-SRIFTOV.png" width="400" />
    <figcaption>Виды шрифтов</figcaption>
  </figure>
  <p id="tItz">То, какую карту вы делаете, определяет и выбор вида шрифта. Например, для создания исторической карты или карты выдуманного мира можно использовать готические и рукописные шрифты, но для обычных обзорных карт они не подойдут.</p>
  <p id="rhnR">При создании карт для отчетов лучше ориентироваться на брусковые шрифты с возможным добавлением гротеска или антиквы.</p>
  <p id="LhE8"></p>
  <p id="s1bH">3) <strong>Ограничьте количество шрифтов</strong></p>
  <p id="HRl2"></p>
  <p id="e96Y">Лучше использовать один шрифт, чем мешать 3–4 разных гарнитуры. Много шрифтов сразу сбивают внимание зрителя, и он теряется - непонятно на что в первую очередь обращать внимание, куда направлен акцент.</p>
  <figure id="vqbf" class="m_custom" data-caption-align="center">
    <img src="https://ltdfoto.ru/images/2025/05/25/Cartography-Inkwell-Fantasy-Map.png" width="588" />
    <figcaption>На что обращает внимание зритель на этой карте? Почти каждый шрифт на ней акцентен.</figcaption>
  </figure>
  <p id="K5RR"></p>
  <p id="XgcE"><strong>4) Один шрифт не всегда один </strong></p>
  <p id="JYAx"></p>
  <p id="fvQm">Если вас по какой-то причине ограничили в количестве доступных шрифтов и оставили лишь один, не стоит расстраиваться. Часто бывает, что у одного шрифта есть несколько доступных типов написания, начиная от банальных курсива и жирного, заканчивая бОльшим разнообразием. Таким образом, при выборе шрифта ориентируйтесь не только на то, как он выглядит в обычном написании - возможно, другие его вариации вам понравятся больше.</p>
  <figure id="EA9S" class="m_custom" data-caption-align="center">
    <img src="https://ltdfoto.ru/images/2025/05/25/TIPY-SRIFTOV-SEO-2.3.png" width="686" />
    <figcaption>Варианты типов начертания для шрифтов группы TT Commons</figcaption>
  </figure>
  <p id="SLqb"></p>
  <p id="OJOs"><strong>5) Нужно учесть контрастность</strong></p>
  <p id="sj8D"></p>
  <p id="ku0i">Подписи на карте должны быть видны на любом фоне. Используйте оформление, чтобы добиться этого - правильный цвет, обводку (halo), тени, полупрозрачную подложку или элемент с заливкой под шрифтом. Плохо читаемый неконтрастный (или чрезмерно контрастный) текст утомляет глаза и заставляет больных мигренью вспомнить о своих болезнях -- никакого удовольствия для зрителя.</p>
  <figure id="QjSD" class="m_custom" data-caption-align="center">
    <img src="https://ltdfoto.ru/images/2025/05/25/Terrible-Maps-Image.png" width="590.383654937571" />
    <figcaption>Ярко красный на сером фоне не дает глазам расслабиться и утомляет глаза.</figcaption>
  </figure>
  <figure id="WEsc" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/9b/6b/9b6b1f56-4ee7-4320-80bd-73483eea16ba.png" width="606.2461538461539" />
    <figcaption>Фрагмент карты США 1820 г, пример относительно высокой контрастности, но с огрехами. </figcaption>
  </figure>
  <p id="MSzo"></p>
  <p id="ykfL">6) <strong>Размер имеет значение</strong></p>
  <p id="X0WY"></p>
  <p id="Vul2">Размер шрифта важен и для элементов карты, и для подписей объектов на самой карте.</p>
  <p id="spH4"><strong>Заголовки</strong> - для размера шрифтов заголовков нет фиксированного правила, но главное, чтобы сам заголовок был больше всех остальных шрифтовых элементов на карте.</p>
  <p id="TJZ7"><strong>Остальные элементы </strong>- главное быть читаемыми и не больше заголовка. </p>
  <p id="Axxt"><strong>Подписи на карте</strong>: </p>
  <ul id="z0Uk">
    <li id="MvLK">Крупные подписи — для стран, морей, крупных городов.</li>
    <li id="FFGi">Средние — для рек, районов, второсxтепенных объектов.</li>
    <li id="J5Bj">Маленькие — для точечных объектов, улиц и т. д.</li>
  </ul>
  <p id="AGGu"></p>
  <figure id="hRBW" class="m_custom" data-caption-align="center">
    <img src="https://img1.teletype.in/files/04/a5/04a54b50-f513-4e60-9ff9-f9de479b6f52.png" width="612.8174863387978" />
    <figcaption>Фрагмент карты Южной Америки от NatGeo</figcaption>
  </figure>
  <p id="emhU"></p>
  <p id="yyLD">7) <strong>Смотрите на контекст</strong></p>
  <p id="xlKZ"></p>
  <p id="Z0Nz">Если мы говорим о подписях на карте, нужно понимать, что именно вы подписываете. Для разных объектов на карте есть разные общие правила подписей. Например, водные объекты чаще всего подписываются курсивом, часто голубого или синего цветов. Города часто подписываются жирным, иногда даже с подчеркиванием. Извилистые водные объекты с длинным названием, а также горные массивы подписывают по кривой. </p>
  <p id="8WJ9"></p>
  <figure id="Go1e" class="m_custom" data-caption-align="center">
    <img src="https://img3.teletype.in/files/2b/49/2b49f4ce-a73a-4015-b8c0-90f31247dd4c.png" width="510.93333333333334" />
    <figcaption>Фрагмент карты Ладоги с изогнутыми подпиями водных объектов</figcaption>
  </figure>
  <p id="dDWB"></p>
  <p id="WIBn">8) <strong>Спасательные подписи</strong></p>
  <p id="GvAW"></p>
  <p id="4KtF">Когда вы выбираете объекты на карте, которые хотели бы подписать, выбирайте те, которые неочевидны смотрящему. Очевидно, что столицу государства стоит подписать, но если какой-то объект на карте является важным, но не очевидным для человека, его стоит подписать. </p>
  <figure id="9EFN" class="m_custom" data-caption-align="center">
    <img src="https://img3.teletype.in/files/6e/e5/6ee59aac-e191-4279-a908-0372c9f99324.png" width="609.9066666666668" />
    <figcaption>Котокарта с подписями</figcaption>
  </figure>
  <p id="33Y8"></p>
  <p id="d92S">9) Подписей может быть много</p>
  <p id="jW2D">Даже если вы подобрали подписи на карте правильного размера, может сложиться страная ситуация, когда надписей слишком много, и они накладываются друг на друга. </p>
  <figure id="ZsxV" class="m_original" data-caption-align="center">
    <img src="https://img2.teletype.in/files/da/f3/daf355cb-feb9-439a-be81-cbda7b74b755.png" width="640" />
    <figcaption>Плохой пример карты</figcaption>
  </figure>
  <p id="8oIw"></p>
  <p id="vYGn">Итого краткие важные правила для подписей:</p>
  <ul id="sBID">
    <li id="QT6Z">Если подпись есть, она должна читаться. От нечитаемых лучше избавиться.</li>
    <li id="XVlU">Заголовок всегда больше других текстовых элементов</li>
    <li id="iOZE">1-2 шрифта максимум </li>
    <li id="0uLi">учитывайте контекст - что подписываете, и каким образом</li>
  </ul>
  <p id="0ScT"></p>
  <h2 id="WX1p">Примеры шрифтов</h2>
  <p id="7ZOB"></p>
  <p id="XWKP"><strong>- Segoe UI - </strong>Шрифт по умолчанию в ESRI (ArcGIS); современный, нейтральный, отлично читается</p>
  <p id="Q8ED"><strong>- Arial / Arial Narrow - </strong>Классика для печатных и цифровых карт; хорошо читается даже в малых размерах</p>
  <p id="aONT"><strong>- Helvetica / Neue Helvetica - </strong>Используется в европейских топокартах (например, в Швейцарии); чистый и нейтральный</p>
  <p id="c4qd"><strong>- Frutiger - </strong>Отличный для навигации (например, в аэропортах); сбалансирован и выразителен</p>
  <p id="KVj9"><strong>- Roboto - </strong>Хорошо подходит для онлайн-карт; читаемый, современный, особенно для мобильных интерфейсов</p>
  <p id="0Njs"><strong>- Noto Sans / Serif - </strong>Универсальный Google-шрифт для мультиязычных карт (поддерживает кириллицу, китайский, арабский и др.) </p>
  <p id="20V5"><strong>- PT Sans / PT Serif - </strong>Хорошие open source шрифты с поддержкой кириллицы, часто используются в российской картографии</p>
  <p id="fqHJ"><strong>- Lato / Open Sans - </strong>Современные, лёгкие, читаемые — часто встречаются в дизайнерских и инфографических картах</p>
  <p id="W1Bg"></p>
  <p id="iMj2">Еще прекрасный небольшой ресурс для подбора шрифтов для карт - <a href="https://typography.com/fonts/styles/cartography" target="_blank">https://typography.com/fonts/styles/cartography</a> </p>
  <p id="lW6w">там вы можете сразу предположить, как выглядят те или иные символы с шрифтом и понять, подойдет ли он вашей карте. Также там есть подборки. </p>
  <p id="tJmX"></p>
  <p id="A5kW">В следующих статьях я расскажу про основные способы отображения на карте, про легенду, насмотренность и другое. </p>
  <p id="uby3"></p>
  <p id="L2iC">Источники:</p>
  <ul id="KSS1">
    <li id="P3Ht">виды шрифтов - <a href="https://www.bestfree.ru/article/computer/font.php" target="_blank">https://www.bestfree.ru/article/computer/font.php</a></li>
    <li id="wwyi">основные понятия типографики - <a href="https://typetype.ru/blog/typography-main-types-and-characteristics-of-fonts/" target="_blank">https://typetype.ru/blog/typography-main-types-and-characteristics-of-fonts/</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/0DvcGpGco0h</guid><link>https://teletype.in/@gommershtadt/0DvcGpGco0h?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/0DvcGpGco0h?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Расшифровываем названия файлов космоснимков</title><pubDate>Mon, 03 Jun 2024 11:27:35 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/8e/ef/8eefb0a8-6aa1-4ac5-8423-e7352f752313.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/0d/b2/0db2ee89-0872-445c-a422-f387d57af3f8.png"></img>Названия файлов у скачанных космоснимков на первый взгляд - жуткий шифр. Давайте разберемся, что к чему и почему вообще у космоснимков такие названия файлов.]]></description><content:encoded><![CDATA[
  <p id="0xQb">Названия файлов у скачанных космоснимков на первый взгляд - жуткий шифр. Давайте разберемся, что к чему и почему вообще у космоснимков такие названия файлов.</p>
  <figure id="QQFP" class="m_custom">
    <img src="https://img1.teletype.in/files/0d/b2/0db2ee89-0872-445c-a422-f387d57af3f8.png" width="443" />
  </figure>
  <p id="Zeab"></p>
  <p id="erzA">Все снимки Ландсат называются странно и длинно, это результат единого стандарта именования файлов. </p>
  <p id="iexb">Они имеют общий вид - LXSS_LLLL_PPPRRR_YYYYMMDD_yyyymmdd_CC_TX_PR </p>
  <ul id="NrPg">
    <li id="Sevi">L = Landsat</li>
    <li id="Ocvn">X - какой сенсор используется (“C”=OLI/TIRS combined, “O”=OLI-only, “T”=TIRS-only, “E”=ETM+, “T”=“TM, “M”=MSS)</li>
    <li id="gfSS">SS = поколение спутника (”07”=Landsat 7, “08”=Landsat 8)</li>
    <li id="MhvF">LLL = уровень атмосферной коррекци (L1TP/L1GT/L1GS)</li>
    <li id="Roro">PPP = WRS path - номер столбца орбиты пути спутника (так описывается информация о траектории и месте съемки на траектории)</li>
    <li id="maB4">RRR = WRS row - номер строки орбиты пути спутника (так описывается информация о траектории и месте съемки на траектории)</li>
    <li id="MGkl">YYYYMMDD - дата съемки</li>
    <li id="swiL">yyyymmdd - дата обработки полученных данных</li>
    <li id="Ktr4">CC = номер коллекции космоснимков (для нас в целом не важен) (01, 02, …)</li>
    <li id="OoEk">TX = категория коллекции снимков (бывают в реальном времени, бывают с постобработкой типа tier1, tier2, если что, в это можно не углубляться) Collection category (“RT”=Real-Time, “T1”=Tier 1, “T2”=Tier 2)</li>
    <li id="g87F">PR  - код продукта. то есть информация о том, что это вообще за снимок - в каком канале он сделан, и что показывает. Возможные варианты: </li>
  </ul>
  <p id="s6y0">B04 - канал номер 4 (по аналогии другие числа с буквой B (сокращение от Bands))</p>
  <p id="gyHf">ST - Surface Temperature - температура поверхности</p>
  <p id="N7zV">STQA - Surface Temperature Quality Assessment - Оценка качества приземной температуры</p>
  <p id="e1Ii">ATRAN - Atmospheric Transmittance - коэффициент пропускания атмосферы</p>
  <p id="1qFI">EMIS - Emissivity - излучательная способность</p>
  <p id="8s4u">EMSD - Emissivity Standard Deviation - стандартное отклонение излучательной способности</p>
  <p id="3ngb">URAD = Upwelled Radiance - восходящая радиация</p>
  <p id="Uqwa">DRAD = Downwelled Radiance - нисходящая радиация</p>
  <p id="XRJ8">TRAD = Thermal Radiance - тепловое излучение</p>
  <p id="0Kc5">Например, я на днях скачивала такой снимок - LC08_L1TP_170023_20231211_20231215_02_T2_B4 что мы поймем из названия?</p>
  <p id="n8W7">Это снимок 8 Ландсата, атмосферно откорректирован (L1TP), столбец-строка орбит - 170-023. Съемка была произведена 2023-12-11, данные обработаны 2023-12-15. Номер коллекции данных 2, уровень обработки данных tier2 (я не особо в этом разбираюсь, но примерно поняла, что имеется в виду, что после получения данных в сыром и изначально обработанном виде следует еще две итерации коррекции данных). Канал указан 4, а в случае ландсат 8 это красный.</p>
  <p id="x63C"></p>
  <p id="9VAK">ИТОГО. </p>
  <p id="azAb">Вам не нужно понимать все буквы в названии файла. Самое важное на мой взгляд: </p>
  <ul id="6f6j">
    <li id="kVhU">дата съемки LC08_L1TP_170023_<strong>20231211</strong>_20231215_02_T2_B4 </li>
    <li id="g4yi">спутниковая система <strong>LC08</strong>_L1TP_170023_20231211_20231215_02_T2_B4 </li>
    <li id="quA1">канал или продукт LC08_L1TP_170023_20231211_20231215_02_T2_<strong>B4</strong> </li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/GV3Ou5jsQ0f</guid><link>https://teletype.in/@gommershtadt/GV3Ou5jsQ0f?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/GV3Ou5jsQ0f?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Как отобразить отсутствие данных?</title><pubDate>Mon, 20 May 2024 10:07:54 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/93/3b/933b1e75-5a66-4b43-937a-39401f22e39f.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/8e/47/8e47001c-6ee7-4dd0-b746-e07bc870b434.png"></img>С новыми версиями QGIS уходят старые баги, но зачастую добавляются новые баги и фичи. 

Дано:]]></description><content:encoded><![CDATA[
  <p id="7mu2">С новыми версиями QGIS уходят старые баги, но зачастую добавляются новые баги и фичи. <br /><br />Дано: </p>
  <p id="KFcO">если у вас есть слой с полигонами с показателем, который вы хотите отобразить, но у вас в этом показателе также есть значения NULL, то есть полигоны, по которым данных этого показателя нет. </p>
  <p id="ik8g">Пример: </p>
  <figure id="Y6DL" class="m_custom">
    <img src="https://img1.teletype.in/files/8e/47/8e47001c-6ee7-4dd0-b746-e07bc870b434.png" width="588" />
  </figure>
  <p id="19LI"></p>
  <p id="YHkB">Я хочу, чтобы такие значения отображались отдельно в легенде и на карте визуализировались отдельно. </p>
  <p id="b6mU">Раньше это работало так - вы делаете классификацию по значениям, задаете новый класс для значения 0 и отображаете его, он показывается на карте. <br /></p>
  <figure id="PNSB" class="m_custom">
    <img src="https://img2.teletype.in/files/50/1a/501aee2d-1270-4e7d-901d-0ff3881241bb.png" width="461" />
  </figure>
  <p id="14VA">Сейчас значения NULL вообще не попадают в классификации. <br />Как сделать так, чтобы все красиво отображалось? покажу несколько вариантов решения </p>
  <p id="s8Oc"></p>
  <p id="n6Qo"><strong>1) Быстро и в целом логично</strong></p>
  <p id="DQMI">Используйте способ визуализации по уникальным значениям. Произойдет распределение по уникальным классам, и отдельно будет выделена группа с прочими значениями - в нее и попадет NULL. </p>
  <figure id="7G4W" class="m_custom">
    <img src="https://img3.teletype.in/files/25/41/2541f62b-bca7-4719-a931-38c1b21363eb.png" width="323" />
    <figcaption>В этом случае полигоны с отсутствующей долей растительности будут помечаться красным и отображаться на карте. </figcaption>
  </figure>
  <p id="54hn"></p>
  <p id="1RUN"><strong>2) Технически понятно, логически не очень</strong></p>
  <p id="t8mn"><strong>Суть</strong>: взять и заменить все NULL на 0 или на другие значения, которые точно не смогут встретиться у атрибута. </p>
  <p id="ONpG">Например, если у вас атрибут представляет собой долю растительности, то он принимает значения от 0 до 100%, и если вы вместо NULL напишите -999, то такие полигоны точно будут отмечены отдельно, так как в интервал 0-100 не попадают. </p>
  <p id="K2CN">Как сделать: </p>
  <figure id="IWOU" class="m_custom">
    <img src="https://img4.teletype.in/files/b5/84/b584162e-2875-435b-8b5c-39d81da1c57c.png" width="599" />
  </figure>
  <p id="hHdz">1) Зайти в атрибутивную таблицу<br />2) Включить режим редактирования</p>
  <p id="OzbM">3) Отсортировать столбец с атрибутами так, чтобы видеть все случаи NULL. </p>
  <p id="hTRh">4) Написать вместо них другое значение. Это может быть 0, может быть -9999 например. </p>
  <p id="tM2t">Если случаев с таким значением много, то лучше выбрать все эти значения с помощью выборки по условию:<br /></p>
  <figure id="6ZDm" class="m_custom">
    <img src="https://img3.teletype.in/files/67/34/67346b9c-fba5-4deb-b4b2-c282333288ad.png" width="700" />
  </figure>
  <p id="GPXc">А после через калькулятор полей проставить вместо NULL другое значение:</p>
  <figure id="X37S" class="m_custom">
    <img src="https://img1.teletype.in/files/8f/78/8f78c3d7-b4fb-4851-9c7e-b9f1f6fd4d75.png" width="620" />
  </figure>
  <p id="5sF8">Далее делать классификацию как обычно: </p>
  <figure id="1Ouf" class="m_custom">
    <img src="https://img1.teletype.in/files/49/27/49274d3e-6683-4461-a7ec-ffaefd15ae23.png" width="484" />
  </figure>
  <p id="oKcL"></p>
  <p id="d2SM">3) Для более продвинутых, но логически самый верный</p>
  <p id="QRaH">в настройках визуализации слоя нажать на эпсилон и зайти в меню, где мы будем прописывать, на основе каких значений производится классификация. </p>
  <p id="CN0u">прописываем там такое. </p>
  <figure id="fEGr" class="m_custom">
    <img src="https://img1.teletype.in/files/48/56/485600f6-c0b3-4c8e-8820-66541098c806.png" width="609" />
    <figcaption>CASE when  &quot;percent&quot; is null then 0<br />when  &quot;percent&quot; is not null then  &quot;percent&quot; <br />end</figcaption>
  </figure>
  <p id="T1Lo">конструкция CASE WHEN ... THEN ... END используется как условный оператор. <br /><strong>Что мы просим тут сделать qgis:</strong> если значение доли пустое (&quot;percent&quot; is null) то просим чтобы вместо него считался например -999. Во всех других случаях считаем само значение percent.</p>
  <p id="iwL4">&quot;percent&quot; может в вашем случае отличаться и называться по-другому - как вы сами назвали</p>
  <figure id="Qkai" class="m_custom">
    <img src="https://img1.teletype.in/files/02/14/021490f3-d08f-4f5c-9c0a-836c3cd87cbc.png" width="399" />
  </figure>
  <p id="5v3c">В чем логичность этого варианта: мы не меняем фактические значения, а просто говорим программе, что хотим, чтобы она считала NULL как определенное число, которое мы далее прописываем как отсутствие данных. </p>
  <p id="kFKE">Фактически в этом способе ничего не редактируется</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/-ZZpHcZFErE</guid><link>https://teletype.in/@gommershtadt/-ZZpHcZFErE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/-ZZpHcZFErE?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Как пронумеровать узлы полигона/линии?</title><pubDate>Wed, 15 May 2024 10:36:18 GMT</pubDate><media:content medium="image" url="https://img2.teletype.in/files/1e/5c/1e5c48cc-efb3-4ca9-ae9a-9d206eaf5466.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/dd/b3/ddb3d7f7-f4b6-4928-af08-d50d5cc192a1.png"></img>Существует много способов, я покажу два - простой и сложный.]]></description><content:encoded><![CDATA[
  <p id="WKW5">Существует много способов, я покажу два - простой и сложный. </p>
  <p id="ZySX">Дано - полигон, вам нужно подписать у него узловые точки. </p>
  <figure id="vpgO" class="m_custom">
    <img src="https://img2.teletype.in/files/dd/b3/ddb3d7f7-f4b6-4928-af08-d50d5cc192a1.png" width="317" />
  </figure>
  <p id="FApS"><strong>Способ 1. Если нужно просто и быстро. </strong></p>
  <p id="BN8B">У каждого полигона есть узлы, и их можно просто извлечь. Для этого в QGIS есть инструмент - &quot;Извлечь вершины&quot; (&quot;Extract verticles&quot;). Находим инструмент и применяем, там все просто, нужно только выбрать слой для извлечения.</p>
  <figure id="mSPR" class="m_custom">
    <img src="https://img3.teletype.in/files/eb/15/eb15c64c-4458-4068-ab20-daf536e65967.png" width="545" />
  </figure>
  <p id="RX9S">У вас получится новый точечный слой. У него в атрибутивной таблице есть информация по каждому из узлов - от порядкового номера до азимута по отношению к предыдущему узлу и дистанции от него.</p>
  <figure id="UpDx" class="m_custom">
    <img src="https://img1.teletype.in/files/ce/67/ce676018-2a95-416e-81b6-d35b7f405ae1.png" width="583" />
  </figure>
  <p id="DZWd">Все, визуализируйте подписи для поля vertex_index (заметьте, нумерация тут идет с нуля, поэтому в подписях узлов последний узел перекроет нулевой). </p>
  <figure id="CeaV" class="m_custom">
    <img src="https://img1.teletype.in/files/89/32/8932d9ec-55af-4f88-a015-2bf24b349123.png" width="741" />
  </figure>
  <p id="eOhQ"></p>
  <p id="udJf"><strong>Способ 2. Посложнее, но учит вас пониманию глубинной работы настроек визуализации.</strong></p>
  <p id="d7k8">Заходим в настройки визуализации слоя. Там в заливках добавляем новый слой заливки. </p>
  <figure id="mMn8" class="m_custom">
    <img src="https://img3.teletype.in/files/ed/81/ed819a17-a579-4785-b81e-7ca80f8662d0.png" width="551" />
  </figure>
  <p id="WnxS">Выбираем &quot;Маркерная линия&quot;. Это значит, что у вашего полигона добавится обводка в виде точек. </p>
  <figure id="2fDI" class="m_custom">
    <img src="https://img4.teletype.in/files/f7/8f/f78f9206-405b-41cf-8e20-5ceda63f0d93.png" width="485" />
  </figure>
  <figure id="dYI8" class="m_custom">
    <img src="https://img2.teletype.in/files/1c/b2/1cb2a1c1-4945-41d5-8dad-5b24cf2f26e2.png" width="136" />
    <figcaption>Маркерная линия</figcaption>
  </figure>
  <p id="YwSX">В этой маркерной линии нам надо сменить тип с точек на шрифт. Это значит, что вместо точек будут появляться некие символы, которые мы сами зададим. </p>
  <figure id="U1Gg" class="m_custom">
    <img src="https://img3.teletype.in/files/a8/e6/a8e6cd8c-ec75-4c84-9714-807e9f51c38a.png" width="726" />
  </figure>
  <p id="y9Wk">Тип слоя меняем с простого маркера (то есть обычные точки) на шрифтовой маркер.</p>
  <p id="m4KP">Далее в настройках маркерной линии вам надо сделать так, чтобы точки (или буквы) ставились только на углах. Для этого в настройках маркерной линии отмечаем это. </p>
  <figure id="IXdv" class="m_custom">
    <img src="https://img4.teletype.in/files/b9/26/b9264482-d2ca-4dfa-8c26-f40c090a5cbc.png" width="663.2683658170915" />
    <figcaption>В последствии можно оставить только 2 из 3 пунктов. Отображать первую вершину, а также все внутренние. Последняя может оказаться не нужной нам для отображения, так как она совпадает с первой. </figcaption>
  </figure>
  <p id="OBog">Последний шаг - скажем QGIS, что нужно показывать номер узла вместо буквы А. </p>
  <p id="5gOx">В настройках шрифтового маркера видим место, где указывается символ для отображения. Там же нажимаем на настройки и &quot;изменить&quot;. </p>
  <figure id="qu3U" class="m_custom">
    <img src="https://img2.teletype.in/files/5d/94/5d943cc4-8226-4a02-bb80-33711a7e7ca2.png" width="645" />
  </figure>
  <p id="U9Kt">В открывшемся окне указываем то, что хотим видеть - номер узла полигона. Это значение называется @geometry_point_num</p>
  <figure id="Cebs" class="m_custom">
    <img src="https://img3.teletype.in/files/ab/d4/abd4d225-734e-4e82-9f1f-314441720fd9.png" width="743" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@gommershtadt/ny5o9XURSbT</guid><link>https://teletype.in/@gommershtadt/ny5o9XURSbT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt</link><comments>https://teletype.in/@gommershtadt/ny5o9XURSbT?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=gommershtadt#comments</comments><dc:creator>gommershtadt</dc:creator><title>Как посчитать пространственную статистику? Рассуждения на пирогах</title><pubDate>Thu, 09 May 2024 15:33:44 GMT</pubDate><description><![CDATA[<img src="https://img4.teletype.in/files/35/59/3559adae-d7e1-4cab-8793-93da6671b780.png"></img>Дано: у вас есть слой с районами города и слой с чем-то еще. В моем случае это слой с полигонами растительности. Это может быть любой площадной / точечный / линейный слой.]]></description><content:encoded><![CDATA[
  <p id="8g3i">Дано: у вас есть слой с районами города и слой с чем-то еще. В моем случае это слой с полигонами растительности. Это может быть любой площадной / точечный / линейный слой.</p>
  <p id="6UdR"></p>
  <p id="0TGp">Что хочется получить: красивую картинку, на которой показано, сколько по каждому району растительности.</p>
  <p id="neR0"></p>
  <figure id="h2qh" class="m_custom">
    <img src="https://img4.teletype.in/files/35/59/3559adae-d7e1-4cab-8793-93da6671b780.png" width="726" />
  </figure>
  <p id="I7dF"></p>
  <p id="cGar">В чем вообще логика таких пространственных вычислений? </p>
  <p id="W2ZH">Предположим, у вас есть город, а в нем - много остановок общественного транспорта. Образно можно представить это в виде пирога с ягодками сверху. </p>
  <figure id="w3zg" class="m_custom">
    <img src="https://img1.teletype.in/files/c0/60/c0605156-a023-435b-b1aa-fc9eaf690328.png" width="246.99999999999997" />
    <figcaption>Поверхность пирога - территория города. Ягодки - остановки.</figcaption>
  </figure>
  <p id="ot14">А еще у пирога есть деление на кусочки (образно - районы). В зависимости от города районы могут быть разного размера, как и куски у пирога. </p>
  <figure id="UcZR" class="m_custom">
    <img src="https://img1.teletype.in/files/c4/09/c409a5ba-01ac-4026-a512-c7a05a240c6d.png" width="388" />
  </figure>
  <p id="kbnj">Предположим, что вам нужно посчитать, сколько ягодок у каждого куска пирога. А потом еще и прикинуть, сколько ягод приходится на каждый квадратный см пирога. Как это считать? </p>
  <p id="hQKz">1) Посчитаем, сколько ягодок в каждом пироге. Для этого вам в первую очередь надо разделить пирог, а после уже считать. Для деления пирога используем специальную форму - каркас деления пирога на куски. </p>
  <figure id="IckH" class="m_original">
    <img src="https://img3.teletype.in/files/ee/ac/eeac46f6-ad46-4f63-888b-27573668ada9.png" width="430" />
  </figure>
  <p id="Q6JO">2) А теперь после деления пирога на куски можно посчитать ягодки по каждому куску. В реальной жизни мы сделаем это сами. В аналогичном примере в пространственных данных - используем инструмент &quot;count points in polygons&quot; (так он называется в qgis). </p>
  <p id="ReSs">В результате вы получите, сколько ягодок на каждом куске пирога вне зависимости от его размера: </p>
  <figure id="qZbB" class="m_custom">
    <img src="https://img4.teletype.in/files/7e/09/7e090a58-5df0-4f02-b060-78653b36031a.png" width="317" />
  </figure>
  <p id="iQb3">3) можно раскрашивать пирог </p>
  <figure id="oNn0" class="m_custom">
    <img src="https://img3.teletype.in/files/60/cc/60cc83a8-9879-4dd9-94fb-29d1d901d6bb.png" width="309" />
    <figcaption>Раскраска пирога по принципу - у кого больше ягодок.</figcaption>
  </figure>
  <p id="aw2y">Если же вам нужно посчитать не кол-во ягодок, а, например, их площадь (ягодки бывают разного размера), то ситуация будет другой. И принцип будет другим. </p>
  <p id="cr8i">А если надо узнать, сколько ягодок приходится на см2 пирога в зависимости от куска, то кол-во ягод в каждом куске нужно разделить на его площадь в см2:</p>
  <figure id="NMhd" class="m_custom">
    <img src="https://img1.teletype.in/files/86/4c/864cfdf1-18aa-4803-8a30-29420e0cccb4.png" width="319" />
    <figcaption>N = кол-во ягод, S = площадь куска пирога</figcaption>
  </figure>
  <p id="wNeq">Тогда мы получим плотность ягод на кусок пирога. Если любите ягоды, то с помощью этой информации вы сможете выбрать наиболее оптимальный для себя кусок - такой, где плотность ягод выше. </p>
  <figure id="JDK6" class="m_original">
    <img src="https://img2.teletype.in/files/57/75/57757a61-2d57-4ad8-9ccc-a55e626ecb85.png" width="458" />
    <figcaption>плотность ягод в зависимости от куска пирога</figcaption>
  </figure>
  <p id="MKB5">И вот, что получится: </p>
  <figure id="hHdS" class="m_custom">
    <img src="https://img1.teletype.in/files/49/31/4931b02c-959d-4207-855d-7fff6dd32864.png" width="345" />
  </figure>
  <p id="Sm46">Когда разобрались в целом с механикой, попробуем на примерах.</p>
  <p id="W6J7"></p>
  <p id="S44G"><strong>Вариант 1. Быстрый.</strong> </p>
  <p id="pYgY">Идеален если у вас точечный файл. </p>
  <figure id="wo17" class="m_custom">
    <img src="https://img1.teletype.in/files/00/b8/00b8deba-54a4-4563-a8d2-c7489df20c78.png" width="575" />
  </figure>
  <p id="W56p">Используем инструмент подсчета точек в полигоне. </p>
  <figure id="stZE" class="m_custom">
    <img src="https://img1.teletype.in/files/c3/c9/c3c930aa-2e89-4883-9fde-516d38e75b03.png" width="524" />
    <figcaption>полигоны - то, как &quot;нарезан пирог&quot;. а точки - ягодки на пироге.</figcaption>
  </figure>
  <figure id="MvP3" class="m_custom">
    <img src="https://img3.teletype.in/files/e2/b1/e2b10cff-a843-4e6f-948e-ce0f6a891622.png" width="516" />
  </figure>
  <p id="Qryq"></p>
  <p id="s49i"><strong>Вариант 2. Если вы хотите посчитать площадные характеристики.</strong></p>
  <p id="4llJ">Дано: районы города и полигоны с промышленными зонами города</p>
  <figure id="N9di" class="m_custom">
    <img src="https://img1.teletype.in/files/cd/14/cd142fa2-31f2-41d1-b4cf-a608673522f3.png" width="453" />
  </figure>
  <p id="59HJ">Но что делать, если какая-то зона находится на стыке районов? Получается, что сначала надо поделить промзоны с помощью &quot;каркаса пирога&quot; - полигонов районов. </p>
  <p id="uFhL">1) Режем промзоны по районам с помощью инструмента пересечения</p>
  <figure id="mM70" class="m_custom">
    <img src="https://img2.teletype.in/files/9f/b2/9fb28105-7576-4536-984a-e1eef24e7714.png" width="546" />
  </figure>
  <p id="Ce9r">2) В новом слое с промзонами для каждого полигона считаем площадь </p>
  <figure id="bzwA" class="m_custom">
    <img src="https://img1.teletype.in/files/4e/eb/4eebba7b-025f-4c90-b592-35ad697e892a.png" width="617.083870967742" />
  </figure>
  <p id="eFBl">3) По районам считаем сумму площадей всех промзон, которые входят в этот район</p>
  <figure id="57vJ" class="m_custom">
    <img src="https://img4.teletype.in/files/b0/96/b0968545-0baf-404e-bf22-292bc3a73a28.png" width="530" />
  </figure>
  <p id="btSs">4) в итоге все можно раскрасить по получившемуся показателю и оформить:</p>
  <figure id="nsAX" class="m_custom">
    <img src="https://img3.teletype.in/files/e4/d0/e4d065d3-adca-4ea4-9882-b4609477ca97.png" width="520" />
  </figure>
  <p id="nLTQ"><strong>Вариант 3. Если вы хотите посчитать площадные характеристики, но и не только.</strong></p>
  <p id="U7js">Дано: районы города и зоны растительности. У каждой зоны есть свое значение NDVI, нам нужно посчитать высшее среднее значение ndvi по району. Получается, что тут надо и по районам порезать, и учесть площадь, и сами значения. </p>
  <figure id="LcyR" class="m_custom">
    <img src="https://img4.teletype.in/files/fc/c6/fcc60fbe-68fd-45f4-ac5e-777545221884.png" width="599" />
    <figcaption>Город, в нем районы. Также есть покрытие полигонами по городу с разным значением NDVI (индекса растительности). Нам надо определить, в каком районе наибольшее значение NDVI.</figcaption>
  </figure>
  <p id="IYmj">Интерпретация на примере пирогов: у вас на пироге есть пятна разного цвета. у каждого пятна своя интенсивность. вам нужно посчитать, на каком куске пирога интенсивность цвета будет больше всего. при этом учитываем, что размеры кусков - разные, а  пятна могут быть на нескольких кусках сразу. </p>
  <figure id="94DO" class="m_custom">
    <img src="https://img2.teletype.in/files/57/89/57897558-ec90-479c-83c3-fa1ed5f93a97.png" width="385" />
    <figcaption>пирог с разноцветными пятнами. Числа обозначают интенсивность красителя в каждом пятне.</figcaption>
  </figure>
  <p id="oLXC"></p>
  <p id="heXg">Что будем делать:</p>
  <p id="5d4Q">1) Режем растительность по районам  с помощью инструмента пересечения</p>
  <figure id="lwQ8" class="m_custom">
    <img src="https://img1.teletype.in/files/c6/15/c615a71f-1056-479a-aa27-59eed09fff23.png" width="703" />
    <figcaption>Буквально - режем пятна пирога по кускам.</figcaption>
  </figure>
  <p id="1phn">2) Как и в прошлый раз, присоединяем к каждому району суммарную информацию о площади кусков растительности, но также и об ndvi. </p>
  <figure id="yjEs" class="m_custom">
    <img src="https://img3.teletype.in/files/e5/6d/e56d68e9-d263-43af-9e11-175b03228f4b.png" width="536" />
    <figcaption>Каждому куску пирога присоединяем информацию о том, какая в нем суммарная площадь пятен и сумма процента красителя.</figcaption>
  </figure>
  <p id="4I70">3) Cчитаем площадь каждого района (куска пирога) с помощью стандартной функции: $area/1000000 (делим на миллион, чтобы получить км2) </p>
  <p id="XhSQ">4) Узнаем среднее значение NDVI в пределах каждого района (сумму NDVI по району делим на кол-во кусков растительности); После, чтобы учесть не просто среднее значение ндви, но и учесть, сколько процентов растительность занимает в каждом районе, нужно все это умножить на долю покрытия растительностью в районе (сумма площадей кусков растительности по району / площадь района).</p>
  <figure id="C4gU" class="m_custom">
    <img src="https://img1.teletype.in/files/c1/8e/c18e4463-a190-4a11-ba78-c0d81b71b3d7.png" width="654.7344110854503" />
    <figcaption>Пироговая аналогия: сумму значения красителей делим на площадь пятен на пироге. Далее полученное значение умножаем на долю пятен на куске. Доля пятен на куске = сумма площадей пятен на куске / площадь куска. </figcaption>
  </figure>
  <p id="3iSY">Получившийся результат: </p>
  <figure id="s807" class="m_custom">
    <img src="https://img4.teletype.in/files/ff/4c/ff4c4f1a-e5df-4988-af3f-009b8c2f7abe.png" width="647.9999999999999" />
  </figure>

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