Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
QgsDataProvider()
24-07-2012, 22:43,
#1
QgsDataProvider()
Z poziomu Pythona próbuję utworzyć nowy obiekt QgsDataProvider na podstawie już istniejącego:

Kod:
provider = warstwa.dataProvider()
uri = provider.dataSourceUri()
providerNew = QgsDataProvider(uri)

Niestety otrzymuję komunikat:

Kod:
providerNew = QgsDataProvider(uri)
TypeError: qgis.core.QgsDataProvider represents a C++ abstract class and cannot be instantiated

Czy można to jakoś obejść?
25-07-2012, 00:05,
#2
RE: QgsDataProvider()
A po cóż Ci obiekt klasy QgsDataProvider odpięty od warstwy? Możesz utworzyć pustą warstwę w pamięci, a razem z nią providera:

Kod:
warstwaNew = QgsVectorLayer('Polygon', 'moja fejkowa warstwa', 'memory')
providerNew = warstwaNew.dataProvider()
25-07-2012, 07:00,
#3
RE: QgsDataProvider()
(25-07-2012, 00:05)borys napisał(a): A po cóż Ci obiekt klasy QgsDataProvider odpięty od warstwy?

Potrzebuję dostępu do danych z ich dodatkowym filtrowaniem za pomocą setSubsetString(). Nie muszę tego wyświetlać na mapie.
Nie chcę modyfikować "oryginalnego" providera (tego od warstwy 'warstwa'), bo ma to wpływ na wyświetlanie 'warstwy', a dodatkowo mogę coś namieszać i przez przypadek projekt zepsuć.

Pewnie będzie trzeba założyć dodatkową warstwę jak radzisz i z niej pobrać providera.


Skocz do: