Več

Pridobivanje sloja po imenu v PyQGIS?


Imam vtičnik, ki poišče medpomnilnik za seznam mest, če je oddaljen. Imena držav in mest so vzeta iz tabele atributov in se ustrezno filtrirajo. Kar hočem, je, da bi moj vtičnik določil ime ali vrstni red sloja na platnu, ne glede na druge sloje, ki so na platnu, in dostopal do ustreznih atributov iz tega sloja.

Prav tako me zanima, ali bi usmerjanje določenega imena sloja v kodo povzročilo kakšno napako v ponovitvi, čeprav so prisotne nekatere druge plasti?

Spodaj je moja koda, prosim, povejte mi, kje naj naredim spremembe in kakšna bi bila sprememba?

če dist in centerCity: # QMessageBox.information (self.dlg, "info", "both True") st = '"name" =  "+ centerCity +' " exp = QgsExpression (st) else: QMessageBox.warning ( self.dlg, "Vnesite razdaljo", "Vnesite razdaljo in poskusite znova.") return #terminate the function layer = self.iface.activeLayer () it = layer.getFeatures (QgsFeatureRequest (exp)) feature = it.next () mbuf = feature.geometry (). buffer (dist, 2) iterFeat = layer.getFeatures () za f v iterFeat: geom2 = f.geometry () valTest = QgsGeometry.within (geom2, mbuf)

UPDATE: 10.04.2018

Uporaba QGIS 3.x lahko uporabitemapLayersByNamemetoda izQgsProjectrazred na ta način:

layer = QgsProject.instance (). mapLayersByName ('moje ime sloja')

Ker lahko v podoknu s sloji v QGIS imate več slojev z enakim imenom, vam zgornja metoda prikaže seznam ujemajočih se slojev.


Za QGIS 2.x:

Prepričati se morate le, da ima sloj ime, ki ga lahko ločite od drugih. Namestoplast = self.iface.activeLayer (), storite:

plast = Ni za lyr v QgsMapLayerRegistry.instance (). mapLayers (). values ​​(): if lyr.name () == "YOUR_LAYER_NAME": layer = lyr break

Če ne zaupate imenu sloja (navsezadnje ga lahko uporabnik kadar koli spremeni), lahko poskusite preveriti vir sloja. Če je vaša plast Shapefile, lahko pot do datoteke Shape preverite na ta način:

plast = Ni za lyr v QgsMapLayerRegistry.instance (). mapLayers (). values ​​(): if lyr.source () == "/path/to/shapefile.shp": layer = lyr break

UREDI: Kot je @Jakob poudaril v komentarjih, lahko prvi blok napišete v eno vrstico:

layerList = QgsMapLayerRegistry.instance (). mapLayersByName ("YOUR_LAYER_NAME")

Ali:

layerList = [lyr za lyr v QgsMapLayerRegistry.instance (). mapLayers (). values ​​() if lyr.name () == "YOUR_LAYER_NAME"]

Kakorkoli, to bi morali preveritilayerListpred dostopom do prvega elementa ni prazen:

če je layerList: layer = layerList [0]

Če želite projektu ustvariti in dodati primerek vektorske plasti, podajte identifikator vira podatkov sloja, ime sloja in ime ponudnika:

Identifikator vira podatkov je niz in je specifičen za vsakega ponudnika vektorskih podatkov. Ime plasti se uporablja v gradniku seznama plasti. Pomembno je preveriti, ali je bila plast uspešno naložena. Če ni, se vrne neveljaven primerek sloja.

Za vektorski sloj geopakiranja:

Najhitrejši način za odpiranje in prikaz vektorske plasti v QGIS je metoda addVectorLayer () QgisInterface:

To ustvari novo plast in jo v enem koraku doda trenutnemu projektu QGIS (zaradi česar se prikaže na seznamu slojev). Funkcija vrne primerek sloja ali None, če sloja ni bilo mogoče naložiti.

Naslednji seznam prikazuje, kako dostopati do različnih virov podatkov z uporabo ponudnikov vektorskih podatkov:

Knjižnica OGR (datoteka oblike in številne druge oblike datotek) - vir podatkov je pot do datoteke:

za dxf (upoštevajte notranje možnosti v viru podatkov uri):

Baza podatkov PostGIS - vir podatkov je niz z vsemi informacijami, potrebnimi za vzpostavitev povezave z bazo podatkov PostgreSQL.

Razred QgsDataSourceUri vam lahko ustvari ta niz. Upoštevajte, da je treba QGIS sestaviti s podporo za Postgres, sicer ta ponudnik ni na voljo:

Argument False, poslan v uri.uri (False), preprečuje razširitev konfiguracijskih parametrov za preverjanje pristnosti, če ne uporabljate nobene konfiguracije za preverjanje pristnosti, ta argument ne vpliva.

CSV ali druge besedilne datoteke z ločitvijo - če želite odpreti datoteko s podpičjem kot ločilo, s poljem «x» za koordinato X in poljem «y» za koordinato Y bi uporabili nekaj takega:

Niz ponudnika je strukturiran kot URL, zato mora imeti pot predpono file: //. Omogoča tudi geometrije v obliki zapisa WKT (dobro znano besedilo) kot alternativo poljem x in y in omogoča določitev referenčnega sistema koordinat. Na primer:

Datoteke GPX - ponudnik podatkov «gpx» bere skladbe, poti in točke poti iz datotek gpx. Če želite odpreti datoteko, morate kot del URL-ja določiti vrsto (proga / pot / točka):

Podatkovna baza SpatiaLite - Podobno kot zbirke podatkov PostGIS se tudi QgsDataSourceUri lahko uporablja za generiranje identifikatorja vira podatkov:

Geometrije, ki temeljijo na MySQL WKB, prek OGR - vir podatkov je niz povezave do tabele:

Povezava WFS: povezava je definirana z URI in z uporabo ponudnika WFS:

Uri lahko ustvarite s standardno knjižnico urllib:

Vir podatkov obstoječe plasti lahko spremenite tako, da v primerku QgsVectorLayer pokličete setDataSource (), kot v naslednjem primeru:


Zagon QGIS¶

Zagon in zaustavitev QGIS¶

Zagon QGIS se izvede kot običajno za katero koli drugo aplikacijo na vaši platformi. To pomeni, da lahko QGIS zaženete tako:

  • tipkanje qgis v ukaznem pozivu, ob predpostavki, da je QGIS dodan v vaš PATH ali ste & # 8217re v svoji namestitveni mapi
  • uporabo meni Programi, če uporabljate vnaprej sestavljen binarni meni Start ali pristanišče
  • dvakrat kliknite ikono v mapi Programi ali bližnjici na namizju
  • dvakrat kliknite obstoječi projekt QGIS ( .qgs ) mapa. Upoštevajte, da bo to tudi odprlo projekt

    možnost menija Projekt ‣ Izhod iz QGIS ali uporabite bližnjico Ctrl + QQGIS ‣ Zaprite QGISali uporabite bližnjico Cmd + Q
  • ali uporabite rdeči križ v desnem zgornjem kotu glavnega vmesnika aplikacije.

Možnosti ukazne vrstice¶

V prejšnjem poglavju ste izvedeli, kako zagnati QGIS. Videli boste, da QGIS ponuja tudi dodatne možnosti ukazne vrstice.

QGIS podpira številne možnosti, ko se zažene iz ukazne vrstice. Če želite dobiti seznam možnosti, vnesite qgis --pomoč v ukazni vrstici. Izjava o uporabi za QGIS je:

Primer Uporaba argumentov ukazne vrstice

QGIS lahko zaženete tako, da v ukazni vrstici navedete eno ali več podatkovnih datotek. Na primer, ob predpostavki, da ste v qgis_sample_data imenika, lahko zaženete QGIS z vektorsko plastjo in rastrsko datoteko, nastavljeno za nalaganje ob zagonu, z naslednjim ukazom: qgis ./raster/landcover.img ./gml/lakes.gml

Možnost ukazne vrstice - posnetek

Ta možnost vam omogoča, da iz trenutnega pogleda ustvarite posnetek v obliki PNG. To je priročno, če imate veliko projektov in želite ustvariti posnetke iz svojih podatkov.

Trenutno ustvari datoteko PNG z 800 x 600 slikovnimi pikami. To lahko prilagodite s pomočjo --premer in - višina argumenti ukazne vrstice. Ime datoteke lahko dodate po - posnetek .

Možnost ukazne vrstice --lang

QGIS na podlagi vašega jezika izbere pravilno lokalizacijo. Če želite spremeniti jezik, lahko določite jezikovno kodo. Na primer qgis --zvoli zažene QGIS v italijanski lokalizaciji.

Možnost ukazne vrstice --projekt

Možen je tudi zagon QGIS z obstoječo datoteko projekta. Samo dodajte možnost ukazne vrstice --projekt čemur sledi ime vašega projekta in QGIS se odpre z naloženimi vsemi sloji v dani datoteki.

Možnost ukazne vrstice --obseg

Če želite začeti z določenim obsegom zemljevida, uporabite to možnost. Dodati morate omejitveno polje svojega obsega v naslednjem vrstnem redu, ločenem z vejico:

Možnost ukazne vrstice --nologo

Ta argument ukazne vrstice skrije začetni zaslon, ko zaženete QGIS.

možnost ukazne vrstice - preverjanje prometa

Ob zagonu ne preverite, ali je na voljo nova različica QGIS.

Možnost ukazne vrstice --noplugins

Če imate težave pri zagonu vtičnikov, se s to možnostjo izognite nalaganju ob zagonu. Pozneje bodo še vedno na voljo v upravitelju vtičnikov.

Možnost ukazne vrstice --customizationfile

S tem argumentom ukazne vrstice lahko definirate datoteko za prilagajanje grafičnega uporabniškega vmesnika, ki se bo uporabljala ob zagonu.

Možnost ukazne vrstice --neustomizacija

Z uporabo tega argumenta ukazne vrstice obstoječa prilagoditev GUI ne bo uporabljena ob zagonu.

Možnost ukazne vrstice --optionspath

Lahko imate več konfiguracij in se odločite, katero uporabiti pri zagonu QGIS s to možnostjo. Glej Opcije , da potrdite, kam operacijski sistem shrani nastavitvene datoteke. Trenutno datoteke ni mogoče določiti za zapisovanje nastavitev, zato lahko ustvarite kopijo izvirne nastavitvene datoteke in jo preimenujete. Možnost določa pot do imenika z nastavitvami. Na primer, za uporabo /path/to/config/QGIS/QGIS2.ini nastavitvena datoteka, uporabite možnost:

Možnost ukazne vrstice --configpath

Ta možnost je podobna zgornji, vendar poleg tega preglasi privzeto pot za konfiguracijo uporabnika (

/.qgis2 ) in sile QSettings za uporabo tega imenika. To uporabnikom omogoča, da na primer na bliskovni pogon prenesejo namestitev QGIS skupaj z vsemi vtičniki in nastavitvami.

Možnost ukazne vrstice --authdbdirectory

Tudi ta možnost je podobna zgornji, vendar določite pot do imenika, v katerem bo shranjena baza podatkov za preverjanje pristnosti.

Možnost ukazne vrstice --Koda

To možnost lahko uporabite za zagon dane datoteke python neposredno po zagonu QGIS.

Na primer, ko imate poimenovano datoteko python load_alaska.py z naslednjo vsebino:

Ob predpostavki, da ste v imeniku, kjer je datoteka load_alaska.py se nahaja, lahko zaženete QGIS, naložite rastrsko datoteko landcover.img in sloju damo ime & # 8216Alaska & # 8217 z naslednjim ukazom: qgis --code load_alaska.py

Možnosti ukazne vrstice --dxf- *

Te možnosti lahko uporabite za izvoz projekta QGIS v datoteko DXF. Na voljo je več možnosti:

  • & # 8211dxf-export: ime datoteke DXF, v katero želite izvoziti sloje
  • & # 8211dxf-obseg: obseg končne datoteke DXF
  • & # 8211dxf-symbollogy-mode: tukaj je mogoče uporabiti več vrednosti: nobena (brez simbologije), sloj simbolov (simbologija sloja simbola), značilnost (simbologija značilnosti)
  • & # 8211dxf-scale-deno: imenovalec lestvice simbologije
  • & # 8211dxf-kodiranje: kodiranje datoteke
  • & # 8211dxf-prednastavljena: izberite prednastavitev vidnosti. Te prednastavitve so definirane v drevesu sloja, glejte Plošča slojev.

Učna pot: PyQGIS: osvojite geoprostorski svet

Lahko ste odličen kipar, vendar bi brez ustreznega orodja težko delali. Podobno, tudi če ste zelo dobri v programiranju, je gradnja aplikacije GIS povsem drugačna igra z žogo! Najboljše orodje, ki ga lahko uporabite pri izdelavi GIS aplikacij, je QGIS. QGIS je samostojni geografski informacijski sistem. Poenostavlja postopek gradnje kompleksnih geoprostorskih aplikacij. Vsebuje orodja, ki zmanjšajo čas in trud, ki ga porabite za običajno aplikacijo. Če želite v kratkem času ustvariti zapletene geoprostorske aplikacije, potem je ta učna pot prava pot.
Packtove video učne poti so vrsta posameznih video izdelkov, sestavljenih na logičen in postopen način, tako da vsak video gradi na veščinah, pridobljenih v videu pred njim.
Glavni cilj te učne poti je, da vas oblikuje v strokovnega razvijalca GIS aplikacij.
V PyQGIS: osvojite geoprostorski svet s QGIS boste izvedeli, kako uporabljati sistem QGIS s posebnim poudarkom na knjižnici PyQGIS.
Preden se začnemo učiti, opozorimo na "načrt poti".
Začne se z razumevanjem sistema QGIS, konzole Python in knjižnice PyQGIS. Nato nadaljujemo z učenjem, kako ustvariti vtičnike QGIS in jih uporabiti v zunanjih aplikacijah. Nato se poglobimo v QGIS Python API in se osredotočimo na to, kako lahko to knjižnico uporabimo za prikaz informacij na zemljevidu. Nato pogledamo, kako lahko zunanje aplikacije, ki uporabljajo knjižnico PyQGIS, uporabniku omogočijo izbiro in urejanje geoprostorskih funkcij. Pridobljeno znanje nadaljujemo z uporabo naprednega sistema kartiranja na ključ.
Nato bomo poskušali ustvariti, urediti in optimizirati vektorski sloj za hitrejše poizvedbe, znova projicirati vektorski sloj, zmanjšati število točk v vektorski plasti, ne da bi pri tem izgubili kritične podatke, in pretvoriti rastro v vektor. Po tem boste delali z recepti, ki vam bodo pomagali pri sestavljanju statičnih zemljevidov, ustvarjanju zelo prilagojenih zemljevidov in dodajanju posebnih oznak in pripisov. Poleg tega bomo delili tudi nekaj nasvetov in trikov, ki temeljijo na različnih vidikih QGIS.
Do konca te učne poti boste obvladali orodje QGIS in se boste lahko z lahkoto sestavili zapletene aplikacije.


Razred: QgsMapSettings¶

Razred QgsMapSettings vsebuje konfiguracijo za upodabljanje zemljevida. Samo upodabljanje opravijo podrazredi QgsMapRendererJob.

Če želite nastaviti primerek QgsMapSettings, morate nastaviti vsaj nekaj članov: obseg, velikost izhoda in sloje.

QgsMapSettings in QgsMapRendererJob (+ podrazredi) naj bi nadomestili razred QgsMapRenderer, ki je obstajal pred QGIS 2.4. Prednost novih razredov je v tem, da ločijo nastavitve od upodabljanja in zagotavljajo asinhroni API za upodabljanje zemljevidov.

Novo v različici 2.4: Metode

Barva ozadja Pridobite barvo ozadja zemljevida
customRenderFlags Pridobite zastavice za upodabljanje po meri.
destinationCrs vrne CRS ciljnega referenčnega koordinatnega sistema
elipsoid Vrne kratico elipsoida.
expressionContext Pridobi kontekst izraza.
obseg Vrnite geografske koordinate pravokotnika, ki naj bo upodobljen.
zastave Vrne kombinacijo zastavic, uporabljenih za upodabljanje
fullExtent vrne trenutni obseg nabora slojev
hasValidSettings Preverite, ali so nastavitve zemljevida veljavne in jih lahko uporabite za upodabljanje
labelingEngineSettings Vrne globalno konfiguracijo mehanizma za označevanje
layerExtentToOutputExtent pretvori omejevalno polje iz sloja CRS v izhod CRS
layerIds Pridobi seznam ID-jev slojev za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)
layerStyleOverrides Pridobite zemljevid preglasitev sloga sloja zemljevida (ključ: ID sloja, vrednost: ime sloga), kjer je treba namesto trenutnega uporabiti drug slog
layerToMapCoordinates pretvori koordinate točke iz CRS v plast v izhodni CRS
layerToMapUnits Izračuna ocenjeno pretvorbeni faktor med plastjo in enotami zemljevida: layerUnits * layerToMapUnits = mapUnits
layerTransform Vrni pretvorbo koordinat iz CRS v plast v ciljni CRS
plasti Pridobi seznam slojev za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)
faktor povečave Vrnite faktor povečave.
mapToLayerCoordinates pretvori koordinate točke iz izhodnega CRS v CRS sloja
mapToPixel
mapUnits Pridobite enote zemljepisnih koordinat zemljevida - uporabljajo se za izračun lestvice
mapUnitsPerPixel Vrnite razdaljo v geografskih koordinatah, ki je enaka eni slikovni piki na zemljevidu
outputDpi Povratni DPI, uporabljen za pretvorbo med enotami iz resničnega sveta (npr.
outputExtentToLayerExtent pretvori omejevalno polje iz izhodnega CRS v CRS sloja
outputImageFormat oblika notranjega QImage, privzeti QImage.
outputSize Vrnite velikost nastale slike zemljevida
pathResolver Vrne razreševalnik poti za pretvorbo med relativno in absolutno potjo med operacijami upodabljanja, npr.
readXml serializacija * /
rotacija Vrne vrtenje nastale slike zemljevida v stopinjah v smeri urnega kazalca.
lestvica Vrne izračunano lestvico zemljevida.
segmentationTolerance Pridobi toleranco segmentacije, ki se uporablja pri upodabljanju ukrivljenih geometrij
segmentationToleranceType Pridobi vrsto tolerance segmentacije (največji kot ali največja razlika med krivuljo in približkom)
selectionColor Pridobite barvo, ki se uporablja za risanje izbranih vektorskih elementov
setBackgroundColor Nastavite barvo ozadja zemljevida
setCustomRenderFlags Nastavi zastavice upodabljanja po meri.
setDestinationCrs nastavi ciljni koordinatni referenčni sistem
setEllipsoid Elipsoid nastavi s kratico.
setExpressionContext Nastavi kontekst izraza.
setExtent Nastavite koordinate pravokotnika, ki naj bo upodobljen.
setFlag Omogočite ali onemogočite določeno zastavo (druge zastavice ne vplivajo)
setFlags Nastavite kombinacijo zastavic, ki bodo uporabljene za upodabljanje
setLabelingEngineSettings Nastavi globalno konfiguracijo mehanizma za označevanje
setLayerStyleOverrides Nastavite zemljevid preglasitev sloga sloja zemljevida (ključ: ID sloja, vrednost: ime sloga), kjer naj bo namesto trenutnega uporabljen drug slog
setLayers Nastavite seznam slojev za upodabljanje zemljevida.
setMagnificationFactor Nastavite faktor povečave.
setOutputDpi Nastavite DPI, ki se uporablja za pretvorbo med enotami iz resničnega sveta (npr.
setOutputImageFormat nastavi format notranje QImage
setOutputSize Nastavite velikost nastale slike zemljevida
setPathResolver Nastavi razreševalnik poti za pretvorbo med relativno in absolutno potjo med operacijami upodabljanja, npr.
setRotation Nastavi vrtenje nastale slike zemljevida v stopinjah v smeri urnega kazalca.
setSegmentationTolerance Nastavi toleranco segmentacije, ki se uporablja pri upodabljanju ukrivljenih geometrij
setSegmentationToleranceType Nastavi vrsto tolerance segmentacije (največji kot ali največja razlika med krivuljo in približkom)
setSelectionColor Nastavite barvo, ki se uporablja za risanje izbranih vektorskih elementov
setTransformContext Nastavi kontekst pretvorbe koordinat, ki hrani različne informacije o tem, katere transformacije referenčne točke je treba uporabiti pri pretvorbi točk iz izvornega v ciljni referenčni sistem koordinat.
testFlag Preverite, ali je določena zastava omogočena
transformContext Vrne kontekst pretvorbe koordinat, ki hrani različne informacije o tem, katere pretvorbe referenčne točke je treba uporabiti pri pretvorbi točk iz izvornega v ciljni referenčni sistem koordinat.
updateDerived
visibleExtent Vrni dejanski obseg, izpeljan iz zahtevanega obsega, ki upošteva velikost izhodne slike
visiblePolygon Vrnite vidno območje kot mnogokotnik (lahko ga zasukate)
writeXml

QgsMapSettings.Flags (Union [QgsMapSettings.Flags, QgsMapSettings.Flag]) QgsMapSettings.Flags (QgsMapSettings.Flags)

ForceVectorOutput = 4¶ RenderMapTile = 256¶ RenderPartialOutput = 512¶ RenderPreviewJob = 1024Uporabite AdvancedEffects = 8¶ UseRenderingOptimization = 32¶ Barva ozadja ( sebe ) & # x2192 QColor¶

Pridobite barvo ozadja zemljevida

customRenderFlags ( sebe ) & # x2192 str¶

Pridobite zastavice za upodabljanje po meri. Plasti bi jih lahko počastili, da bi spremenili njihovo upodabljanje.

Vrne:nizi zastav po meri, ločeni z ''

vrne CRS ciljnega referenčnega koordinatnega sistema

Vrne kratico elipsoida. Izračuni bodo elipsoid uporabili le, če je nastavljen veljaven elipsoid.

Pridobi kontekst izraza. Ta kontekst je treba uporabiti za vso oceno izraza, povezano s temi nastavitvami zemljevida.

Vrnite geografske koordinate pravokotnika, ki ga je treba upodobiti. Dejanski vidni obseg, uporabljen za upodabljanje, se lahko nekoliko razlikuje, saj se dani obseg lahko razširi, da bo ustrezal razmerju stranic velikosti izhoda. Uporabite visibleExtent (), da dobite nastali obseg.

zastave ( sebe ) & # x2192 QgsMapSettings.Flags¶

Vrne kombinacijo zastavic, uporabljenih za upodabljanje

fullExtent ( sebe ) & # x2192 QgsRectangle¶

vrne trenutni obseg nabora slojev

hasValidSettings ( sebe ) & # x2192 bool¶

Preverite, ali so nastavitve zemljevida veljavne in jih lahko uporabite za upodabljanje

labelingEngineSettings ( sebe ) & # x2192 QgsLabelingEngineSettings¶

Vrne globalno konfiguracijo mehanizma za označevanje

pretvori omejevalno polje iz sloja CRS v izhod CRS

Vrne:omejevalno polje (poravnani pravokotnik), ki vsebuje transformirani obseg
layerIds ( sebe ) & # x2192 Seznam [str] ¶

Pridobite seznam ID-jev plasti za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)

layerStyleOverrides ( sebe ) & # x2192 Dict [str, str] ¶

Pridobite zemljevid preglasitev sloga sloja zemljevida (ključ: ID sloja, vrednost: ime sloga), kjer je treba namesto trenutnega uporabiti drug slog

pretvori koordinate točke iz CRS v plast v izhodni CRS

Vrne:transformirana točka
layerToMapCoordinates (self, layer: QgsMapLayer, rect: QgsRectangle) - & gt QgsRectangle pretvori pravokotnik iz CRS-ja sloja v izhodni CRS

Vrne:preoblikovani pravokotnik
layerToMapUnits ( sebe, plast: QgsMapLayer, referenceExtent: QgsRectangle = QgsRectangle () ) & # x2192 float¶

Izračuna ocenjeno pretvorbeni faktor med plastjo in enotami zemljevida: layerUnits * layerToMapUnits = mapUnits

  • plast - Plast
  • referenceExtent - Referenčni obseg, na podlagi katerega se izvede izračun. Če ni določeno, se uporabi obseg sloja

Vrni pretvorbo koordinat iz CRS-ja sloja v ciljni CRS

Parametri:plast
Vrne:pretvorba - morda neveljavna, če pretvorba ni potrebna
plasti ( sebe ) & # x2192 Seznam [QgsMapLayer] ¶

Pridobi seznam slojev za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)

faktor povečave ( sebe ) & # x2192 float¶

Vrnite faktor povečave.

pretvori koordinate točke iz izhodnega CRS v CRS sloja

Vrne:transformirana točka
mapToLayerCoordinate (self, plast: QgsMapLayer, rect: QgsRectangle) - & gt QgsRectangle pretvori pravokotnik iz izhodnega CRS v CRS sloja

Vrne:preoblikovani pravokotnik
mapToPixel ( sebe ) & # x2192 QgsMapToPixel¶ mapUnits ( sebe ) & # x2192 QgsUnitTypes.DistanceUnit¶

Pridobite enote zemljepisnih koordinat zemljevida - uporabljajo se za izračun lestvice

mapUnitsPerPixel ( sebe ) & # x2192 float¶

Vrnite razdaljo v geografskih koordinatah, ki je enaka eni slikovni piki na zemljevidu

Vrni DPI, uporabljen za pretvorbo med enotami iz resničnega sveta (npr. Mm) in slikovnimi pikami. Privzeta vrednost je 96

outputExtentToLayerExtent ( sebe, plast: QgsMapLayer, obseg: QgsRectangle ) & # x2192 QgsRectangle¶

pretvori omejevalno polje iz izhodnega CRS v CRS sloja

Vrne:omejevalno polje (poravnani pravokotnik), ki vsebuje transformirani obseg
outputImageFormat ( sebe ) & # x2192 QImage.Format¶

oblika notranjega QImage, privzeti QImage.Format_ARGB32_Premultipted

Vrnite velikost nastale slike zemljevida

pathResolver ( sebe ) & # x2192 QgsPathResolver¶

Vrne razreševalnik poti za pretvorbo med relativno in absolutno potjo med operacijami upodabljanja, npr. za reševanje relativnih poti simbolov.

Vrne vrtenje nastale slike zemljevida v stopinjah v smeri urnega kazalca.

Vrne izračunano lestvico zemljevida. Vrednost lestvice označuje imenovalec lestvice, npr. 1000,0 za zemljevid 1: 1000.

segmentationTolerance ( sebe ) & # x2192 float¶

Pridobi toleranco segmentacije, ki se uporablja pri upodabljanju ukrivljenih geometrij

segmentationToleranceType ( sebe ) & # x2192 QgsAbstractGeometry.SegmentationToleranceType¶

Pridobi tip tolerance segmentacije (največji kot ali največja razlika med krivuljo in približkom)

selectionColor ( sebe ) & # x2192 QColor¶

Pridobite barvo, ki se uporablja za risanje izbranih vektorskih elementov

setBackgroundColor ( self, barva: Union [QColor, Qt.GlobalColor, QGradient] ) ¶

Nastavite barvo ozadja zemljevida

setCustomRenderFlags ( sebe, customRenderFlags: str ) ¶

Nastavi zastavice upodabljanja po meri. Plasti bi jih lahko počastili, da bi spremenili njihovo upodabljanje.

Parametri:customRenderFlags - nizi zastav po meri, ločeni z ''

nastavi ciljni koordinatni referenčni sistem

setEllipsoid ( sebe, elipsoid: str ) & # x2192 bool¶

Elipsoid nastavi s kratico. Znane elipsoidne kratice je mogoče pridobiti s pomočjo QgsEllipsoidUtils.acronyms () Izračuni bodo elipsoid uporabili le, če je nastavljen veljaven elipsoid.

Vrne:true, če je bil elipsoid uspešno nastavljen

Nastavi kontekst izraza. Ta kontekst se uporablja za vse ocene izrazov, povezane s temi nastavitvami zemljevida.

Nastavite koordinate pravokotnika, ki naj bo upodobljen. Dejanski vidni obseg, uporabljen za upodabljanje, se lahko nekoliko razlikuje, saj se dani obseg lahko razširi, da bo ustrezal razmerju stranic velikosti izhoda. Uporabite visibleExtent (), da dobite nastali obseg.

setFlag ( sebe, zastava: QgsMapSettings.Flag, on: bool = True ) ¶

Omogočite ali onemogočite določeno zastavo (druge zastavice ne vplivajo)

setFlags ( self, zastave: Union [QgsMapSettings.Flags, QgsMapSettings.Flag] ) ¶

Nastavite kombinacijo zastavic, ki bodo uporabljene za upodabljanje

setLabelingEngineSettings ( sebe, nastavitve: QgsLabelingEngineSettings ) ¶

Nastavi globalno konfiguracijo mehanizma za označevanje

Nastavite razveljavitve sloga sloja zemljevida zemljevida (ključ: ID sloja, vrednost: ime sloga), kjer naj bo namesto trenutnega uporabljen drug slog

Nastavite seznam slojev za upodabljanje zemljevida. Sloji morajo biti registrirani v QgsProject. Plasti se shranijo v obratnem vrstnem redu, kako so upodobljene (sloj z indeksom 0 bo na vrhu)

Vse prostorske plasti bodo samodejno odstranjene s seznama (ker jih ni mogoče upodobiti!).

Nastavite faktor povečave.

Parametri:dejavnik - faktor povečave

Nastavite DPI, ki se uporablja za pretvorbo med enotami iz resničnega sveta (npr. Mm) in slikovnimi pikami

setOutputImageFormat ( sebe, format: QImage.Format ) ¶

nastavi format notranje QImage

setOutputSize ( sebe, velikost: QSize ) ¶

Nastavite velikost nastale slike zemljevida

setPathResolver ( sebe, razreševalec: QgsPathResolver ) ¶

Nastavi razreševalnik poti za pretvorbo med relativno in absolutno potjo med operacijami upodabljanja, npr. za reševanje relativnih poti simbolov.

Nastavi vrtenje nastale slike zemljevida v stopinjah v smeri urnega kazalca.

Nastavi toleranco segmentacije, ki se uporablja pri upodabljanju ukrivljenih geometrij

Parametri:strpnost - toleranca segmentacije *
setSegmentationToleranceType ( sebe, type: QgsAbstractGeometry.SegmentationToleranceType ) ¶

Nastavi vrsto tolerance segmentacije (največji kot ali največja razlika med krivuljo in približkom)

Parametri:tip - ime tipa tolerance segmentacije *
setSelectionColor ( self, barva: Union [QColor, Qt.GlobalColor, QGradient] ) ¶

Nastavite barvo, ki se uporablja za risanje izbranih vektorskih elementov

setTransformContext ( sebe, kontekst: QgsCoordinateTransformContext ) ¶

Nastavi kontekst pretvorbe koordinat, ki hrani različne informacije o tem, katere transformacije referenčne točke je treba uporabiti pri pretvorbi točk iz izvornega v ciljni referenčni sistem koordinat.

Preverite, ali je določena zastava omogočena

transformContext ( sebe ) & # x2192 QgsCoordinateTransformContext¶

Vrne kontekst pretvorbe koordinat, ki hrani različne informacije o tem, katere pretvorbe referenčne točke je treba uporabiti pri pretvorbi točk iz izvornega v ciljni referenčni sistem koordinat.

Vrni dejanski obseg, izpeljan iz zahtevanega obsega, ki upošteva velikost izhodne slike


Prostorski spoj¶

Prostorsko združevanje je še en klasičen problem GIS. Pridobivanje atributov iz ene plasti in njihov prenos v drugo plast na podlagi njihovega prostorskega razmerja je nekaj, kar boste najverjetneje morali redno početi.

V prejšnjem poglavju smo se naučili, kako nastopati točka v poizvedbi Poligon. Zdaj lahko uporabljamo isto logiko za ravnanje prostorski spoj med dvema plastema glede na njihov prostorski odnos. Atribute poligonskega sloja bi lahko na primer združili v sloj točke, kjer bi vsaka točka dobila atribute poligona, ki vsebuje točko.

Na srečo je prostorsko združevanje že izvedeno v Geopandasu, zato nam za to ni treba ustvariti lastne funkcije. Obstajajo tri možne vrste združevanja, ki jih je mogoče uporabiti v prostorskem združevanju in jih določimo z op-parametrom v funkciji gpd.sjoin ():

Se sliši znano? Ja, o vseh teh prostorskih odnosih smo govorili v lekciji Point in Polygon, zato bi morali vedeti, kako delujejo.

Poleg tega bodite pozorni na različne možnosti za vrsto spajanja s pomočjo parametra kako "levo", "desno" in "notranje". Več o teh možnostih si lahko preberete v geopandas sjoin dokumentaciji in vodnikih za pande za spajanje, združevanje in združevanje

Izvedimo prostorski spoj med tema dvema plastema:

Naslovi: geokodirana naslovna točka (to obliko datoteke smo ustvarili v vadnici za geokodiranje)

Prebivalna mreža: Mrežni poligon 250m x 250m, ki vsebuje podatke o prebivalstvu iz helsinške regije.

Mrežo prebivalstva nabora podatkov ustvari Uprava za okoljske storitve regije Helsinki (HSY) (glejte to stran za dostop do podatkov iz različnih let).


Pot, ki povezuje določene točke v nevronskem grafu

Razmislite o posebni vrsti grafa, kjer je vozlišča mogoče razdeliti na $ n $ sloje. Robovi so samo med zaporednimi plastmi in nobeni robovi med vozlišči katere koli dane plasti. Tako so na primer vozlišča v plasti-1 povezana samo z vozlišči v plasti-2, vozlišča v plasti-2 so povezana samo s tistimi v plasti-3 itd. Takemu grafu pravim & quotnevralni graf & quot, saj so nevronske mreže videti takole. Upoštevajte tudi, da so taki grafi dvostranski, saj so vsa vozlišča lahko obarvana z dvema barvama tako, da noben rob nima enake barve na obeh koncih.

Dobil sem niz vozlišč, od katerih vsako pripada različnim slojem na grafu. Najti moram katero koli pot (predstavljeno kot niz vozlišč), ki se začne na plasti $ 1 $, konča na plasti $ n $ in nujno gre skozi vsa ta vozlišča v nizu. Če taka pot ne obstaja, bi moral algoritem vrniti prazno polje. Kakšne ideje za to učinkovito?

Graf je lahko predstavljen v kateri koli predstavitvi, vendar je prednostni seznam sosednosti.


Razred: QgsMapSettings¶

Razred QgsMapSettings vsebuje konfiguracijo za upodabljanje zemljevida. Samo upodabljanje opravijo podrazredi QgsMapRendererJob.

Če želite nastaviti primerek QgsMapSettings, morate nastaviti vsaj nekaj članov: obseg, velikost izhoda in sloje.

QgsMapSettings in QgsMapRendererJob (+ podrazredi) naj bi nadomestili razred QgsMapRenderer, ki je obstajal pred QGIS 2.4. Prednost novih razredov je v tem, da ločijo nastavitve od upodabljanja in zagotavljajo asinhroni API za upodabljanje zemljevidov.

Novo v različici 2.4: Metode

Barva ozadja Pridobi barvo ozadja zemljevida
customRenderFlags Pridobi zastavice upodabljanja po meri.
destinationCrs vrne CRS ciljnega referenčnega koordinatnega sistema
elipsoid Vrne kratico elipsoida.
expressionContext Pridobi kontekst izraza.
obseg Vrne geografske koordinate pravokotnika, ki ga je treba upodobiti.
zastave Vrne kombinacijo zastavic, uporabljenih za upodabljanje
fullExtent vrne trenutni obseg nabora slojev
hasValidSettings Preverite, ali so nastavitve zemljevida veljavne in jih lahko uporabite za upodabljanje
labelingEngineSettings Vrne globalno konfiguracijo mehanizma za označevanje
layerExtentToOutputExtent pretvori omejevalno polje iz sloja CRS v izhod CRS
layerIds Pridobi seznam ID-jev plasti za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)
layerStyleOverrides Pridobi zemljevid preglasitev sloga sloja zemljevida (ključ: ID sloja, vrednost: ime sloga), kjer je treba namesto trenutnega uporabiti drug slog
layerToMapCoordinates pretvori koordinate točke iz CRS-ja sloja v izhodni CRS
layerToMapUnits Izračuna ocenjeno pretvorbeni faktor med plastjo in enotami zemljevida: layerUnits * layerToMapUnits = mapUnits
layerTransform Vrne pretvorbo koordinat iz CRS v plast v ciljni CRS
plasti Pridobi seznam slojev za upodabljanje zemlje Sloji se shranijo v obratnem vrstnem redu, kako so upodobljeni (sloj z indeksom 0 bo na vrhu)
faktor povečave Vrne faktor povečave.
mapToLayerCoordinates pretvori koordinate točke iz izhodnega CRS v CRS sloja
mapToPixel
mapUnits Pridobi enote zemljepisnih koordinat zemljevida - uporablja se za izračun lestvice
mapUnitsPerPixel Returns the distance in geographical coordinates that equals to one pixel in the map
outputDpi Returns DPI used for conversion between real world units (e.g.
outputExtentToLayerExtent transform bounding box from output CRS to layer’s CRS
outputImageFormat format of internal QImage, default QImage.Format_ARGB32_Premultiplied
outputSize Returns the size of the resulting map image
pathResolver Returns the path resolver for conversion between relative and absolute paths during rendering operations, e.g.
readXml serialization * /
rotacija Returns the rotation of the resulting map image, in degrees clockwise.
scale Returns the calculated map scale.
segmentationTolerance Gets the segmentation tolerance applied when rendering curved geometries
segmentationToleranceType Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation)
selectionColor Gets color that is used for drawing of selected vector features
setBackgroundColor Sets the background color of the map
setCustomRenderFlags Sets the custom rendering flags.
setDestinationCrs sets destination coordinate reference system
setEllipsoid Sets the ellipsoid by its acronym.
setExpressionContext Sets the expression context.
setExtent Set coordinates of the rectangle which should be rendered.
setFlag Enable or disable a particular flag (other flags are not affected)
setFlags Sets combination of flags that will be used for rendering
setLabelingEngineSettings Sets global configuration of the labeling engine
setLayerStyleOverrides Set map of map layer style overrides (key: layer ID, value: style name) where a different style should be used instead of the current one
setLayers Set list of layers for map rendering.
setMagnificationFactor Set the magnification factor.
setOutputDpi Sets DPI used for conversion between real world units (e.g.
setOutputImageFormat sets format of internal QImage
setOutputSize Sets the size of the resulting map image
setPathResolver Sets the path resolver for conversion between relative and absolute paths during rendering operations, e.g.
setRotation Sets the rotation of the resulting map image, in degrees clockwise.
setSegmentationTolerance Sets the segmentation tolerance applied when rendering curved geometries
setSegmentationToleranceType Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation)
setSelectionColor Sets color that is used for drawing of selected vector features
setTransformContext Sets the coordinate transform context , which stores various information regarding which datum transforms should be used when transforming points from a source to destination coordinate reference system.
testFlag Check whether a particular flag is enabled
transformContext Returns the coordinate transform context, which stores various information regarding which datum transforms should be used when transforming points from a source to destination coordinate reference system.
updateDerived
visibleExtent Returns the actual extent derived from requested extent that takes takes output image size into account
visiblePolygon Returns the visible area as a polygon (may be rotated)
writeXml

QgsMapSettings.Flags(Union[QgsMapSettings.Flags, QgsMapSettings.Flag]) QgsMapSettings.Flags(QgsMapSettings.Flags)

