Отзывы и предложения к софту от AleXStam
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поговорим о...
Текст для слайда "Хранение данных"

Заголовок: Хранение данных в приложении ИАСД-М

---

Корневая папка: /storage/emulated/0/IASDM/

Папка Содержимое Форматы
Routes/ JSON-файлы маршрутов (метаданные, трек, точки наблюдения, события) .json
Routes/Media_<id>/ Прикреплённые файлы к точкам наблюдения (фото, видео, аудио, документы) .jpg, .mp4, .mp3, .pdf
layers/ Импортированные слои (исходники + кэш GeoJSON + конфигурация) .kml, .kmz, .gpx, .geojson, .json
BD/ Справочники (типы точек, сотрудники, объекты, оборудование) .json
config/ Пользовательские настройки приложения .json

---

Ключевые особенности:

· ✅ Все данные хранятся на внешнем storage – доступны пользователю через файловый менеджер
· ✅ Маршруты – в JSON, легко читаются и редактируются
· ✅ Медиафайлы – в отдельных папках Media_<id> (автоматическое удаление при удалении маршрута)
· ✅ Импортированные слои кэшируются в GeoJSON – быстрая загрузка при повторных запусках
· ✅ Справочники можно обновлять вручную – достаточно заменить файл в BD/

---

Схема хранения данных (draw.io XML)

Скопируйте код ниже, импортируйте в draw.io (File → Import from → Text) и экспортируйте в PNG.

