Найти - Пользователи
Полная версия: Загрузка слоя Spatialite в QGis
Начало » Python для новичков » Загрузка слоя Spatialite в QGis
1
Sviazist
Здравствуйте. Понимаю, что вопрос мега-чайниковский, но осилить не могу никак и даже не знаю, в какую сторону копать. Есть необходимость средствами Python загрузить в проект QGis слой, содержащийся в базе данных SpatiaLite. Через интерфейс QGis слой добавляется без проблем, через консоль никак. Код такой:

uri = QgsDataSourceURI()
uri.setDatabase('/home/novikov/Схема/База/Fibers.sqlite')
uri.setDataSource('', ‘Segments’, ‘geometry’)
vlayer = QgsVectorLayer(uri.uri(), ‘Seg2’, ‘spatialite’)
if not vlayer.isValid():
print “Layer failed to load!”

В общем, неизменно пишет:

Layer failed to load!

То есть слой не загружается. И никаких ошибок не выдаёт, по которым можно было бы выяснить причину и исправить. Делаю всё, как указано в документации pyqgis_developer_cookbook, но вот не получается что-то. При попытке обратиться к данному слою, QGis вылетает, что лишний раз доказывает, что слоя нет. Путь к базе и имена таблиц и полей проверял на несколько раз, все буквы верные, где надо - большие, где надо - маленькие. Догадываюсь, что проблема решается элементарно, но как именно, ума не приложу. Хоть бы ошибку какую выдавал что ли, а то просто не срабатывает, и догадайся тут. Заранее спасибо.
Sviazist
Проблема и правда решилась элементарно. Не хватало строки

from qgis.core import *

В итоге код выглядел так:

uri = QgsDataSourceURI()
uri.setDatabase('/home/novikov/Fibers.sqlite')
uri.setDataSource(“”, “Segments”, “geometry”)
vLayer=QgsVectorLayer(uri.uri(),“Segm3”,“spatialite”)

На запрос

vLayer.isValid()

Получил ответ

True

Всем спасибо.

Косяк! Причина в русском шрифте. Правильный ответ ниже.
Sviazist
Ан нет, проблема была в русском шрифте, как позже выяснилось. Итоговый рабочий скрипт:

uri.setDatabase('/home/novikov/Схема/Base/Fibers.sqlite'.decode('utf-8'))
uri.setDataSource(“”, “Segments”, “geometry”)
vLayer=QgsVectorLayer(uri.uri(),“Segm3”,“spatialite”)
vLayer.isValid()

Ответ:

True
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB