Есть ли способ добавить шейп-файл в файл слоя в QGIS, так же, как вы делаете это в свойствах слоя ArcGIS? (то есть перейдите к свойствам слоя, вкладке источника, а затем просто нажмите 'Set Dat Source'
кнопку)
Я изучил свойства слоя в QGIS и нигде не вижу этого ...
РЕДАКТИРОВАТЬ: я получил комментарии, объясняющие, что вы не можете сделать это с шейп-файлами, но если бы я изменил имя шейп-файла, а затем открыл уже существующий файл проекта, который содержит этот шейп-файл в качестве слоя, я получу «дескриптор» Диалог «Bad Layers», который позволяет мне перемещаться и повторно создавать источники для любого шейп-файла, который я хочу. Мне кажется странным, что вы можете использовать ресурсы в этом сценарии, но вы не можете сделать это вручную через диалоговое окно свойств слоя.
источник
В настоящее время это невозможно, но на это есть билет. Однако вы можете изменить источник данных в .qgs (файл проекта) и снова открыть проект.
Изменить
<datasource>
линиюисточник
в python можно напрямую изменять источник данных, используя QgsVectorLayer.writeLayerXML и QgsVectorLayer.readLayerXML, модифицируя документ DOM на лету и перезагружая слой, как в примере ниже.
В плагин PickLayer включена функция , позволяющая выполнять действия с выбранным слоем и объектом
источник
Начиная с версии 2.10 QGis Api включает метод QgsVectorLayer :: setDataSource :
источник
Если вы работаете с шейп-файлами, нет (из-за специфических характеристик формата). Если вы используете слои PostGIS или SpatiaLite, один векторный слой (таблица geometry_columns) может быть связан с несколькими таблицами атрибутов и обратно (с внешними ключами или представлениями).
Он реализован изначально в GRASS GIS, в нескольких таблицах для одного векторного слоя и при изменении источника данных ( v.to.db
источник