```xml
<mxfile host="app.diagrams.net" modified="2025-05-27T10:00:00.000Z" agent="draw.io" etag="storage" version="22.1.0" type="device">
<diagram name="StorageStructure" id="storage">
<mxGraphModel dx="1200" dy="800" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#ffffff">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />

<!-- Заголовок -->
<mxCell id="title" value="Структура хранения данных" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=22;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="380" y="20" width="400" height="40" as="geometry" />
</mxCell>

<!-- Корневая папка -->
<mxCell id="root" value="/storage/emulated/0/IASDM/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d5a3b;strokeColor=#1a3a24;fontColor=#ffffff;fontStyle=1;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="300" y="80" width="560" height="50" as="geometry" />
</mxCell>

<!-- Папка Routes -->
<mxCell id="routes" value="📁 Routes/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="80" y="180" width="200" height="40" as="geometry" />
</mxCell>

<mxCell id="route_file" value="📄 <id>.json (маршрут: трек, точки, события)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="60" y="240" width="160" height="70" as="geometry" />
</mxCell>

<mxCell id="media_folder" value="🎬 Media_<id>/ (фото, видео, аудио)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="240" y="240" width="160" height="70" as="geometry" />
</mxCell>

<mxCell id="arrow_route" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="routes" target="route_file">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="140" y="220" as="sourcePoint" />
<mxPoint x="140" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>

<mxCell id="arrow_media" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="routes" target="media_folder">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="280" y="220" as="sourcePoint" />
<mxPoint x="320" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>

<!-- Стрелка от root к Routes -->
<mxCell id="arrow_root_routes" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="root" target="routes">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="400" y="130" as="sourcePoint" />
<mxPoint x="180" y="180" as="targetPoint" />
<mxPathArray><mxPoint x="400" y="130" /><mxPoint x="180" y="155" /><mxPoint x="180" y="180" /></mxPathArray>
</mxGeometry>
</mxCell>

<!-- Папка layers -->
<mxCell id="layers" value="📁 layers/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="400" y="180" width="200" height="40" as="geometry" />
</mxCell>

<mxCell id="source_file" value="📄 <имя>.kml/.kmz (исходный файл)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="370" y="240" width="150" height="60" as="geometry" />
</mxCell>

<mxCell id="cache_file" value="🗂️ <id>.geojson (кэш GeoJSON)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="540" y="240" width="150" height="60" as="geometry" />
</mxCell>

<mxCell id="config_file" value="⚙️ layers_config.json (конфигурация слоёв)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="450" y="320" width="160" height="60" as="geometry" />
</mxCell>

<mxCell id="arrow_layers_source" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="layers" target="source_file">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="450" y="220" as="sourcePoint" />
<mxPoint x="445" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>

<mxCell id="arrow_layers_cache" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="layers" target="cache_file">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="220" as="sourcePoint" />
<mxPoint x="615" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>

<mxCell id="arrow_layers_config" value="" style="endArrow=classic;html=1;rounded=0;dashed=1;" edge="1" parent="1" source="layers" target="config_file">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="500" y="220" as="sourcePoint" />
<mxPoint x="530" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>

<!-- Стрелка от root к layers -->
<mxCell id="arrow_root_layers" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="root" target="layers">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="600" y="130" as="sourcePoint" />
<mxPoint x="500" y="180" as="targetPoint" />
<mxPathArray><mxPoint x="600" y="130" /><mxPoint x="600" y="155" /><mxPoint x="500" y="155" /><mxPoint x="500" y="180" /></mxPathArray>
</mxGeometry>
</mxCell>

<!-- Папка BD -->
<mxCell id="bd" value="📁 BD/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="720" y="180" width="200" height="40" as="geometry" />
</mxCell>

<mxCell id="handbook" value="📖 handbook.json (справочники)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="710" y="240" width="160" height="55" as="geometry" />
</mxCell>

<mxCell id="geo_objects" value="🗺️ geo_objects.json (объекты и участки)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="710" y="310" width="160" height="55" as="geometry" />
</mxCell>

<mxCell id="equipment" value="🔧 equipment.json (оборудование)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="710" y="380" width="160" height="55" as="geometry" />
</mxCell>

<mxCell id="arrow_bd" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="bd" target="handbook">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="820" y="220" as="sourcePoint" />
<mxPoint x="790" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>

<mxCell id="arrow_bd2" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="handbook" target="geo_objects">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="790" y="295" as="sourcePoint" />
<mxPoint x="790" y="310" as="targetPoint" />
</mxGeometry>
</mxCell>

<mxCell id="arrow_bd3" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="geo_objects" target="equipment">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="790" y="365" as="sourcePoint" />
<mxPoint x="790" y="380" as="targetPoint" />
</mxGeometry>
</mxCell>

<!-- Стрелка от root к BD -->
<mxCell id="arrow_root_bd" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="root" target="bd">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="800" y="130" as="sourcePoint" />
<mxPoint x="820" y="180" as="targetPoint" />
</mxGeometry>
</mxCell>

<!-- Папка config -->
<mxCell id="config" value="📁 config/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontStyle=1;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="80" y="380" width="200" height="40" as="geometry" />
</mxCell>

<mxCell id="settings_file" value="⚙️ app_settings.json (настройки приложения)" style="shape=note;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;align=center;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="100" y="440" width="160" height="60" as="geometry" />
</mxCell>

<mxCell id="arrow_config" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="config" target="settings_file">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="180" y="420" as="sourcePoint" />
<mxPoint x="180" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>

<!-- Стрелка от root к config -->
<mxCell id="arrow_root_config" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="root" target="config">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="320" y="130" as="sourcePoint" />
<mxPoint x="180" y="380" as="targetPoint" />
<mxPathArray><mxPoint x="320" y="130" /><mxPoint x="180" y="155" /><mxPoint x="180" y="380" /></mxPathArray>
</mxGeometry>
</mxCell>

<!-- Легенда -->
<mxCell id="legend" value="Условные обозначения:" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=12;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="80" y="540" width="150" height="20" as="geometry" />
</mxCell>

<mxCell id="leg_folder" value="📁 Папка" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="80" y="565" width="120" height="20" as="geometry" />
</mxCell>

<mxCell id="leg_file" value="📄 Файл" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="240" y="565" width="100" height="20" as="geometry" />
</mxCell>

<mxCell id="leg_media" value="🎬 Медиафайлы" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="80" y="590" width="120" height="20" as="geometry" />
</mxCell>

<mxCell id="leg_cache" value="🗂️ Кэш GeoJSON" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=11;" vertex="1" parent="1">
<mxGeometry x="240" y="590" width="120" height="20" as="geometry" />
</mxCell>

<!-- Примечание -->
<mxCell id="note_text" value="💡 Примечание: справочники в BD/ можно обновлять вручную. При удалении маршрута папка Media_<id> удаляется автоматически." style="text;html=1;strokeColor=#666666;fillColor=#f5f5f5;align=left;verticalAlign=top;whiteSpace=wrap;rounded=1;fontSize=10;fontColor=#333333;" vertex="1" parent="1">
<mxGeometry x="400" y="540" width="480" height="50" as="geometry" />
</mxCell>

</root>
</mxGraphModel>
</diagram>
</mxfile>
```

---

Как получить картинку

1. Откройте draw.io (бесплатно, без регистрации)
2. Нажмите File → Import from → Text
3. Вставьте XML-код выше → Create
4. При необходимости подредактируйте размеры/цвета
5. File → Export as → PNG (выберите масштаб 200% для чёткости)
6. Сохраните и вставьте в презентацию

Добавлено (2026-05-27, 08:05)
---------------------------------------------
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 650" width="1000" height="650">
<defs>
<marker id="arrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#555555" />
</marker>
<filter id="shadow" x="-5%" y="-5%" width="110%" height="110%">
<feDropShadow dx="2" dy="2" stdDeviation="2" flood-opacity="0.2"/>
</filter>
</defs>

<!-- Заголовок -->
<text x="500" y="35" text-anchor="middle" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="#2d5a3b">Структура хранения данных ИАСД-М</text>

<!-- Корневая папка -->
<rect x="250" y="60" width="500" height="45" rx="8" ry="8" fill="#2d5a3b" stroke="#1a3a24" stroke-width="2" filter="url(#shadow)"/>
<text x="500" y="88" text-anchor="middle" font-family="Arial, sans-serif" font-size="15" font-weight="bold" fill="#ffffff">/storage/emulated/0/IASDM/</text>

<!-- Стрелки от корня -->
<!-- К Routes -->
<line x1="320" y1="105" x2="120" y2="145" stroke="#555555" stroke-width="2" marker-end="url(#arrow)"/>
<!-- К layers -->
<line x1="440" y1="105" x2="380" y2="145" stroke="#555555" stroke-width="2" marker-end="url(#arrow)"/>
<!-- К BD -->
<line x1="560" y1="105" x2="580" y2="145" stroke="#555555" stroke-width="2" marker-end="url(#arrow)"/>
<!-- К config -->
<line x1="680" y1="105" x2="780" y2="145" stroke="#555555" stroke-width="2" marker-end="url(#arrow)"/>

<!-- ========== ROUTES ========== -->
<rect x="40" y="150" width="180" height="40" rx="6" ry="6" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" filter="url(#shadow)"/>
<text x="130" y="175" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#1a3a24">📁 Routes/</text>

<!-- Файл маршрута -->
<rect x="30" y="220" width="160" height="65" rx="4" ry="4" fill="#d5e8d4" stroke="#82b366" stroke-width="1.5" filter="url(#shadow)"/>
<text x="110" y="243" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" font-weight="bold" fill="#1a3a24"><id>.json</text>
<text x="110" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(маршрут: трек,</text>
<text x="110" y="275" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">точки, события)</text>

<!-- Медиа папка -->
<rect x="200" y="220" width="160" height="65" rx="4" ry="4" fill="#d5e8d4" stroke="#82b366" stroke-width="1.5" filter="url(#shadow)"/>
<text x="280" y="243" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" font-weight="bold" fill="#1a3a24">Media_<id>/</text>
<text x="280" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(фото, видео,</text>
<text x="280" y="275" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">аудиофайлы)</text>

<!-- Стрелки от Routes -->
<line x1="110" y1="190" x2="110" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>
<line x1="150" y1="190" x2="280" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>

<!-- ========== LAYERS ========== -->
<rect x="290" y="150" width="180" height="40" rx="6" ry="6" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" filter="url(#shadow)"/>
<text x="380" y="175" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#1a3a24">📁 layers/</text>

<!-- Исходный файл -->
<rect x="235" y="220" width="145" height="55" rx="4" ry="4" fill="#ffe6cc" stroke="#d79b00" stroke-width="1.5" filter="url(#shadow)"/>
<text x="307" y="243" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24"><имя>.kml/.kmz</text>
<text x="307" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(исходный файл)</text>

<!-- Кэш GeoJSON -->
<rect x="390" y="220" width="145" height="55" rx="4" ry="4" fill="#ffe6cc" stroke="#d79b00" stroke-width="1.5" filter="url(#shadow)"/>
<text x="462" y="243" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24"><id>.geojson</text>
<text x="462" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(кэш GeoJSON)</text>

<!-- Конфиг слоёв -->
<rect x="300" y="295" width="155" height="55" rx="4" ry="4" fill="#ffe6cc" stroke="#d79b00" stroke-width="1.5" filter="url(#shadow)"/>
<text x="377" y="318" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24">layers_config.json</text>
<text x="377" y="335" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(конфигурация слоёв)</text>

<!-- Стрелки от layers -->
<line x1="340" y1="190" x2="307" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>
<line x1="420" y1="190" x2="462" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>
<line x1="380" y1="190" x2="377" y2="290" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)" stroke-dasharray="4,3"/>

<!-- ========== BD ========== -->
<rect x="520" y="150" width="180" height="40" rx="6" ry="6" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" filter="url(#shadow)"/>
<text x="610" y="175" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#1a3a24">📁 BD/</text>

<!-- handbook.json -->
<rect x="535" y="220" width="150" height="50" rx="4" ry="4" fill="#e1d5e7" stroke="#9673a6" stroke-width="1.5" filter="url(#shadow)"/>
<text x="610" y="240" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24">handbook.json</text>
<text x="610" y="256" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(типы точек, сотрудники)</text>

<!-- geo_objects.json -->
<rect x="535" y="285" width="150" height="50" rx="4" ry="4" fill="#e1d5e7" stroke="#9673a6" stroke-width="1.5" filter="url(#shadow)"/>
<text x="610" y="305" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24">geo_objects.json</text>
<text x="610" y="321" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(объекты и участки)</text>

<!-- equipment.json -->
<rect x="535" y="350" width="150" height="50" rx="4" ry="4" fill="#e1d5e7" stroke="#9673a6" stroke-width="1.5" filter="url(#shadow)"/>
<text x="610" y="370" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24">equipment.json</text>
<text x="610" y="386" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(оборудование)</text>

<!-- Стрелки от BD -->
<line x1="610" y1="190" x2="610" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>
<line x1="610" y1="270" x2="610" y2="280" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>
<line x1="610" y1="335" x2="610" y2="345" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>

<!-- ========== CONFIG ========== -->
<rect x="730" y="150" width="180" height="40" rx="6" ry="6" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" filter="url(#shadow)"/>
<text x="820" y="175" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#1a3a24">📁 config/</text>

<!-- app_settings.json -->
<rect x="740" y="220" width="160" height="55" rx="4" ry="4" fill="#f8cecc" stroke="#b85450" stroke-width="1.5" filter="url(#shadow)"/>
<text x="820" y="243" text-anchor="middle" font-family="Arial, sans-serif" font-size="11" font-weight="bold" fill="#1a3a24">app_settings.json</text>
<text x="820" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="10" fill="#444444">(настройки приложения)</text>

<!-- Стрелка от config -->
<line x1="820" y1="190" x2="820" y2="215" stroke="#555555" stroke-width="1.5" marker-end="url(#arrow)"/>

<!-- ========== ЛЕГЕНДА ========== -->
<rect x="40" y="480" width="420" height="150" rx="6" ry="6" fill="#fafafa" stroke="#cccccc" stroke-width="1"/>
<text x="250" y="505" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#333333">Условные обозначения</text>

<rect x="60" y="520" width="30" height="20" rx="3" ry="3" fill="#dae8fc" stroke="#6c8ebf" stroke-width="1"/>
<text x="100" y="535" font-family="Arial, sans-serif" font-size="12" fill="#333333">Папка</text>

<rect x="200" y="520" width="30" height="20" rx="3" ry="3" fill="#d5e8d4" stroke="#82b366" stroke-width="1"/>
<text x="240" y="535" font-family="Arial, sans-serif" font-size="12" fill="#333333">Файлы маршрутов</text>

<rect x="60" y="550" width="30" height="20" rx="3" ry="3" fill="#ffe6cc" stroke="#d79b00" stroke-width="1"/>
<text x="100" y="565" font-family="Arial, sans-serif" font-size="12" fill="#333333">Импортированные слои</text>

<rect x="200" y="550" width="30" height="20" rx="3" ry="3" fill="#e1d5e7" stroke="#9673a6" stroke-width="1"/>
<text x="240" y="565" font-family="Arial, sans-serif" font-size="12" fill="#333333">Справочники (BD)</text>

<rect x="60" y="580" width="30" height="20" rx="3" ry="3" fill="#f8cecc" stroke="#b85450" stroke-width="1"/>
<text x="100" y="595" font-family="Arial, sans-serif" font-size="12" fill="#333333">Настройки (config)</text>

<!-- ========== ПРИМЕЧАНИЕ ========== -->
<rect x="520" y="480" width="420" height="100" rx="6" ry="6" fill="#fafafa" stroke="#cccccc" stroke-width="1"/>
<text x="730" y="505" text-anchor="middle" font-family="Arial, sans-serif" font-size="13" font-weight="bold" fill="#555555">💡 Примечание</text>
<text x="540" y="530" font-family="Arial, sans-serif" font-size="11" fill="#555555">• Справочники в BD/ можно обновлять вручную</text>
<text x="540" y="550" font-family="Arial, sans-serif" font-size="11" fill="#555555">• При удалении маршрута папка Media_<id> удаляется</text>
<text x="540" y="570" font-family="Arial, sans-serif" font-size="11" fill="#555555">• Слои кэшируются в GeoJSON для быстрой загрузки</text>

</svg>

Добавлено (2026-05-27, 08:07)
---------------------------------------------
flowchart TD
ROOT["/storage/emulated/0/IASDM/"]

ROOT --> ROUTES
ROOT --> LAYERS
ROOT --> BD
ROOT --> CONFIG

ROUTES["📁 Routes/"]
LAYERS["📁 layers/"]
BD["📁 BD/"]
CONFIG["📁 config/"]

ROUTES --> ROUTE_JSON["📄 <id>.json<br/>маршрут, трек, точки, события"]
ROUTES --> MEDIA["🎬 Media_<id>/<br/>фото, видео, аудио, документы"]

LAYERS --> SOURCE["📄 <name>.kml/.kmz<br/>исходный файл"]
LAYERS --> CACHE["🗂️ <id>.geojson<br/>кэш"]
LAYERS --> LAYER_CONFIG["⚙️ layers_config.json<br/>конфигурация слоёв"]

BD --> HANDBOOK["📖 handbook.json<br/>типы точек, сотрудники, работы"]
BD --> GEO["🗺️ geo_objects.json<br/>объекты и участки"]
BD --> EQUIP["🔧 equipment.json<br/>оборудование"]

CONFIG --> SETTINGS["⚙️ app_settings.json<br/>настройки GPS, карты, профиль"]

SOURCE -.-> CACHE

Добавлено (2026-05-27, 08:18)
---------------------------------------------
flowchart TD
GPS["🛰️ Получение локации<br/>FusedLocationProvider"]

GPS --> STAB["🔧 GpsStabilizer<br/>усреднение координат при стоянке"]

STAB --> ACC{Точность ≤ maxAccuracy?}
ACC -- Нет --> REJECT1["❌ Отбросить<br/>(низкая точность)"]
ACC -- Да --> MOVE{Движение?<br/>speed > 0.3 м/с<br/>или distance > 5 м}

MOVE -- Нет --> REJECT2["⏸ Не сохранять<br/>(точка стояния)"]
MOVE -- Да --> SAVE["💾 Сохранить TrackPoint<br/>в массив trackPoints"]

SAVE --> UPDATE["✏️ Обновить JSON маршрута"]

UPDATE --> MAP["🗺️ Обновить отображение<br/>на карте"]

REJECT1 --> GPS
REJECT2 --> GPS

Настройки записи:
Максимальная допустимая точность (по умолчанию 10 м)
Минимальное расстояние между сохраняемыми точками (3 м)
Интервал опроса GPS (0.5 с)
- Фильтрация «скачков»:
Отбрасывание выбросов по скорости (> 12 м/с) и расстоянию (> 25 м)
Стабилизация при стоянке (усреднение координат, окно 5–7 точек)
Прогрев GPS перед стартом:
Ожидание заданной точности (например, 3 секунды / 15 м)
Настройки записи трека — профиль «🚶 Пешком (точно)»
(значения по умолчанию)

📡 Параметры GPS:
• Максимальная допустимая точность: 10 метров
• Интервал опроса GPS: 0.5 секунды

📏 Фильтрация точек:
• Минимальное расстояние между точками: 3 метра
• Отбрасывание выбросов по скорости: > 5 м/с
• Отбрасывание выбросов по расстоянию: > 15 метров
• Стабилизация при стоянке: усреднение 5 точек

⏳ Прогрев GPS перед стартом:
• Длительность: 3 секунды
• Требуемая точность для старта: 25 метров
123123
Прикрепления:
2785370.txt (47.3 Kb)
ршшрш
Прикрепления:
3398832.txt (116.1 Kb)
впвап
Прикрепления:
2915783.txt (104.6 Kb)
4534
Прикрепления:
4729826.txt (103.7 Kb)
укцукцу
Прикрепления:
4988834.txt (45.4 Kb)
234234
Прикрепления:
0928615.txt (32.3 Kb)
5345345345
Прикрепления:
7034683.txt (104.1 Kb)
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:
Новый ответ
Имя:
Текст сообщения: