Как конвертировать DXF в SHP (Shapefile) — из CAD в ГИС

DXF и Shapefile могут содержать одни и те же линии, но созданы для разных задач. DXF — это чертёж: объекты на слоях, с блоками, текстами и штриховками и без малейшего представления о том, где на Земле он находится. Shapefile — это слой ГИС: один тип геометрии на файл, атрибутивная таблица и необязательная система координат. Перевести одно в другое — значит разделить чертёж по геометрии, решить, что станет атрибутом, и приписать систему координат, которой у DXF никогда не было. Вот что сохраняется, что нет и как сделать это офлайн.

Почему DXF не переводится в Shapefile один к одному

Shapefile хранит ровно один тип геометрии — точки, линии или полигоны. DXF свободно смешивает их на одном слое. Первое, что делает любое преобразование, — раскладывает чертёж максимум по трём файлам, по одному на тип геометрии.

Shapefile также несёт атрибутивную таблицу (.dbf) и, по желанию, свою систему координат (.prj). У DXF нет ни того, ни другого в таком виде: его «атрибуты» — это имя слоя и то, что следует из типа объекта, а систему координат он не объявляет вовсе.

Что сохраняется, а что нет

Геометрия сохраняется: точки, открытые линии и замкнутые контуры становятся точками, полилиниями и полигонами. Отметки тоже могут сохраниться, если Shapefile записан в 3D (PointZ, PolyLineZ, PolygonZ), а не плоским.

Идентичность сохраняется как атрибуты: имя объекта и слой DXF, из которого он пришёл, становятся полями таблицы, так что структура слоёв сохраняется в виде столбца, по которому можно фильтровать.

Оформление не сохраняется: тексты, блоки-символы, штриховки, цвета и типы линий — это представление, а Shapefile хранит только геометрию и атрибуты. Настоящих кривых в Shapefile тоже нет, поэтому после любого преобразования проверяйте дуги и окружности — они должны стать цепочкой вершин.

Система координат — шаг, о котором забывают

Координаты в DXF — настоящие числа, часто в национальной сетке или UTM, но файл не сообщает, в какой они системе. У Shapefile без .prj та же проблема, а Shapefile с НЕВЕРНЫМ .prj ещё хуже: он уверенно ложится не туда.

Поэтому преобразование — тот момент, когда нужно приписать систему, в которой сделан чертёж. Это назначение, а не пересчёт: числа остаются прежними, объявляется лишь их смысл. Если систему нельзя определить однозначно, лучше не писать .prj вовсе, чем записать угаданный.

Пошагово в STREAM

1. Работайте в проекте, система координат которого совпадает с системой чертежа.

2. Импортируйте DXF. Слои приходят вместе с ним; слой с очень большим числом объектов ради скорости загружается только для чтения — щёлкните по нему правой кнопкой и выберите «Сделать редактируемым», чтобы его объекты можно было выгрузить.

3. Скройте то, что не нужно на выходе. Выгружаются только видимые объекты.

4. Откройте «Вывод карты» и выберите Shapefile. STREAM пишет отдельный 3D-Shapefile для точек, линий и площадей, пропускает тип без объектов и заносит имя и слой каждого объекта в атрибутивную таблицу. Измерения тоже выгружаются: площадные — вместе с полигонами, остальные — с линиями.

5. Файл .prj пишется, если система координат проекта определяется по коду EPSG; иначе файл остаётся без .prj, а не с угаданным.

6. Откройте результат в своей ГИС и проверьте три вещи: слой лёг туда, куда нужно, в атрибутивной таблице есть ожидаемые имена слоёв, значения Z на месте.

В обратную сторону: из Shapefile в DXF

Обратный путь работает так же. Импортируйте Shapefile, GeoJSON или GeoPackage — каждый слой становится слоем, каждый объект — объектом, на котором можно чертить, к которому можно привязываться и который можно редактировать, — затем выгрузите DXF; слои уйдут вместе с ним.

Частые вопросы

Почему из одного DXF получается несколько Shapefile?

Потому что Shapefile хранит только один тип геометрии. Точки, линии и полигоны одного чертежа попадают в разные файлы; тип без объектов пропускается.

Почему у полученного Shapefile нет системы координат?

Потому что DXF её не объявляет. Припишите систему, в которой сделан чертёж, — это назначение, а не пересчёт. STREAM пишет систему проекта в .prj, если она определяется по коду EPSG, а иначе не пишет .prj вовсе, а не угадывает.

Сохраняются ли отметки при преобразовании?

Да, если Shapefile записан в 3D. STREAM пишет файлы PointZ, PolyLineZ и PolygonZ, так что Z каждой вершины сохраняется.

Что происходит с текстами, блоками и штриховками DXF?

Это оформление чертежа, а не геометрия ГИС, и в Shapefile они не записываются. Имя объекта и его слой DXF сохраняются как атрибуты.

Можно ли перевести Shapefile обратно в DXF?

Да. Импортируйте Shapefile, GeoJSON или GeoPackage, затем выгрузите DXF; каждый слой ГИС станет слоем DXF.

Переводите данные между форматами CAD и ГИС в STREAM

Нативное Windows-приложение · полностью офлайн · бесплатная бета

Экспорт (DXF, LandXML, CSV, GeoTIFF)