ForceVectorOutput = 4¶ RenderMapTile = 256¶ RenderPartialOutput = 512¶ RenderPreviewJob = 1024¶ UseAdvancedEffects = 8¶ UseRenderingOptimization = 32¶ backgroundColor ( sebe ) → QColor¶

Gets the background color of the map

customRenderFlags ( sebe ) → str¶

Gets custom rendering flags. Layers might honour these to alter their rendering.

Returns:custom flags strings, separated by ‘’

returns CRS of destination coordinate reference system

Returns ellipsoid’s acronym. Calculations will only use the ellipsoid if a valid ellipsoid has been set.

Gets the expression context. This context should be used for all expression evaluation associated with this map settings.

Returns geographical coordinates of the rectangle that should be rendered. The actual visible extent used for rendering could be slightly different since the given extent may be expanded in order to fit the aspect ratio of output size. Use visibleExtent() to get the resulting extent.

flags ( sebe ) → QgsMapSettings.Flags¶

Returns combination of flags used for rendering

fullExtent ( sebe ) → QgsRectangle¶

returns current extent of layer set

hasValidSettings ( sebe ) → bool¶

Check whether the map settings are valid and can be used for rendering

labelingEngineSettings ( sebe ) → QgsLabelingEngineSettings¶

Returns global configuration of the labeling engine

transform bounding box from layer’s CRS to output CRS

Returns:a bounding box (aligned rectangle) containing the transformed extent
layerIds ( sebe ) → List[str]¶

Gets list of layer IDs for map rendering The layers are stored in the reverse order of how they are rendered (layer with index 0 will be on top)

layerStyleOverrides ( sebe ) → Dict[str, str]¶

Gets map of map layer style overrides (key: layer ID, value: style name) where a different style should be used instead of the current one

transform point coordinates from layer’s CRS to output CRS

Returns:the transformed point

layerToMapCoordinates(self, layer: QgsMapLayer, rect: QgsRectangle) -> QgsRectangle transform rectangle from layer’s CRS to output CRS

Returns:the transformed rectangle
layerToMapUnits ( sebe, layer: QgsMapLayer, referenceExtent: QgsRectangle = QgsRectangle() ) → float¶

Computes an ocenjeno conversion factor between layer and map units: layerUnits * layerToMapUnits = mapUnits

  • plast – The layer
  • referenceExtent – A reference extent based on which to perform the computation. If not specified, the layer extent is used

Returns the coordinate transform from layer’s CRS to destination CRS

Returns:transform - may be invalid if the transform is not needed
layers ( sebe ) → List[QgsMapLayer]¶

Gets list of layers for map rendering The layers are stored in the reverse order of how they are rendered (layer with index 0 will be on top)

magnificationFactor ( sebe ) → float¶

Returns the magnification factor.

transform point coordinates from output CRS to layer’s CRS

Returns:the transformed point

mapToLayerCoordinates(self, layer: QgsMapLayer, rect: QgsRectangle) -> QgsRectangle transform rectangle from output CRS to layer’s CRS

Returns:the transformed rectangle
mapToPixel ( sebe ) → QgsMapToPixel¶ mapUnits ( sebe ) → QgsUnitTypes.DistanceUnit¶

Gets units of map’s geographical coordinates - used for scale calculation

mapUnitsPerPixel ( sebe ) → float¶

Returns the distance in geographical coordinates that equals to one pixel in the map

Returns DPI used for conversion between real world units (e.g. mm) and pixels Default value is 96

outputExtentToLayerExtent ( sebe, layer: QgsMapLayer, extent: QgsRectangle ) → QgsRectangle¶

transform bounding box from output CRS to layer’s CRS

Returns:a bounding box (aligned rectangle) containing the transformed extent
outputImageFormat ( sebe ) → QImage.Format¶

format of internal QImage, default QImage.Format_ARGB32_Premultiplied

Returns the size of the resulting map image

pathResolver ( sebe ) → QgsPathResolver¶

Returns the path resolver for conversion between relative and absolute paths during rendering operations, e.g. for resolving relative symbol paths.

Returns the rotation of the resulting map image, in degrees clockwise.

Returns the calculated map scale. The scale value indicates the scale denominator, e.g. 1000.0 for a 1:1000 map.

segmentationTolerance ( sebe ) → float¶

Gets the segmentation tolerance applied when rendering curved geometries

segmentationToleranceType ( sebe ) → QgsAbstractGeometry.SegmentationToleranceType¶

Gets segmentation tolerance type (maximum angle or maximum difference between curve and approximation)

selectionColor ( sebe ) → QColor¶

Gets color that is used for drawing of selected vector features

setBackgroundColor ( self, color: Union[QColor, Qt.GlobalColor, QGradient] ) ¶

Sets the background color of the map

setCustomRenderFlags ( sebe, customRenderFlags: str ) ¶

Sets the custom rendering flags. Layers might honour these to alter their rendering.

Parameters:customRenderFlags – custom flags strings, separated by ‘’

sets destination coordinate reference system

setEllipsoid ( sebe, ellipsoid: str ) → bool¶

Sets the ellipsoid by its acronym. Known ellipsoid acronyms can be retrieved using QgsEllipsoidUtils.acronyms() Calculations will only use the ellipsoid if a valid ellipsoid has been set.

Returns:true if ellipsoid was successfully set

Sets the expression context. This context is used for all expression evaluation associated with this map settings.

Set coordinates of the rectangle which should be rendered. The actual visible extent used for rendering could be slightly different since the given extent may be expanded in order to fit the aspect ratio of output size. Use visibleExtent() to get the resulting extent.

setFlag ( sebe, flag: QgsMapSettings.Flag, on: bool = True ) ¶

Enable or disable a particular flag (other flags are not affected)

setFlags ( self, flags: Union[QgsMapSettings.Flags, QgsMapSettings.Flag] ) ¶

Sets combination of flags that will be used for rendering

setLabelingEngineSettings ( sebe, settings: QgsLabelingEngineSettings ) ¶

Sets global configuration of the labeling engine

Set map of map layer style overrides (key: layer ID, value: style name) where a different style should be used instead of the current one

Set list of layers for map rendering. The layers must be registered in QgsProject . The layers are stored in the reverse order of how they are rendered (layer with index 0 will be on top)

Any non-spatial layers will be automatically stripped from the list (since they cannot be rendered!).

Set the magnification factor.

Parameters:factor – the factor of magnification

Sets DPI used for conversion between real world units (e.g. mm) and pixels

setOutputImageFormat ( sebe, format: QImage.Format ) ¶

sets format of internal QImage

setOutputSize ( sebe, size: QSize ) ¶

Sets the size of the resulting map image

setPathResolver ( sebe, resolver: QgsPathResolver ) ¶

Sets the path resolver for conversion between relative and absolute paths during rendering operations, e.g. for resolving relative symbol paths.

