Страница 1 из 1

Пустые TAB файлы. Тип геометрии.

Добавлено: 15 окт 2018, 14:50
andrutornado
Подключаю пустые TAB файлы в QGIS. Нет возможности ввести геометрию. Можно ли через python задать тип геометрии который будет вводиться в слой, чтобы настроить стили? Файлы слоёв должны быть пустыми, т.к. это заготовка для ввода объектов подрядной организацией. И крайне желательно оставить TAB файлы, т.к. это наш родной формат. Мысль в том, чтобы подрядные организации забивали данные в QGIS, а мы без конвертации сразу бы читали их в MapInfo.

Re: Пустые TAB файлы. Тип геометрии.

Добавлено: 15 окт 2018, 15:37
andrutornado
Случайно задублировал тему. Удалите, пожалуйста, лишнюю.

Re: Пустые TAB файлы. Тип геометрии.

Добавлено: 22 окт 2018, 11:59
andrutornado
Если кому интересно, нашёл такое решение. Заготовка для проекта QGIS у меня создаётся программно на python. Алгоритм действий.
-добавляется слой из TAB файла;
-если в нём нет объектов, то добавляется объект типа, которого должен быть слой;
-удаляется добавленный объект;
-слой передобавляется (QGIS просекает, что в TAB файле есть удалённый объект определённого типа и правильно задаёт легенду)

Пока-что проверено на точечных слоях.

Поспешил с выводами. На полигонах не срабатывает.

Re: Пустые TAB файлы. Тип геометрии.

Добавлено: 25 окт 2018, 11:22
andrutornado
Всё оказалось гораздо проще. Тип открываемой геометрии можно задавать даже для полностью пустых TAB файлов принудительно при открытии без всяких плясок в бубном. Не знаю почему мне никто ещё не посоветовал.

фрагмент кода на python:

Код: Выделить всё

    miToQUriGeomTypesDic={
        'miFeatureTypeSymbol':'geometrytype=Point',
        'miFeatureTypeLine':'geometrytype=LineString',
        'miFeatureTypeRegion':'geometrytype=Polygon'
        }
    #допустим в слое TAB такие типы элементов
    elTypes=[ 'miFeatureTypeSymbol','miFeatureTypeLine','miFeatureTypeRegion']
    #тогда можно открыть один и тот-же TAB файл открыть в нескольких слоях с разным типом геометрии
    for el in elTypes:
        vlayer = QgsVectorLayer(layerPath+'|'+miToQUriGeomTypesDic[el],layerName, "ogr")
        QgsMapLayerRegistry.instance().addMapLayer(vlayer)
Насколько я понимаю таким образом открытые слои не стоит делать редактируемыми одновременно.

Re: Пустые TAB файлы. Тип геометрии.

Добавлено: 25 окт 2018, 11:45
andrutornado
При открытии абсолютно пустого TAB файла через интерфейс можно также указывать необходимый тип через пришлёпку:
задание нужного типа геометрии для TAB файла
задание нужного типа геометрии для TAB файла
strict_type.png (29.67 КБ) 4315 просмотров