Один из самых удобных способов записать данные это использование готовых форматов, такие как JSON или YAML.
Из плюсов такого подхода стоит отметить вот что:
🔸 готовый, повсеместно используемый и поддерживаемый формат
🔸 простой и понятный файл, удобочитаемый для человека
🔸 можно легко редактировать в любом текстовом редакторе без специальных программ и библиотек
Но есть и минусы
🔹 затраты времени при записи файла (кодирование данных в нужный формат строки)
🔹 затраты времени при чтении файла (декодирование данных в Python объекты)
🔹 размер файла увеличивается из-за разметки данных (скобки, запятые, переносы, отступы...)
🔹 перед записью все данные должны быть помещены в память в полном объёме (не всегда)
🔹 при чтении необходимо считать весь файл в память и только потом декодировать данные
Если нужно писать немного данных в несколько файлов, то затраты по времени не ощутимы. Обычно это файлы конфига или какие-либо метаданные. Это отличный вариант под такие задачи.
Есть и другой поход к записи файлов - это бинарные файлы. Используется, когда данных достаточно много и никто их не собирается читать глазками😳.
🔸 очень быстрая запись
🔸 чтение значительно быстрей чем JSON, YAML итд
🔸 размер файла значительно меньше, так как нет разметки
🔸 можно записывать данные по мере поступления не загружая всё в память
🔸 можно извлечь любую часть данных независимо
Из минусов
🔹 нужно определить свой формат записи данных (если не используете готовую спецификацию определённого формата)
🔹 не получится открыть файл и визуально понять что там записано, а для чтения файла потребуется знать его спецификацию.
🔹 не так-то просто создать такой файл без специальной библиотеки
В таком виде удобно записывать большой массив любых однородных данных. Например, мониторинг валютной биржи или кэшированная анимация 3D геометрии.
(Это не означает что нельзя записать данные разного типа, просто это будет не так удобно)
Представьте себе JPG-картинку. По сути это немного мета-информации и большой массив пикселей. Тоже самое со звуком или видео файлом. Поэтому, если вы попробуете открыть картинку в текстовом редакторе вы увидите что-то вроде такого
f15d cd29 a564 4578 ...
09e2 9bc4 a696 1253 ...
84e9 4de1 3b23 c24a ...
2534 5161 28e0 709d ...
...
Это и есть записанные байтики. И для их чтения требуется определённый софт который знает что с ними делать. Под каждый тип файла.
К чему это я? Читайте в следующем посте...
#tricks#basic
47.8 миллионов километров дорог распознано в картах Bing и выложено Microsoft онлайн в виде открытых данных под лицензией ODbl [1]. В данных совсем нет Китая, Японии, Кореи, Папуа Новая-Гвинея.
Но Россия есть, и обитаемая зона её не так велика как географическая.
Все данные в формате TSV, сжатый объём около 10GB.
Ссылки։
[1] https://github.com/microsoft/RoadDetections
#opendata#datasets#microsoft
В рубрике как это устроено у них могу сказать что для меня открытие этого года в том сколько спешно-успешно распространяются сервисы для доступа к геоданным на базе спецификации STAC (SpatioTemporal Asset Catalogs). Я как раз обновляю реестр каталогов данных Dateno и у меня сервисов поддерживающих спецификацию STAC накопилось уже 168. Скорее будет больше. При этом изначально я их классифицировал как отдельное ПО, потому что большая часть сервисов были на базе референсных реализаций, а правильнее классифицировать как протокол, а ПО определять иначе. Например, после появления расширения STAC для Geoserver (ПО с открытым кодом для создания OGC совместимых API, используется по всему миру)
Особенность спецификации STAC в том что из нее сложно преобразовывать в другие спецификации и отсюда сложность в индексации в Dateno. То что обычно называют датасетом в STAC называется каталогом, в рамках этого каталога публикуются ресурсы охватывающие территорию заданную этим каталогом, но в разные промежутки времени (еженедельно, ежедневно, ежечасно и тд). В результате внутри одного набора данных могут быть тысячи и миллионы файлов. Рассматривать ресурсы как отдельные наборы данных будет некорректно, а как отображать карточки с таким числом файлов непонятно.
И, кстати, перечень каталогов STAC сервисов на StacIndex неполон, у нас в реестре Dateno полнее будет, а в живой природе их сильно больше потому что, как я упоминал, он теперь поддерживается расширением GeoServer'а, а этих инсталляций в мире очень много.
P.S. Кстати, у Роскосмоса тоже есть открытый STAC каталог, с декларируемыми примерно 200ТБ данными. Явление необычное при нынешнем тренде в РФ на закрытость.
#opendata#geodata#datasets
GlobalBuildingAtlas набор данных по всем зданиям в мире, общим объёмом в 36 терабайт. Опубликован в апреле 2025 г. , доступен для полной выгрузки и как сервис WFS. Под лицензией CC-BY-NC 3.0 (свободное использование для некоммерческих целей)
#opendata#datasets#geodata
Ещё одна важная находка, оказывается облачные LLM'ки вполне неплохо научились восстанавливать данные из графиков. Причём в разных формах и разных стилях. Это даёт довольно существенные возможности по превращению PDF отчетов и презентаций в таблицы с данными.
Слишком многие данные вот таким образом закопаны в официальных отчётах. А теперь можно их "выковыривать" гораздо более универсальными способами.
#data#datasets#llm
В рубрике интересных проектов на данныхGeoSeer [1], поисковая система по геоданным, а конкретнее по точкам API по стандартам WFS, WMC, WCS по всему миру. Я писал о нём год назад [2] и в течение года ни раз обращал внимание.
Из интересного:
1. 3.5 миллиона проиндексированных георесурсов/геоданных
2. За деньги доступно API для поиска
3. Любопытная статистика по охвату [3]
4. Дают расширенное описание георесурсов с учётом его геохарактеристик (области, атрибутов WFC/WMS и др.) [4]
Из особенностей:
- более 60%, примерно 2 миллиона записей - это геоданные Германии. Для сравнения в Dateno 4.4 миллиона георесурсов из которых к Германии относятся 1.89, это около 43%.
- реестр источников не публикуют, вернее обещают доступность только через API при платном тарифе
- фасетного поиска нет, только достаточно простой язык запросов
- поскольку индексируются WMS, WFC, WCS и WMTS то охватывает гораздо больше точек подключения в этих стандартах, но не охватывает все остальные геоданные, на порталах открытых данных и в каталогах ArcGIS и не только.
Разницу между GeoSeer и Dateno можно описать так:
1. ✅В Dateno есть публичный реестр всех источников, он не скрывается, любой желающий может скачать его как датасет [4].
2. ✅В Dateno есть много открытой статистики [5]. Она пока мало визуализируется, но с ней можно работать.
3. ✅В Dateno есть быстрый фасетный поиск и фильтрация по странам/территориям и другим критериям
4. ✅Dateno агрегирует геоданные из порталов неохваченных GeoSeer поскольку они не по стандартам OGC.
5. ❌Пока в Dateno нет охвата любых источников геоданным по стандартам OGC
6. ❌Пока в Dateno нет расширенного вывода метаданных для георесурсов
В целом пересечение индексов GeoSeer и Dateno в части геоданных около 60-80%. GeoSeer для проекта выглядит как хороший референсный проект для проверки полноты собственной базы.
Ссылки:
[1] https://www.geoseer.net
[2] https://t.me/begtin/5071
[3] https://www.geoseer.net/stats/
[4] https://github.com/commondataio/dataportals-registry/
[5] https://github.com/commondataio/dateno-stats
#opendata#datasearch#datasets#geodata#spatial
http://wla.berkeley.edu/~cs61a/fa11/lectures/streams.html
In this chapter, we continue our discussion of real-world applications by developing new tools to process #sequential#data. In Chapter 2, we introduced a sequence interface, implemented in Python by built-in data types such as #tuple and #list. #Sequences supported two operations: querying their length and accessing an element by index. In Chapter 3, we developed a user-defined implementations of the sequence interface, the Rlist class for representing recursive lists. These sequence types proved effective for representing and accessing a wide variety of sequential #datasets.
#typescript#ai#analytics#datasets#dspy#evaluation#gpt#llm#llmops#low_code#observability#openai#prompt_engineering
LangWatch helps you monitor, test, and improve AI applications by tracking performance, comparing different setups, and optimizing prompts automatically. It works with any AI tool or framework, keeps your data secure, and lets you collaborate with experts to fix issues quickly, making your AI more reliable and efficient.
https://github.com/langwatch/langwatch