What this format cannot do — known in advance:
nothing to lose: everything we measured for this format, it keeps
based on measurement, not a manual:круг Roads_CAD (7152 объекта) прошёл без единого расхождения, сверка 2026-09-19; имя поля, дата-время, высота и смешанная геометрия — всё сохраняется, проба 2026-09-19; строка длиной 300 символов доехала целиком
does not keep height field names up to 31 characters values longer than 254 characters get cut binary becomes «string» based on measurement, not a manual:высота НЕ хранится: Roads_CAD, 3355 объектов из 7152 приехали плоскими, сверка 2026-09-19; смешанная геометрия ДЕРЖИТСЯ: точка, линия и полигон записаны в одну таблицу и прочитаны обратно, проба 2026-09-19; дата-время доезжает дата-временем, проба 2026-09-19; имя поля режется до 31 символа: поле в 32 и в 40 символов вернулось одной и той же строкой в 31 (лишнее просто отброшено, не пронумеровано) — проба 2026-09-25, задача 8.11; строка обрезается до 254 БАЙТ выбранной кодировки, не символов: 200 кириллических символов (UTF-8, 2 байта на символ) вернулись 139 символами, а не 200 — проба 2026-09-25. Предупреждение печатается один раз на набор
dimensionality is per dataset: where not everyone has height, we lose it one geometry type per dataset — mixed geometry will be split apart field names up to 10 characters values longer than 254 characters get cut decimal fields with no digits after the point come back as integers binary becomes «string» datetime becomes «date» time becomes «string» based on measurement, not a manual:имя поля режется до 10: AnnualMaintenanceCostEuro стало AnnualMain, проба 2026-09-19; имя НАБОРА не ограничено десятью: это предел DBF на имя поля, и однажды мы урезали по нему набор до E_TRN_Roa3, 2026-09-19; размерность — свойство набора: в трёхмерном наборе плоский объект получает Z = 0, то есть выдуманную высоту; на Roads_CAD так вышло у 745 объектов, 2026-09-19; смешанная геометрия НЕ держится: набор привязывается к типу ПЕРВОГО объекта, линия после точки отвергнута с ошибкой, проба 2026-09-19; дата-время становится датой: время суток теряется, проба 2026-09-19; дробное поле без знаков после запятой возвращается целым: значения те же, объявление другое — MERGED_shapes, поля mslink_0..2 и igds_graphic_group, 2026-09-19; высота хранится, проба 2026-09-19; строка обрезается до 254 БАЙТ выбранной кодировки, не символов — та же природа, что у MapInfo, проба 2026-09-25; DBF снимает пробел с ОБОИХ концов строки, не только справа: он же символ дополнения до ширины поля, и на чтении не отличим от настоящего содержимого. Roads_CAD, слой Disclaimer: текст в 303 символа обрезается нами до 254, но 254-й символ — пробел, и сверка честным побайтовым сравнением видела 253 символа против обещанных 254 — «broken» вместо «closed_with_changes». Причина найдена перебором (не байты и не кодировка: значение чистый ASCII), docs/SOURCES.md, 2026-09-25; БЕЗ явной кодировки (LDID/87 по умолчанию) кириллица приезжает строкой из «?», без .cpg — сравнение с моделью честно ловит это как расхождение значений, а не молчит. С явной ENCODING=UTF-8 создаётся .cpg и текст сохраняется, но обрезка по-прежнему в байтах: 254 байта UTF-8. Поэтому нашим умолчанием стало UTF-8, а не «как решит драйвер» — проба 2026-09-25, docs/SOURCES.md
dimensionality is file-wide: where not everyone has height, we strip it entirely based on measurement, not a manual:размерность — свойство ФАЙЛА, а не набора: общая рамка файла объявляется srsDimension=3, и ВСЕ плоские наборы рядом с трёхмерными перестают читаться — «Did not get at least 3 values», падение на первом же объекте. На Roads_CAD так легли 6 наборов из 9 при трёх целых. То есть смешанный по высоте файл даёт не потерю, а нечитаемый файл. Замерено 2026-09-19; два набора в одном файле, имя поля, дата-время, высота и строка в 300 символов сохраняются, проба 2026-09-19; на обратном чтении появляется добавочное поле gml_id — это идентификатор формата, не наши данные, 2026-09-19; ЦЕЛОЕ и ВЕЩЕСТВЕННОЕ поле НЕ превращаются в строку — проверено отдельно, а не предположено по аналогии с CSV/KML: голый драйвер (Integer/Integer64/Real) и оба реальных файла (Dublin — 16 числовых полей на 6593 объектах, Roads_CAD — 4 поля на 7152) вернули числа числами. `types` у GML остаётся пустым. Задача B3, 2026-10-02; СК хранится ТОЛЬКО вместе с кодом EPSG: прямой прогон на голом драйвере, ДВА набора в ОДНОМ файле — с EPSG:26910 (реальная цель Roads_CAD) и с настоящим кодом-без-EPSG WKT Dublin (ирландская Transverse Mercator из его же стора) — отдал первому `GetSpatialRef()` с верной проекцией, второму `None`. Не тот же механизм, что `stores_crs=false` у CSV/DXF (там хранить СК вообще некуда); здесь место есть, но без кода EPSG формат его не заполняет. Задача B3, 2026-10-02
integer becomes «string» real becomes «string» based on measurement, not a manual:БЕЗ опции GEOMETRY=AS_WKT геометрия пропадает целиком и молча: объекты на месте, геометрии нет ни у одного. С опцией — геометрия и высота сохраняются, проба 2026-09-19; поэтому опция стоит в матрице, а не в коде условий: формат без неё отдаёт таблицу без карты; формат структурно не хранит СК нигде: нет .prj, нет заголовка — проверено на dublin_planning.zip, прогноз раньше обещал crs_written=yes, задача B2, 2026-10-02; целое И вещественное поле возвращаются СТРОКОЙ: у драйвера CSV нет .csvt и вообще никакой типизированной схемы. На dublin_planning.zip все 16 числовых полей (8 целых, 8 вещественных) вернулись строкой на всех 6593 объектах; на Roads_CAD.dwg — 4 поля (1 целое, 3 вещественных) на 3345 из 7152. Задача B3, 2026-10-02
dataset and field names become lowercase based on measurement, not a manual:имя НАБОРА тоже приводится к нижнему регистру: девять наборов Roads_CAD вернулись как disclaimer, e_trn_roads_mot и так далее — данные целы, сверка по имени не находила ни одного, 2026-09-19; имя поля приводится к НИЖНЕМУ регистру: AnnualMaintenanceCostEuro стало annualmaintenancecosteuro, проба 2026-09-19; высота, дата-время, строка в 300 символов и несколько наборов в файле сохраняются, 2026-09-19
dimensionality is per dataset: where not everyone has height, we lose it returns features in a different order based on measurement, not a manual:размерность — свойство НАБОРА, как у Shapefile: в трёхмерном наборе плоский объект возвращается с Z = 0. На Roads_CAD так вышло у 745 объектов — ровно у тех же, что и в Shapefile, 2026-09-19; высота хранится ТОЛЬКО если тип набора объявлен трёхмерным: при wkbUnknown объекты приехали плоскими, при wkbUnknown|25D — с высотой, проба 2026-09-19; объекты возвращаются В ДРУГОМ ПОРЯДКЕ: формат строит пространственный индекс и пишет по нему. Пять точек подряд вернулись 4-0-2-3-1; с SPATIAL_INDEX=NO порядок сохранился, проба 2026-09-19; имя поля, дата-время и строка в 300 символов сохраняются, 2026-09-19
one dataset fits per file based on measurement, not a manual:имя поля, дата-время, высота, смешанная геометрия и строка в 300 символов сохраняются, проба 2026-09-19; своих типов у формата нет: то, что уедет строкой, вернётся строкой — на приёме это видно; в одном файле помещается ОДИН набор: девять наборов Roads_CAD уехали в один .geojson и прочитались обратно нулём, без единой жалобы, 2026-09-19
WGS84 coordinates only: it silently corrupts a projected one integer becomes «string» based on measurement, not a manual:ЧЕРЕДОВАТЬ наборы при записи нельзя: «Interleaved feature adding to different layers is not supported». Пишем по проходу на набор, проба 2026-09-19; набор заводится ПЕРЕД своей записью, а не заранее: заведение делает набор текущим, и запись в любой другой отвергается той же жалобой. Девять наборов Roads_CAD, заведённых заранее, оставили в файле 40 объектов из 7152, 2026-09-19; координата хранится ТОЛЬКО градусами WGS84, и проекционная молча заворачивается по кругу: X = 539 640 вернулся как -20.83 (539640 по модулю 360), Y остался как был. Ни одного предупреждения, объекты на месте, форма испорчена. Замерено на Roads_CAD 2026-09-19; схема у формата своя: поле приехало под именем Name, дата-время стало строкой — KML хранит не данные, а подписи, 2026-09-19; целое поле возвращается СТРОКОЙ: пишем integer как OGR Integer64 (наше общее правило для T_INT), а схема KML (<SimpleField type="int">) на чтении отдаёт его только строкой — Disclaimer.color: 220 (int) записано, назад пришло '220' (str), 11 объектов из 11. Минимальной пробой на голом OGR (OFTInteger против OFTInteger64) подтверждено: это ограничение именно 64-битного целого у драйвера KML, не общий для форматов эффект — GML и GPKG тем же полем вернули int. Проба 2026-09-26, задача 9.26; хвостовой пробел в строковом значении не возвращается: '264 DIVER ' записано в XML целиком (видно в файле), назад читается '264 DIVER' — это чтение GDAL/LIBKML обрезает узел текста, а не наша запись. 2 объекта из 3334 на E_TRN_Roads_LABL.text (значения с пробелом перед концом строки). Проба 2026-09-26, задача 9.26
one dataset fits per file keeps NO fields at all: the format has its own schema, only geometry and the layer name survive based on measurement, not a manual:ЗАВЕДЁН 2026-09-21. В одном файле помещается ОДИН набор OGR: «Unable to have more than one OGR entities layer in a DXF file» — дословный отказ драйвера на Roads_CAD (9 наборов); драйвер ПЕРЕИМЕНОВЫВАЕТ слой в `entities`, а настоящее имя берёт из поля `Layer` — поэтому имя набора пишется в это поле, и круг через наш же читатель имя возвращает: DELCO_StreetCenterlines, 29 636 объектов, набор вернулся как StreetCenterlines, типы LineString и Point совпали, 2026-09-21; высота: не замеряли; НЕ ХРАНИТ НАШИХ ПОЛЕЙ: схема у формата своя (Layer, SubClasses, PaperSpace), и всё заведённое драйвер молча отбрасывает — 14 818 подписей DELCO вернулись без текста, 2026-09-21; сверка по полю `Layer` проходит: 29 636 из 29 636, структура 0, смещение 0.0000 — после того как сверку научили брать имя набора из поля, 2026-09-21; СОЗДАНИЕ ПРОИЗВОЛЬНОГО ПОЛЯ ОТКАЗЫВАЕТ, не молчит: у драйвера фиксированная схема из 14 полей (Layer, Text, SubClasses и другие), CreateField сверх неё даёт 'DXF layer does not support arbitrary field creation' и до задачи B2 ронял ВЕСЬ файл — DELCO_StreetCenterlines.dxf → DXF отказывал целиком на первом же поле вне этого списка ('angle'), 2026-10-02; СК НЕ ХРАНИТ ВООБЩЕ: CreateLayer с заданной EPSG:3734 и чтение того же файла обратно отдают None — проверено прямым прогоном, не только по отсутствию опции, 2026-10-02
On the left, your layers as they are, with their own names. On the right, a rebuild: we work out WHAT is in the layers and assemble only what is needed, under common names. Not sure — take “as is”: nothing will be lost.
A browser notification can fail silently: permission revoked, tab closed, a strict browser setting. Email is the fallback. The address is deleted together with the job, in the same deletion as the file.
We do not store your data. The file is deleted as soon as it is no longer needed for processing. What we read — our model of the file — is deleted once the processing period ends (24 h). The final file exists only with you: we assemble it from the model at the moment of download, and keep it available for download no longer than 24 h. What stays with us afterwards is anonymized data only — statistics and the outcome of processing, counters, the data's schema — tied neither to the source file nor to you. Neither the source nor anything derived from it is passed to anyone. Among that anonymized data we also keep a salted fingerprint of your dataset's layer names, used only to notice when unrelated files share the same schema.
I agree to hand over the file on these terms