Sets the rotation of the resulting map image, in degrees clockwise.

Sets the segmentation tolerance applied when rendering curved geometries

Parameters:tolerance – the segmentation tolerance*
setSegmentationToleranceType ( sebe, type: QgsAbstractGeometry.SegmentationToleranceType ) ¶

Sets segmentation tolerance type (maximum angle or maximum difference between curve and approximation)

Parameters:tip – the segmentation tolerance typename*
setSelectionColor ( self, color: Union[QColor, Qt.GlobalColor, QGradient] ) ¶

Sets color that is used for drawing of selected vector features

setTransformContext ( sebe, context: QgsCoordinateTransformContext ) ¶

Sets the coordinate transform context , which stores various information regarding which datum transforms should be used when transforming points from a source to destination coordinate reference system.

Check whether a particular flag is enabled

transformContext ( sebe ) → QgsCoordinateTransformContext¶

Returns the coordinate transform context, which stores various information regarding which datum transforms should be used when transforming points from a source to destination coordinate reference system.

Returns the actual extent derived from requested extent that takes takes output image size into account


Training & Test feature shape is different from number of columns in dataset

I am making a Sequential Neural Network for regression with 3 dense layers which will be trained on a simple dataset. But before I even get to that part of the code to execute the model I am getting a different shape of my features than columns in dataset. Columns of the dataset includes:

2)the other 20 columns are integers/floats

I have 21 features in my dataset. ValueError is telling me it is expecting 36 but there are only 21 When I check the shape using X.shape for my dataset it is telling me the shape is (98,36). My dataset has 98 rows x 21 columns. There are only 21 features in my dataset. How is it getting a shape of 36 ?

I am consequently receiving this error of course when I try to run my Keras model

Error ValueError: Input 0 of layer sequential_1 is incompatible with the layer: expected axis -1 of input shape to have value 21 but received input with shape (None, 36)


Getting layer by name in PyQGIS? - Geographic Information Systems

Fixes to common problems when migrating QGIS plugins from v2.18 to v3.x

Below is a list of fixes to common PyQGIS migration issues I collated whilst migrating a QGIS 2.18 plugin to QGIS 3.2 (and then to 3.4). I documented each error message and fix to make things easier if I came across the same issue again, and subsequently figured it may be of user to others who were migrating their plugins too.

Details of error messages are documented as sub-headings, with fixes and examples for each listed underneath. Where possible I've included links back to relevant documentation too.

Error messages are listed alphabetically, and as such are organised by error type ( AttributeError , NameError , TypeError ).

AttributeError: type object 'Qgis' has no attribute 'Line'

AttributeError: type object 'Qgis' has no attribute 'WKBPoint'

AttributeError: type object 'Qgis' has no attribute 'WKBPolygon'

To fix: replace Qgis.<Old Type> with QgsWkbTypes.<New Type>

AttributeError: type object 'QgsGeometry' has no attribute 'fromMultiPolyline'

To fix: replace .fromMultiPolyline([qgs_point_list]) with .fromMultiPolylineXY([qgs_pointXY_list])

AttributeError: type object 'QgsMessageBar' has no attribute 'INFO'

AttributeError: type object 'QgsMessageBar' has no attribute 'WARNING'

AttributeError: type object 'QgsMessageBar' has no attribute 'CRITICAL'

AttributeError: type object 'QgsMessageBar' has no attribute 'SUCCESS'

To fix: replace QgsMessageBar.<MessageLevel> with Qgis.<MessageLevel>

AttributeError: type object 'QgsSymbolLayerRegistry' has no attribute 'instance'

To fix: replace QgsSymbolLayerRegistry.instance() with QgsApplication.symbolLayerRegistry()

AttributeError: 'QgisInterface' object has no attribute 'legendInterface'

To fix: reference the layer (by id ) within the layerTreeRoot , and set visibility there.

AttributeError: 'QgsLayerTree' object has no attribute 'selectedLayers'

To fix: replace .legendInterface() with .layerTreeView()

AttributeError: type object 'QgsGeometry' has no attribute 'fromPoint'

To fix: replace .fromPoint() with .fromPointXY()

AttributeError: 'QgsGeometry' object has no attribute 'exportToWkt'

To fix: replace .exportToWkt() with .asWkt()

AttributeError: 'QgsPalLayerSettings' object has no attribute 'readFromLayer'

AttributeError: 'QgsVectorLayer' object has no attribute 'setDisplayField'

To fix: replace .setDisplayField(html) with .setMapTipTemplate(html)

AttributeError: 'QgsVectorLayer' object has no attribute 'setLayerTransparency'

To fix: replace .setLayerTransparancy(percentage) with .setOpacity(percentage / 100)

AttributeError: 'QgsVectorLayer' object has no attribute 'rendererV2'

To fix: replace .rendererV2().symbols() with .renderer().symbol() and access the symbol directly

AttributeError: 'QgsVectorLayer' object has no attribute 'setRendererV2'

To fix: replace .setRendererV2(renderer) with .setRenderer(renderer)

NameError: name 'QGis' is not defined

To fix: replace QGis.xxx with Qgis.xxx (note change in case from QG to Qg )

TypeError: QgsCoordinateTransform(): arguments did not match any overloaded call:

To fix: add QgsProject.instance() to QgsCoordinateTransform() call

TypeError: QgisInterface.newProject(): 'thePromptToSaveFlag' is not a valid keyword argument

To fix: replace thePromptToSaveFlag with promptToSaveFlag

TypeError: QgsProject.read(): arguments did not match any overloaded call:

To fix: remove QFileInfo and just pass string to QgsProject.read()

TypeError: QgsRectangle(): arguments did not match any overloaded call:

To fix: replace instances of QgsPoint with QgsPointXY

TypeError: QgsRubberBand.addPoint(): argument 1 has unexpected type 'QgsPoint'

To fix: replace instances of QgsPoint with QgsPointXY

If the message you are getting when trying to migrate your plugin is not on this page, you can refer to:

  • The QGIS API 'Backwards Incompatible Changes' (a.k.a. API Break) page
  • The QGIS 'Plugin migration to QGIS 3' page
  • GIS for Thought's useful walk-through on 'Updating A Plugin From QGIS 2 to QGIS 3'
  • Stack Exchange's essential 'Geographical Information Systems' Q&A site

I also found the First Aid QGIS plugin quite useful throughout the process, see:
First Aid's GitHub page and their blog post introducing it for more details.

Contributions to improve this document are welcome, whether in the form or corrections, changes, additional entries, or anything else you see fit. Please submit a pull request.

/>
common-qgis-2-to-3-plugin-fixes is licensed under a Creative Commons Attribution 4.0 International License.


Poglej si posnetek: 2019 - PyQGIS the comfortable way - tricks to efficiently work with Python and QGIS (September 2021).