Vairāk

IdentifyFeature () izmantošana, izmantojot PyQGIS?

IdentifyFeature () izmantošana, izmantojot PyQGIS?


Nodomā, lai Qgis (2.6.) Iezīmju kartes rīka identificēšanai būtu divi mainīgie (minētā slāņa ietvaros QgsVectorLayer un feature.id () minētajā slānī). Interesanti, vai objektu var atlasīt programmatiski (izmantojot PyQGIS), lai to iezīmētu mapCanvas ()?

Esmu sasniedzis “rakstnieku” bloku pēc sekojošā:

layerID, featureID = [i priekš i in layerAndFeatureIDs.split ("_")] layerRef = ftools_utils.getMapLayerByName (unicode (layerID)) infoTool = QgsMapToolIdentifyFeature (self.iface.mapCanvas (), layerRef) ...?

Darbojas bez kļūdām - taču cerīgi uzzināt, vai ir iespējams izsaukt noteiktu funkciju noteiktajā slānī. Vai nu izmantojot feature.id (), vai pat minētās funkcijas centroid kā QgsPoint atsauci.


Šī komanda varētu būt piemērota. Tas aktivizē attiecīgo rīku, bet vai pēc aktivizēšanas ir iespējams pēc tam programmatiski iezīmēt vai atlasīt informāciju?

self.iface.actionIdentify (). trigeris ()

Es domāju, vai alternatīva metode būtu iegūt šo funkciju jautājumos centroid. Tomēr, atvasinot šādu - un (velti?) Iekļaujot šo vietu simulētā klikšķa notikumā mapCanvas (); rezultāti nebija. Lai arī atgriezās “darba” druka ...

funkcijai layerRef.getFeatures (): ja feature.id ()! = int (featureID): nodot elif feature.id () == int (featureID): x, y = feature.geometry (). centroid (). asPoint () [0], feature.geometry (). centroid (). asPoint () [1] self.iface.setActiveLayer (layerRef) self.iface.actionIdentify (). trigger () virtualMouseClick = QtGui.QMouseEvent (QtCore). QEvent.MouseButtonPress, QtCore.QPoint (x, y),  QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier) ​​mēģiniet: self.iface.mapCanvas (). MousePressEvent (virtualMouseClick) print izņemot: drukāt “nedarbojas”

Pēc @ sigeal padoma es esmu devis iespēju īstenot dažas lietas, taču saskāros ar nelielu problēmu. Es pieņemu, ka apakšklases rīkam x, y koordinātas ir vajadzīgas kā pikseļi, nevis kartes koordinātu izcelsme. Tomēr QgsMapToPixel izmantošana atgriež “-inf” (negatīvās bezgalības) vērtības.

Kāda varētu būt sintakses kļūda, ko es daru, un vai es neesmu mērķēts darbībās pēc @ sigeal ieteikuma?

# ------- No galvenās klases ---------------------- ... funkcijai layerRef.getFeatures (): ja feature.id ()! = int (featureID): nodot elif feature.id () == int (featureID): point = feature.geometry (). centroid (). asPoint () x, y = point [0], point [1] deviceX, deviceY = QgsMapToPixel (). transformēt (float (x), float (y)) [0], QgsMapToPixel (). transform (float (x), float (y)) [1] drukas ierīceX, deviceY self.iface.setActiveLayer [layerRef] self.iface.actionIdentify (). trigeris () try: featureIdentifyTool (self.iface, layerRef, deviceX, deviceY) drukāt 'strādā', izņemot: drukāt 'nedarbojas' ... klases iezīmeIdentifyTool (QgsMapToolIdentifyFeature): geomIdentified = pyqtSignal ( objekts, objekts) def __init __ (self, iface, layer, x, y): QgsMapToolIdentify .__ init __ (self, iface.mapCanvas ()) self.canvasReleaseEvent (layer, x, y) def canvasReleaseEvent (self, layer, x, y) ): rezultāti = self.identify (x, y, self.ActiveLayer, [layer], self.VectorLayer) drukāšanas rezultāti, ja len (rezultāti)> 0: self.geomIdentified.emit (rezultāti [0]. mLayer, rezultāti [0 ] .mFeature)

Pielāgotā funkcijaDialog var darīt visu, kas jums nepieciešams. Es to plaši izmantoju savā spraudnī Telemetry Layer: http://southweb.co.nz/telemetrylayer. To var izsaukt ar slāni un funkciju vai reaģēt uz lietotāju klikšķiem. Tomēr ir dažas dīvainības.


Tikai mājiens: jūs varat apakšklasē QgsMapToolIdentifyFeature. Tādā veidā jūs varat ignorēt pielāgošanai nepieciešamās metodes:

klase YourIdentifyTool (QgsMapToolIdentifyFeature): geomIdentified = pyqtSignal (objekts, objekts) def __init __ (self, iface): # Vecāku konstruktors QgsMapToolIdentify .__ init __ (self, iface.mapCanvas ()) def canReleaseEvent (self.RealeaseEvent) (mouseEvent.x (), mouseEvent.y (), self.TopDownStopAtFirst, [self.arretLayer], self.VectorLayer) ja len (rezultāti)> 0: self.geomIdentified.emit (rezultāti [0]. mLayer, rezultāti [ 0] .mFeature)

Patiesībā šo tehniku ​​esmu izmantojis tikai, lai definētu pielāgotu identifikācijas rīku, kuru paredzēts izmantot interaktīvi. Lai to izdarītu, es savienoju toolButton noklikšķināto signālu ar metodi, kas tiek palaista, kad rīks tiek aktivizēts (atlasīts), un šajā metodē es savienoju rīka geomIdentified signālu ar metodi, kuru es vēlos palaist, kad tiek identificēts līdzeklis.

# toolButton noklikšķinātais signāla savienojuma rīksButton.clicked.connect (toolButtonSelect) # Metode palaist, kad toolButton ir aktivizēts def toolButtonSelect (self, pārbaudīts): # Ja pārbaudīts, vai toolButton ir pārbaudīts: self.featIdentTool = FeatureIdentifyTool (self.iface) self.featIdent self.featIdent .geomIdentified.connect (self.toolButtonAction) self.iface.mapCanvas (). setMapTool (self.featIdentTool) # Metode darbojas, ja slāņa funkciju identificē featIdentTool def toolButtonAction (self, layer, feature): # Dariet kaut ko ar identificētu funkcija if isinstance (layer, QgsVectorLayer) un isinstance (feature, QgsFeature): self.featIdentTool.doWhatEver (feature)

Tagad es nezinu, kā aktivizēt ģeomentificēto signālu un nosūtīt tam xy koordinātas ... Varbūt šī saite var jums palīdzēt: http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html


1 Atbilde 1

Ātrajam google pakalpojumam GIS Stack Exchange ir šādi resursi:

  • Loop caur visiem slāņiem
  • Iegūstiet pašreizējā slāņa pakāpi

  • Tiek iegūts slāņa nosaukums

Apvienojiet tos kopā ar vienkāršu csv rakstīšanas komandu, izmantojot pyQGIS, kā pirmo mēģinājumu iesaka:

Atruna: salikti no koda fragmentiem un nav pārbaudīti. Tomēr tas dod ātru priekšstatu par sākotnējo metodi tālākai attīstībai.


Kā es varu izveidot sfērisku pasauli, ko izpētīt?

Tāpēc, lai ievadītu šo jautājumu, es esmu daudz pētījis šo jautājumu, taču lielākā daļa no tā ir izrādījusies nelietderīga, iespējams, tāpēc, ka es neesmu pārliecināts, ka pareizais veids, kā izteikt to, ko es cenšos uzdot, tāpēc es varētu padariet to mazliet garu, lai saprastu manu viedokli.

Pamatideja, kuru es mēģinu izpētīt, ir maza planēta, kurā spēlētājs var pārvietoties, taču es arī vēlos, lai šī planēta būtu līdzīga, taču atšķirīga katram atskaņošanas veidam (līdz ar to procesuālās paaudzes tags). Sākumā es mēģināju to izdarīt, vienkārši izveidojot sfēru, kurai ir savs gravitācijas veids (tai nav jābūt pārāk reālistiskai), taču pētījumi pierādīja, ka tam bija daudz (pārāk daudz) šķēršļu, kas jāpārvar. Gravitācijas darbs šajā sfērā būtu bijis sarežģīts, bet izpildāms, bet tad es izlasīju, ka reljefa instrumenti nedarbosies pareizi, un tas varētu būt problēma. Pēdējais jautājums, ko es redzēju šim nolūkam, kas man liek domāt, ka šī ideja ir mirusi, ir tas, cik saspringts tas varētu būt sistēmām, jo ​​es vēlos, lai planēta būtu diezgan pilna ar interesantām lietām, ko izpētīt.

Tas mani noveda pie idejas par moduļu flīžu sistēmu (ja es pareizi lietoju šo terminu), kur es procesuāli varētu ģenerēt šīs flīzes un izlīdzināt tās sfēriskā formā. Es varētu pēc iespējas ātrāk iznīcināt un iznīcināt elementus, lai saglabātu sistēmas resursus, un arī man tas būtu vieglāk (vismaz es domāju, ka tas tā būs). Problēma, ko es redzu ar šo modeli, ir tā, kā kvadrātveida (vai jebkuras citas formas flīzes) veidot sfēru.

Es mēģinu to izveidot UE4. Ja to nav iespējams vai vismaz pārmērīgi grūti izdarīt dzinējā, es drīzāk to uzzinu, pirms es pārāk tālu iedziļinos projektā. Un jebkura palīdzība vai resursi par to, kā es varu to izdarīt, ja iespējams, tiks ļoti novērtēti.


Protams, sadaliet attēlu ar noteiktu summu, katram komplektam sāciet jaunu pavedienu, lai pārbaudītu tikai to, vai pikseļi nav tukši (piemēram, nav balti / caurspīdīgi).

Izveidojiet notikumu, kas aktivizē (un iestata karodziņu) tikai tad, ja ir atrasts tukšs pikselis. Ļaujiet katram pavedienam pārbaudīt šo karodziņu (būtībā kādu laiku cilpa).

Jūs varat "piesaistīt" GDI + bitkarti piespraustajam baitam [] (vai int [] vai pat uint []) un tieši izmantot masīvu, lai lasītu un rakstītu ARGB bitkartes datus.

Izmantojot Marshal.ReadInt64 (), jūs nekavējoties palielināsiet ātrumu x 8. Uzmanieties, lai pārsniegtu platumu, tomēr pēdējiem skenēšanas līnijas pikseļiem būs nepieciešama ReadByte (). Šī koda rakstīšana palīgierīces komplektā C #, iespējams, ir ātrākais labojums, tas ļauj izmantot rādītāju.

Izmantojot C # (es zinu, ka paraugs atrodas VB.Net), jūs varat izmantot nedrošus un ļoti ātri piekļūt savai bitkartei:

Ja jūs nevarat izmantot C #, ātrākais veids būtu izmantot maršalu. Kopēt kā bloku:

Visefektīvākais veids būtu manuāli parsēt failu, tieši pāriet uz datu straumi un lasīt saspiesto zLib straumi, līdz atrodat pikseļu, kas nav balts un caurspīdīgs.

Atkarībā no tā, no kurienes nāk attēli un cik daudz tajos tiek izmantoti dažādi PNG "īpašie piedāvājumi" (filtri, īpaša palete.), Tas var būt daudz pūļu, tāpēc lasiet "efektīvi" kā "daudz darba, bet ļoti ātri".

Noderīgi resursi tam ir PNG datplūsmas specifikācija un ZLIB specifikācija (vai, daudz vienkāršāk, zLib bibliotēka).

Attēlam Magickam ir c # iesaiņotājs:

Izmantojiet ImageMagik CLI identifikācijas funkciju, kā norādīts šeit:

identificēt -formātu "% #" source.png

Ja krāsu skaits ir 1, jums ir tukša lapa.

Varat arī izmantot komandu:

identificēt -verbose source.png

Tukša attēla standarta novirze, šķībs un kurtoze būs 0.

Es izmantotu GDI +, lai pārveidotu PNG failu uz BMP un saglabātu to pagaidu vietā. Tad es izmantotu tā nesaspiesto raksturu, meklētu ārpus galvenes pikseļos, sagatavotu vidēja lieluma (teiksim 16384 B) pagaidu virkni, kas pilna ar nulles baitiem, un pēc tam līdz faila beigām nolasīju 16384B gabalus, salīdzinot tos ar pagaidu virkni. Tā kā Windows XP un jaunākas versijas, nolasot faila beigas, dod nulles baitus, īpaša beigu apstrāde nav nepieciešama, vienkārši izlasiet mazliet vairāk par beigām ar pēdējo atkārtojumu. Pārliecinieties, vai bitu karte ir saglabāta 32 bitu režīmā, pretējā gadījumā netiks atklāti melni necaurspīdīgi pikseļi. Šis režīms rūpēsies arī par visām paletēm un citām dīvainībām, lai jūs varētu pat meklēt fiksētu post-header nobīdi.


Kā es varu identificēt iezīmētos reģionus procesuāli izveidotajā pasaulē?

Es būvēju salu. Es izmantoju klasisko augstuma kartes risinājumu: ar kalna veidošanas funkciju, izvairoties no kartes stūriem, es veicu augstumu. Tad perlīna troksnis dod man dažus klimatiskos mainīgos lielumus, lai rīkotos ar biomiem. Tagad man ir jāsaskaras ar divām problēmām, kas savā ziņā ir saistītas:

Rūķu cietoksnī viens no veiklākajiem pasaules paaudzes aspektiem ir tas, kā spēle, šķiet, "zina" apgabalus un piešķir tiem nosaukumus, lai gan tie nav taisnstūra formas. Es gribētu, lai es varētu "atpazīt" savus mežus, upes, kalnus. kāda ideja, kādu algoritmu es varētu izmantot, lai skenētu savu karti un interpretētu tās apgabalus? Un kā jūs to glabājat? Es izmantoju pamata C ++ grafiku, kas izgatavots no "flīžu objekta" vektora vektora.

Šī sala ir jāsadala politiskajās jomās, ne tikai tīri dabiskos reģionos. Es varētu izmantot kalnus un upes, lai izveidotu "dabiskas robežas", taču mana procesuāli izveidotā karte negarantē, ka man būs jauki "anklāvi", kas veidotu karaļvalsti, kurā es varētu atrast sev gigantiskas "lentes veidotas" politiskas teritorijas, kuras ieskauj mikrokaraļvalstis. Vēl viena iespēja būtu meklēt piemērotas teritorijas pilsētai vai pilij. Tad "apaudzē" politisko zonu ap to. Bet atkal es vēlētos iegūt dažus labi zināmus algoritmus, pirms mēģināt izstrādāt savus.

Šo jautājumu varētu interpretēt kā mazliet pārāk neskaidru, tāpēc viens no tā pārformulēšanas veidiem būtu: kā procesuāli izveidoto pasauli sadalīt (nemodificējot!) Laukumos, kas piemēroti spēlei? Jau iepriekš pateicos par palīdzību.


Mdhntd

Vai Ford Model T bija melns, jo ātri izžuva melnā krāsa?

Noslēpumu attālumu mērīšana

Kā DM, kā izvairīties no neapzinātas metagaming, strādājot ar augstu AC raksturu?

Kāpēc java.time.Period # normalizēts () dienas netiek normalizētas?

Vai, piesakoties darbam, es varu apzināti izlaist iepriekšējo darba pieredzi vai izlikties, ka tās nav?

Ārkārtas kritums, pamatojoties uz “2,5 reizes lielāku par RMSE”

Kāpēc ASV valdība nav izmaksājusi kara atlīdzību nevienai valstij, kurai tā uzbruka?

Atbalsts izstrādātājiem, kuri uzstāj, ka jālieto sava mājdzīvnieka valoda

Kā darbojas Windows versiju numuri?

Es izstājos, un priekšnieks man piedāvāja 3 mēnešu "labvēlības periodu", kur es vēl varētu atgriezties

nginx apkalpo nepareizu domēna vietni. Ja konfigurācija nav piemērota, tā parasti parāda noklusējuma vietni

Vai Google Maps maršruta laikos ņem vērā kalnus / slīpumus?

Kļūdaini modificēts "/ bin / sh"

Par reālo sakņu skaitu

Neskaidri teikumi: kā pateikt, kad viņiem nepieciešams labot?

Vai pēc dialoga vajadzētu izvairīties no liekas informācijas?

YA zinātniskās fantastikas romāns pirms 1968. gada: robots ar melnbaltu redzi, vēlāk robots varēja redzēt krāsu

Vai ir nepieklājīgi teikt vervētājiem, ka es mainītu darbu tikai par labāku algu?

Ko likt pēc aizmugurējo stabilizatoru noņemšanas no bērna divriteņiem?

Kāpēc tirdzniecības federācija kļūst tik satraukta, uzzinot, ka vēstnieki ir Jedi bruņinieki?

Kāds būtu ideālais tuvcīņas ierocis, kas izgatavots no "Phase Metal"?

Kā es varu tikt galā ar spēlētāju, kurš mēģina ievietot reālās pasaules mitoloģiju manā mājas brūvē?

Kāpēc Larsu ģimene (un līdz ar to arī Lūks) nerunā hutu valodu kā pirmo valodu?

Izveidot ceļu starp daudzstūri, izmantojot QGIS?

Izveidojiet optimizētu ceļu starp mezgliem, izvairoties no daudzstūru entītijām. Īsākais attālums no daudzstūra centrmezgliem līdz līnijai QGISVajadzēs palīdzēt padarīt daudzstūrus no QGIS līnijāmPython QGIS uzticamu punktu un līniju krustošanās / pārklāšanās pārbaudi. Padarīt QGIS atribūtu tabulas lauku automātisku? Klipu līnija tuvu daudzstūrim QGIS svērtā daudzstūru centroidā daļa ar svariem no rastra slāņa Virzieni, pamatojoties uz daudzstūra centroidu un blakus esošā daudzstūra pieskaramās robežas vidējo / ​​vidējo punktu Aprēķinot īsāko attālumu starp rastra pikseļiem un līnijas funkciju QGIS? Aprēķināt daudzstūra garumu ArcGIS Desktop? Atrast attālumu starp ēkām un tuvāko ceļu, izmantojot QGIS?


Attālās uzrādes jēdzieni un pamati - PowerPoint PPT prezentācija

PowerShow.com ir vadošā prezentāciju / slaidrāžu koplietošanas vietne. Neatkarīgi no tā, vai jūsu pieteikums ir bizness, apmācība, izglītība, medicīna, skola, baznīca, pārdošana, mārketings, tiešsaistes apmācība vai tikai izklaidei, PowerShow.com ir lielisks resurss. Un pats labākais, ka lielākā daļa tā atdzist funkciju ir bezmaksas un viegli lietojamas.

Varat izmantot programmu PowerShow.com, lai atrastu un lejupielādētu tiešsaistes PowerPoint ppt prezentāciju piemērus par jebkuru tēmu, kuru varat iedomāties, lai jūs varētu uzzināt, kā bez maksas uzlabot savus slaidus un prezentācijas. Vai arī izmantojiet to, lai atrastu un lejupielādētu augstas kvalitātes PowerPoint ppt prezentācijas ar ilustrētiem vai animētiem slaidiem, kas iemācīs jums darīt kaut ko jaunu, arī bez maksas. Vai arī izmantojiet to, lai augšupielādētu savus PowerPoint slaidus, lai jūs varētu tos kopīgot ar skolotājiem, klasi, studentiem, priekšniekiem, darbiniekiem, klientiem, potenciālajiem investoriem vai pasauli. Vai arī izmantojiet to, lai izveidotu ļoti foršas fotoattēlu slaidrādes - ar 2D un 3D pārejām, animāciju un jūsu izvēlēto mūziku - kuras varat kopīgot ar saviem Facebook draugiem vai Google+ lokiem. Arī tas viss ir bez maksas!

Par nelielu samaksu jūs varat iegūt nozares labāko tiešsaistes privātumu vai publiski reklamēt savas prezentācijas un slaidrādes ar augstāko rangu. Bet bez tā tas ir bez maksas. Mēs pat pārveidosim jūsu prezentācijas un slaidrādes universālajā Flash formātā ar visu to sākotnējo multimediju krāšņumu, ieskaitot animāciju, 2D un 3D pārejas efektus, iegultu mūziku vai citu audio vai pat slaidos ievietotu video. Viss bez maksas. Lielāko daļu PowerShow.com sniegto prezentāciju un slaidrāžu var bez maksas apskatīt, daudzas pat bez maksas var lejupielādēt. (Jūs varat izvēlēties, vai ļaut cilvēkiem lejupielādēt jūsu oriģinālās PowerPoint prezentācijas un fotoattēlu slaidrādes par maksu vai bez maksas vai vispār.) Apskatiet PowerShow.com šodien - BEZ MAKSAS. Katram ir patiešām kaut kas!

prezentācijas bez maksas. Vai arī izmantojiet to, lai atrastu un lejupielādētu augstas kvalitātes PowerPoint ppt prezentācijas ar ilustrētiem vai animētiem slaidiem, kas iemācīs jums darīt kaut ko jaunu, arī bez maksas. Vai arī izmantojiet to, lai augšupielādētu savus PowerPoint slaidus, lai tos varētu kopīgot ar skolotājiem, klasi, studentiem, priekšniekiem, darbiniekiem, klientiem, potenciālajiem investoriem vai pasauli. Vai arī izmantojiet to, lai izveidotu ļoti foršas fotoattēlu slaidrādes - ar 2D un 3D pārejām, animāciju un jūsu izvēlēto mūziku - kuras varat kopīgot ar saviem Facebook draugiem vai Google+ lokiem. Arī tas viss ir bez maksas!


IdentifyFeature () izmantošana, izmantojot PyQGIS? - Ģeogrāfiskās informācijas sistēmas

Ierakstiet vārdus "lietotāju grupas" pašreizējā koordinātu logā un skatieties, kā notiek burvība. | image2 | Šo funkciju izstrādāja `Germán Carrillo` __ Temporal -------- Spēja eksportēt īslaicīgus animācijas rāmjus

Ļauj eksportēt īslaicīgus animācijas rāmjus uz secīgiem attēliem, lai tos vēlāk sašūtu ārējā lietojumprogrammā. Lietotāji var precīzi kontrolēt attēla izmēru un kartes apmēru. Šo funkciju izstrādāja `Nyall Dawson` __ Map Tools --------- Go-To locator

Mēs esam pievienojuši jaunu goto lokatora filtru. Goto indikators uzņem šādas virknes: - x un y koordinātu pāris (atdalīts ar komatu vai atstarpi). - OSM, brošūras vai OpenLayers formatēts URL. - Google Maps URL. XY virknes loģika ir šāda: - Ja audekla DRS nav WGS84: - Ja koordinātas ietilpst WGS84 robežās, pievienojiet rezultātu WGS84 (tas tiek svērts, lai tam būtu augstāka prioritāte nekā zemāk redzamajam CRS rezultātam). - Ja koordinātas ietilpst audekla DRS robežās, pievienojiet audekla DRS rezultātu. - Ja audekla CRS ir WGS84: - Ja koordinātas ietilpst WGS84 robežās, pievienojiet rezultātu WGS84. | image3 | Šo funkciju izstrādāja `Mathieu Pellerin` __ Lietotāja saskarne -------------- Pievienojiet konteksta izvēlni, lai kartes audekls

Tagad kartes audeklā ir konteksta izvēlne ar peles labo pogu. Pēc noklusējuma tas izveido izvēlni "Kopēt koordinātas", kas tika ieviesta ar QGIS 3.14, tomēr paredzams, ka šī funkcionalitāte tiks paplašināta, lai nākotnē ar telpisko kontekstu varētu piekļūt vēl daudzām funkcionalitātēm. | image4 | Šo funkciju izstrādāja `jakimowb` __ Symbology --------- Vector flīžu stila uzlabojumi

Sarežģītu vektoru elementu stilu rediģēšanai tika ieviesti vairāki uzlabojumi: - Rādīt rīku padomus sarakstos, lai pilnu filtrēšanas kārtulas un nosaukumus varētu apskatīt, nemainot kolonnu izmērus - Rādīt pašreizējo audekla tālummaiņas līmeni logrīkos - Ļaut lietotājiem filtrēt stili, lai parādītu tikai tos, kas pašlaik ir redzami - rediģējot simbolus, iestatiet pareizo audekla tālummaiņas līmeni, lai izteiksmes priekšskatījumi darbotos labi. Šo funkciju izstrādāja `Nyall Dawson` __ Ļauj lietotājiem pēc izvēles norādīt vektora flīžu noklusējuma stila URL savienojumi

Iestatot vektoru elementu avota savienojumu, ir jauna iespēja ievadīt URL MapBox GL JSON stila konfigurācijā. Ja tāds ir ievadīts, šis stils tiks piemērots ikreiz, kad slāņi no savienojuma tiks pievienoti QGIS. Tas darbojas arī ar ArcGIS Vector Tile Service savienojumiem, kas būs servera konfigurācijā norādītā noklusējuma stila konfigurācija. | image5 | Šo funkciju izstrādāja `Nyall Dawson` __ Atļaut datu definētu nobīdi aizpildīšanas simbolu slāņiem

Jebkurš aizpildījuma simbola slānis, kas atbalsta daudzstūru kompensēšanu, ieskaitot vienkāršas aizpildes, rastra attēlu aizpildījumus, formas un gradientu aizpildījumus, tagad atļauj datu definētus nobīdes. Šo funkciju izstrādāja `Nyall Dawson` __ Importēt MapBox GL JSON stilus vektoru flīžu slāņiem

Lietotāji tagad var ielādēt MapBox GL JSON stila konfigurācijas failus, importējot stila failus uz vektoru flīžu slāņiem. Šo funkciju izstrādāja `Nyall Dawson` __ Expose opcija, lai kompensētu vienkāršus līnijas domuzīmes modeļus ar iepriekš iestatītu summu

Ļauj pielāgot domuzīmju / atstarpju pozicionēšanu līnijā, lai domuzīmes / atstarpes varētu ievietot jaukākās pozīcijās, lai ņemtu vērā līnijas stūrus (tos var arī izmantot, lai "izlīdzinātu" blakus esošās domuzīmes modeļa apmales). Nobīdi var iestatīt dažādās vienībās, ieskaitot karšu vienības, un to var arī definēt kā datus. Šo funkciju finansēja `Kanton Solothurn` __ Šo funkciju izstrādāja` Nyall Dawson `__ Pievienojiet opcijas, lai dinamiski pielāgotu domuzīmes modeli vienkāršos līniju simbolu slāņos

Ir pievienotas opcijas, kas ļauj pielāgot domuzīmes modeļus, lai ļautu labāk kontrolēt līniju simbolu atveidoto kvalitāti. Šīs opcijas ietver: - Pielāgot domuzīmes rakstu līnijas garumam: Ja tas ir atzīmēts, domuzīmes modeļa garumi tiks smalki pielāgoti, lai nodrošinātu, ka, atveidojot līniju, tā beigsies ar pilnu domuzīmes elementu, nevis atstarpes elementu vai daļēju domuzīmi. elements. - Pielāgot domuzīmes modeli asos stūros: ja šī opcija ir atzīmēta, šī opcija dinamiski pielāgo domuzīmes raksta izvietojumu tā, lai asos stūrus attēlotu pilnas domuzīmes elements, kas ienāk un iziet no asā stūra. Tas ir izstrādāts, lai labāk attēlotu pamatā esošo ģeometriju, vienlaikus atveidojot punktētas līnijas, it īpaši robainām līnijām. Šie attēli ilustrē izmaiņu "Pielāgot domuzīmes modeli līnijas garumam" darbībā, ar dzeltenām līnijām, kas norāda līnijas elementu patieso sākuma un beigu stāvokli. Pirms: | image6 | Pēc: | image7 | | image8 | Šo funkciju finansēja `Kanton Solothurn` __ Šo funkciju izstrādāja` Nyall Dawson `__ Pārvaldiet 3D simbolus, izmantojot stila pārvaldnieku

Tika pievienots atbalsts 3D simbolu pārvaldībai, izmantojot QGIS stila pārvaldnieku, tostarp atbalsts 3D simbolu bibliotēku importēšanai un eksportēšanai, un tas pabeidz neseno darbu, pilnībā atdalot 3D simbolus un to logrīku apstrādātājus. Diemžēl bibliotēkā nav ģenerēti sīktēli 3D simboliem, un pagaidām visiem 3D simboliem tiek izmantota vispārēja ikona. Sīktēlu ģenerēšana nav mazsvarīga lieta, tāpēc pagaidām tā ir atlikta. Šī funkcija novērš problēmu, kas izvirzīta vietnē “31479” __. | image9 | Šo funkciju izstrādāja `Nyall Dawson` __ Labeling --------- Add opcija, kas ļauj lietotājiem kontrolēt etiķešu izvietojumu pēc līnijas funkcijām

Jauna etiķešu rindas izvietojuma iestatījumu sadaļa “Etiķešu nostiprināšana” ļauj lietotājiem norādīt, vai etiķetes ir jāievieto rindas centrā, sākumā vai beigās. Turklāt tas ļauj kompensēt šīs pozīcijas (pamatojoties uz objekta garuma procentuālo daļu), ko var definēt statiski vai izmantojot datu definētu definīciju. | image10 | Šo funkciju izstrādāja `Nyall Dawson` __ Vadības stiprinājuma punkts līniju etiķetēm

Tiek parādīta jauna opcija, kas ļauj lietotājiem kontrolēt, vai līnijas elementu marķēšanas stiprinājuma punkts ir mājiens vai stingra prasība. Rezultātā radušās modifikācijas ietver sekojošo: - Stingri: etiķetes tiek ievietotas tikai uz etiķetes enkura, un nav atļauts veikt citus rezerves izvietojumus. - Padoms: etiķetes enkurs tiek uzskatīts par mājienu vēlamajam etiķetes izvietojumam, taču ir atļauti citi izvietojumi tuvu stiprinājuma punktam. | image11 | Šo funkciju izstrādāja `Nyall Dawson` __ Diagrammas -------- Renderēšanas ass sakrauto joslu diagrammai

Tas palielina atbalstu ass renderēšanai uz sakrautajām joslu diagrammām, ja ass ir iestatīta. Ieviešanas pamatā ir histogrammas diagrammas asu renderēšana. Negatīvās vērtības netiek pareizi apstrādātas sakrautajās joslu diagrammās ar vai bez ass. Adreses `34915.izlaidums` __ | image12 | Šo funkciju izstrādāja `Dan Minor` __ Mesh ---- Atmiņā ievietotu acu datu kopas ar neatlaidību

Šī funkcija ievieš iespēju izveidot atmiņā datu kopu grupas acu slāņiem. Šīs datu kopu grupas ir pagaidu un netiek turētas pēc projekta slēgšanas. Tīkla kalkulatoram ir pievienota jauna opcija, kas ļauj izveidot atmiņā esošas datu kopu grupas. Šī funkcija arī ievieš iespēju noņemt vai saglabāt šīs atmiņas datu kopu grupas failā ar norādīto draiveri. | image13 | | image14 | Šo funkciju finansēja `Artelia Group` __ Šo funkciju izstrādāja` Lutra Consulting (Vincent Cloarec) `__ Multi identificēt acu slānim

Identifikācijas rīks ir pielāgots, ja to izmanto acu slāņos, un tagad parāda visu datu kopu grupu datu kopas vērtību, kas atbilst laika kontroliera pašreizējam laikam. Vispirms tiek parādītas aktīvās datu kopu grupas (skalārs un galu galā vektors), pēc tam pārējās datu kopu grupas. Tiek parādīta arī cita informācija, tostarp: - avots, kurā tiek glabāta datu kopa, - parādītās datu kopas laika solis (var atšķirties no laika kontroliera laika). Nekas netiek rādīts, ja datu kopas grupa nav laicīga - atbilstošās sejas centroidā daļa - sagrābtās virsotnes koordināta (ja viena ir nofiksēta) - nofiksētās malas centrs (ja tāda ir nofiksēta) Ja kartes audeklā nav iespējota laika navigācija, identificēšanas rezultātos ir tikai informācija par aktīvajām datu kopu grupām, kuru statisko datu kopas ir definētas acu rekvizītu dialoglodziņā. | image15 | Šo funkciju finansēja `Artelia Group` __ Šo funkciju izstrādāja` Lutra Consulting (Vincent Cloarec) `__ Virtuālo datu kopu grupas tīkla slānim

Tīkla slāņiem ir ieviesta iespēja izmantot "virtuālās" datu kopu grupas. Tas aizstāj datu kopas grupu "atmiņa", kas izmantota "37389" __. Izmantojot acu kalkulatoru, lietotāji var izvēlēties izveidot tās "virtuālās" datu kopu grupas, kas tiks pievienotas slānim. Vērtības netiek glabātas atmiņā, bet katra datu kopa tiek drīzāk aprēķināta, ja nepieciešams, izmantojot formulu, kas ievadīta acu kalkulatorā. Šīs virtuālo datu kopu grupas tiek saglabātas projektā un tiek noturētas, lai tās noņemtu vai saglabātu failā. Noturīgās un virtuālās datu kopas acs slāņa rekvizītu cilnē izšķir ar fona krāsas izmaiņām katram objektam, norādot šādi: Noturīgs: dzeltens Virtuāls: violets | image16 | | image17 | Šo funkciju finansēja `Artelia Group` __ Šo funkciju izstrādāja` Lutra Consulting (Vincent Cloarec) `__ Pievienot eksportu uz QgsMesh metodi

Ir pievienota metode triangulācijas eksportēšanai uz QgsMesh instanci, ar iespēju no esošajiem punktiem un līnijām konstruēt acu slāni ar triangulāciju. Šis ir pirmais solis, lai ļautu iegūt QgsMesh no citiem kartes slāņiem. Triangulation un DualEdgeTriangulation klases arī tika pārdēvētas un pārveidotas, lai padarītu tās saskaņotākas ar QGIS kodu. - Pievienojiet metodi triangulācijas eksportēšanai uz QgsMesh gadījumu. Šo funkciju izstrādāja `Vincent Cloarec` __ TIN acu izveide

TIN tīkla slāņus var izveidot no vektoru slāņa datiem (virsotnēm un / vai pārrāvuma līnijām). Iegūtais siets ir konstruēts ar ierobežotu Delaunay triangulāciju. Šo acu slāni var izveidot, izmantojot pitona API vai izmantojot algoritmu apstrādes rīku lodziņā. | image18 | Šo funkciju izstrādāja `Vincent Cloarec` __ Rendering --------- Gamma korekcijas filtrs rastra slāņiem

Pievienojiet gammas korekcijas filtra cauruli rastra slāņiem papildus esošajiem spilgtuma, kontrasta, nokrāsas un piesātinājuma filtriem. Lietotāji var pielāgot gamma vērtību slāņa rekvizītu dialoglodziņā, izmantojot stila paneli un / vai jaunas pogas Rastra rīkjoslā. Noklusējuma gamma vērtība ir 1,0, un to var pielāgot diapazonā no 0,1 līdz 10. Risina “13512. izdevumu” __ Pievieno arī spilgtuma un kontrasta filtra renderēšanas testu, kuram vispār nav testa, un Python testā nosaka dažus brīdinājumus par nolietojumu. `QgsRasterLayer`. | image19 | Šo funkciju izstrādāja `Alexander Bruy` __ 3D Features ----------- Atļaut 3D materiāla tekstūras failus iegult stilā / projektā

Tika veiktas dažas nelielas API un kodu tīrīšanas iespējas, kā arī ieviesta QgsImageCache izmantošana 3D faktūras failiem, lai ļautu tos iegult projektos. Šo funkciju izstrādāja `Nyall Dawson` __ ēnu renderēšana

Ēnas tagad var atveidot 3D skatījumos. | image20 | Šo funkciju izstrādāja `Nedjima Belgacem` __ Eksportēt 3D ainas

3D ainas tagad var eksportēt lietošanai citā 3D programmatūrā, piemēram, Blender. Šī eksportēšanas funkcija atbalsta vairākas papildu funkcijas, tostarp izejas modeļa vienkāršošanu, norādot izvades izšķirtspēju, izvēles modeļa izlīdzināšanu un 3D vektoru slāņu eksportēšanu. | image21 | Šo funkciju izstrādāja `Nedjima Belgacem` __ QGIS 3D virziena apgaismojuma atbalsts

QGIS 3D pievienoja virziena gaismas - tagad lietotājs var pievienot virziena gaismas 3D skatiem. - Es pievienoju cilnes logrīku 3D konfigurācijas dialoga gaismas sadaļā. - Lietotājs var norādīt gaismas virzienu, krāsu un intensitāti. - Tas ir tikai jau esošās punktu gaismas ieviešanas dublikāts ar dažām izmaiņām. - Vēlāk var būt noderīgi pievienot veidu, kā vizualizēt gaismas virzienu, parādot acu, kas novietota kameras skata punktā kā bulta, kas parāda, kā, piemēram, saule izgaismo ainu. | image22 | .. neapstrādāts :: html

QGIS 3D ir pievienots teksturēšanas atbalsts ar šādām jaunām funkcijām: - Tagad no simbolu īpašībām lietotāji var izvēlēties attēlu, kas tiks parādīts uz ēku virsmām kā difūzā karte. - Lietotājs var arī mainīt faktūru mērogu no simbolu īpašībām. Izmantojot tekstūras, var parādīties dažas vizuālas problēmas. Šie jautājumi attiecas uz to virsmu normālām daļām, kuras, iespējams, varēsiet salabot, pārbaudot “pievienot aizmugurējās sejas” un spēlējoties ar apgrieztajiem normāliem un nokaušanas režīmu simbolu īpašībās. | image23 | Šo funkciju izstrādāja `Nedjima Belgacem` __ Iespējot iegultos un attālinātos 3D modeļus 3D punktu simboliem

Tagad lietotāji var izmantot un iegult attālinātus 3D modeļus 3D punktu simboliem. | image24 | Šo funkciju izstrādāja `Mathieu Pellerin` __ Pievienot iespēju, lai parādītu gaismas avotu izcelsmi

Funkcija, kas ļauj lietotājiem mainīt redzamu sfēru, izmantojot gaismas avotu, 3D sižetā. Tas ļauj vieglāk pārvietot un izvietot gaismas avotus, salīdzinot ar ainas saturu. Adreses `Issue # 37726` __ Šo funkciju izstrādāja `Nyall Dawson` __ Materiālu apstrādes uzlabojumi

Tika ieviesti turpmāki uzlabojumi materiālu apstrādē un pievienots Gooch ēnojuma modelis. Tas uzlabo QgsAbstractMaterialSettings API: - Pievienojot ikonu atbalstu reģistrētiem materiālu veidiem (lietošanai materiālu atlasītāja kombinētajā lodziņā). - Pievieno atbalstu dažādu renderēšanas paņēmienu apstrādei vietnē QgsAbstractMaterialSettings. Tagad materiālu klasēs var norādīt, kuras renderēšanas metodes tās atbalsta (piemēram, trīsstūri, līnijas, InstancedPoints utt.), Un materiāls tiek piedāvāts tikai tad, ja tas ir saderīgs ar nepieciešamo tehniku. - Tika uzlabota tehnikas apstrāde gooch materiāla logrīkā, lai izvairītos no iestatījumu parādīšanas, kuriem konkrētā kontekstā nav ietekmes (piemēram, visu 2D līniju simbolu slēpšana, izņemot apkārtējās vides izvēli). - Tika pievienots jauns materiāls "Gooch". Šis materiāls nodrošina CAD stila 3D renderēšanu, kur ēnojums nav atkarīgs no piemērota apgaismojuma iestatījuma ainā un kur 3D detaļas vienmēr ir redzamas neatkarīgi no apgaismojuma izvēles. | image25 | Šo funkciju izstrādāja `Nyall Dawson` __ Drukas izkārtojumi ------------- Ekspozīcijas kontrole pār teksta formātu un izlīdzināšanu atsevišķām šūnām manuālās teksta tabulās

Adds control over setting the text format (e.g. bold/italic/buffer/shadow etc) and text alignment (horizontal and vertical) for the contents of individual cells in a manual text table. This feature was funded by City of Canning This feature was developed by `Nyall Dawson `__ Use QgsTextRenderer to render attribute table text

Allows for the full range of text formatting options in layout attribute tables, including buffers, shadows, word spacing etc. This feature was funded by City of Canning This feature was developed by `Nyall Dawson `__ Use QgsTextRenderer for drawing map grid text in layouts

Allows for grid annotations which use buffers, shadows, background shapes, etc. |image26| |image27| This feature was developed by `Nyall Dawson `__ Expose option to control PDF image compression method when exporting layouts to PDF

Options are for Lossy compression, which is the default JPEG compression used, and Lossless compression (which creates bigger files in most cases, but is much more suitable for professional printing outputs or for post-production in other products such as Illustrator etc) The bad news is that this option is only available in builds based on Qt 5.13 or later. This feature was developed by `Nyall Dawson `__ Add automatic clipping settings for atlas maps

This feature allows users to enable map clipping for layout map items so that the maps are clipped to the boundary of the current atlas area feature. Options exist for: - Enabling or disabling the clipping on a per-map basis - Specifying the clipping type: - “Clip During Render Only”: applies a painter based clip, so that portions of vector features which sit outside the atlas feature become invisible - “Clip Feature Before Render”: applies the clip before rendering features, so borders of features which fall partially outside the atlas feature will still be visible on the boundary of the atlas feature - “Render Intersecting Features Unchanged”: just renders all features which intersect the current atlas feature, but without clipping their geometry - Controlling whether labels should be forced placed inside the atlas feature, or whether they may be placed outside the feature - Restricting the clip to a subset of the layers in the project, so that only some are clipped |image28| |image29| This feature was funded by City of Canning This feature was developed by `Nyall Dawson `__ Add API to QgsMapSettings for specifying clipping regions to apply while rendering maps

This is currently API only functionality, but functionality has been added which provide the backend capabilities to specify clipping regions which may be used during map render operations. Although primarily introduced in order to provide functionality which allows the automatic clipping of map elements to the current atlas feature geometry in print layouts, the API has been deliberately implemented in a manner that's very flexible to allow various use cases which require the clipping of regions during map render operations. For non-vector layers, the clipping is applied through a QPainter clipping path. For vector layers, the API exposes various options in how the clipping should be applied: #. As an "intersects" style test only: All vector features which intersect the path are rendered, without actually clipping the feature's geometry #. By modifying the feature's geometry and clipping the geometry to the region: Any stroke or outline settings for the symbol will be rendered along the boundary of the clipping region, even if the feature actually partially falls outside this region. or #. Using a painter clip path: Features are clipped to the region, but only at painter time. Boundaries of the feature which fall outside the clip region will not be visible. This feature was funded by City of Canning This feature was developed by `Nyall Dawson `__ Layout legend maximum marker size

Adds the possibility to enter the maximum marker size (in mm) to the layout legend widget. In some cases, such as when point layers use a symbol size which is based on map units, the point markers on the layout legend can get quite big. This feature adds a setting to the layout legend widget which allows the restriction of the maximum marker symbol size while the automatic legend update is still active. This feature was developed by `mhugent `__ Allow cells in manual text tables to have expression based contents

Allows individual cells from a manual text table to take their contents from a preset expression. Expressions have access to the full layout item expression context, allowing cells to calculate and display metadata style values or aggregate based calculations. This feature was funded by City of Canning This feature was developed by `Nyall Dawson `__ Clip layout maps to shape

New functionality was introduced which allows users to clip a map item to a shape or polygon item from their layout, allowing for non-rectangular maps within the layout. |image30| |image31| This feature was developed by `Nyall Dawson `__ Support for rotated ticks/annotation

Tick marks and annotations on a map frame in the print composer can now be rotated, allowing them to align with a rotated map frame as described in `issue 36904 `__. It works for both rotated maps and reprojected grids. The following options have been added: - Ticks: - Rotate ticks (if unchecked, ticks get drawn as before, not taking angle into account) - Rotated ticks alignment (whether ticks should have a constant length, or be aligned orthogonaly) - Skip low angled ticks (an angle threshold below which ticks aren't drawn, so you can skip ticks for grid lines that are, for example, too close to being parallel with the map edge) - Annotations: - Parallel to Tick (Next To/ Horizontal / Vertical Ascending / Vertical Descending) - Draw low angled (if checked, skipped ticks above will still get an annotation) |image32| This feature was funded by `Kanton Solothurn `__ This feature was developed by `Olivier Dalang, OPENGIS.ch `__ Add page offset expression for Y positions

A ``layout_pageoffsets`` expression was added for print layouts which returns an array of Y coordinates for the top of each page in the layout. this allows users to dynamically position items on pages in a context where page sizes may change. For example, to set an item at 2.5mm from the top of page 2 (for the data-defined position Y of a map item) : ``@layout_pageoffsets[1] + 2.5`` This constitutes a workaround for `Issue 37567 `__. This feature was funded by `BikePlan `__ This feature was developed by `Olivier Dalang, OPENGIS.ch `__ Expressions ----------- Add to\_decimal() function to convert DMS to DD

A new ``QgsCoordinateUtils::dmsToDecimal`` function has been added which exposes the ``to_decimal`` function in expressions. This allows the conversion of DMS (degree/minute/second) strings into DD (decimal degree) format. This feature was developed by `Mathieu Pellerin `__ Add "main\_angle" function to return the estimated main angle of a geometry

Returns the angle of the oriented minimum bounding box which covers the geometry value. Useful for data defined overrides in the symbology of label expressions, e.g. to rotate labels to match the overall angle of a polygon, and similar for line pattern fill. |image33| |image34| This feature was funded by `Kanton Solothurn `__ This feature was developed by `Nyall Dawson `__ Port refFunctions to core

Various overlay operations have been added to the expression engine. This covers the functionality of the refFunctions plugin. |image35| The following new expression functions are implemented:: * overlay_intersects(layer[,expression][,filter][,limit][,cache]) * overlay_contains(layer[,expression][,filter][,limit][,cache]) * overlay_crosses(layer[,expression][,filter][,limit][,cache]) * overlay_equals(layer[,expression][,filter][,limit][,cache]) * overlay_touches(layer[,expression][,filter][,limit][,cache]) * overlay_disjoint(layer[,expression][,filter][,limit][,cache]) * overlay_within(layer[,expression][,filter][,limit][,cache]) * overlay_nearest(layer[,expression][,filter][,limit][,max_distance][,cache]) In all instances, the spatial operator is evaluated against the other layer. If an expression is provided, it returns an array of results. If no expression is provided, it returns a boolean indicating whether or not there is a match for at least one feature. Features can optionally be filtered by an expression, and optionally be limited to a certain count. The ``overlay_nearest`` function has an additional max\_distance filter. |image36| This feature was developed by `Olivier Dalang, OPENGIS.ch `__ Digitising ---------- Add option to calculate bearing based on travel direction

For devices which report faulty bearing measurements, this option can be used to instead calculate the GPS bearing based on the previous two recorded locations. This feature was developed by `Nyall Dawson `__ Digitizing and splitting curved features

New functionality was introduced that adds the possibility to switch between linear or circular strings when digitizing or splitting vector layer features. The user can use the keyboard shortcut **Ctrl+Shift+G** to switch between linear/circular. For splitting features, new overloading methods have been added to the API. When splitting, curves are preserved. For this, the curve is segmentized before splitting, and all the split features are "de-segmentized" after splitting. A toolbar button was added to enable switching between linear/circular: |image37| |image38| |image39| |image40| This feature was developed by `Vincent Cloarec `__ Data Management --------------- Rescale raster algorithm for Processing

Adds a rescale raster algorithm to change raster value range, whilst preserving the shape of the raster's histogram. Useful for when rasters from different sources should be compared or processed together and their pixel values should be in the same range. By default, the algorithm preserves the NODATA value of the input raster but there is an option to override it. The following image displays a histogram of a DEM (value range is 85-243) |image41| And the next image displays a histogram of same DEM rescaled to the range 100-1000 |image42| Addresses `Issue 26099 `__. This feature was developed by `Alexander Bruy `__ Forms and Widgets ----------------- Multiple widgets for a single relation

Multiple relation widgets may now be created for a single relation, each with their own distinct configuration. This feature changes the behavior of relation widgets created in the drag and drop interface and provides resolution for `Issue 37675 `__. On reading a project configured with older QGIS versions, the config is taken over and written into the new widget configuration. Autogenerated forms no longer allow the configuration of relation editor widgets anymore, but if it has been configured in an older QGIS, the attribute form will still read this configuration. |image44| This feature was developed by `signedav `__ Show related features in identify results tree

Users will now be able to see related (child) features in the results window when using the identify tool. Under each identified parent feature, new groups will show containing any related child features, displaying their attributes, actions, and allowing the user to directly open the feature form for the child feature. This feature addresses issue `18634 `__. |image45| This feature was developed by `Nyall Dawson `__ Filter expressions in relation reference widget

An option has been added for static filter expression to be used in the relation reference widget. |image46| This feature was developed by `Ivan Ivanov `__ Analysis Tools -------------- Add project load profile times to debugging tools dock

Modification of the QgsRuntimeProfiler class which performs the following functions: 1. Make the profiling thread-safe, so that it's possible to record times across multiple threads 2. Allows different profiling "groups" The new groups API is used here to expose a breakdown of project load times in the debugging dock, alongside the existing QGIS startup profiling. It's possible now to get a breakdown of the various stages of project load, in order to identify the causes of slow project load times. TODO: In the majority of cases, performance problems will be caused by one or more layers, so it would be nice to further break down the individual layer load times. For example, for an individual WFS layer, we may see the time taken for the initial "server capabilities" or other queries. Add a group with profile times for map rendering, so you can see exactly which layers in your project are causing slow map redraw times. In its current form, only the overall load time of each individual layer is displayed. |image47| |image48| This feature was developed by `Nyall Dawson `__ Processing ---------- Add help string for parameters

Help strings can now be specified at the parameter level. This will be visible in the tooltip, in the CLI and Python Processing API. |image55| This feature was developed by `Étienne Trimaille `__ New "Align points to features" algorithm

This algorithm calculates the rotation required to align point features with their nearest feature from another reference layer. A new field is added to the output layer which is filled with the angle (in degrees, clockwise) to the nearest reference feature. Optionally, the output layer's symbology can be set to automatically use the calculated rotation field to rotate marker symbols. If desired, a maximum distance to use when aligning points can be set to avoid aligning isolated points to distant features. An example use case for this is the aligning of building point symbols to follow the nearest road direction by using a data defined rotation value generated by this algorithm. This feature was developed by `Nyall Dawson `__ Add modeler algorithm to create directories

This algorithm allows models to create new file directories. Useful for models which have to output results to certain dynamically created paths (e.g. a folder containing the current date). This feature was developed by `Nyall Dawson `__ Add modeler algorithm to set a project expression variable

Allows a model to set Project-level expression variables during execution. Especially useful with the new `Export Print Layout algorithms `__ to allow models which dynamically set variables used in a layout prior to export. This functionality was ported from https://gis.stackexchange.com/questions/359386 This feature was developed by `Nyall Dawson `__ Add processing algorithms to export a print layout as PDF/image

Models are able to export print layouts from the current project. One use case for this is allowing users to create an in-project model which exports a particular set of layouts from the project to certain folders, so that they can easily re-export the current project in a single operation instead of having to manually open multiple layouts and export one-by-one. Additionally, with the new capabilities to have expression based output files inside models, you can automatically export the layouts to a folder with the current date tag and include this in the exported file names! This feature was developed by `Nyall Dawson `__ Add a save features to file algorithm

There is now a native processing algorithm to save vector features to a file dataset within a model. It comes with a pair of advanced features to pass dataset and layer options on to GDAL. |image56| This feature was developed by `Mathieu Pellerin `__ Export layout atlas as PDF algorithm

A new QGIS processing algorithm was added which allows the export of a map atlas to PDF. This is the PDF counterpart to the recent export atlas layout to image algorithm. This feature was developed by `Mathieu Pellerin `__ New "Flatten Relationship" algorithm

This algorithm flattens all relationships for a vector layer, exporting a single layer containing one master feature per related feature. This master feature contains all the attributes for the related features. It's designed as a quick way to de-normalize a relation from a project, e.g. to allow exporting to CSV. This feature was funded by SMEC/SJ This feature was developed by `Nyall Dawson `__ Export atlas layout as image algorithm

A new native processing algorithm was added to export layout atlases as images. This is useful in models where remote datasets are processed with the goal of being used as atlas coverage layers. |image57| This feature was developed by `Mathieu Pellerin `__ New Cell statistics algorithm

We added a **Cell statistics** raster analysis algorithm. It performs cell-wise statistics on a stack of raster layers while accounting for NoData. The functions available in the current implementation are: | - Sum - Mean - Median - Standard Deviation - Variance - Maximum - Minimum - Majority (most frequent value) - Minority (least frequent value) - Range (max - min) - Variety (count of unique values) |image49| This feature was developed by `Clemens Raffler `__ New Equal to frequency algorithm

We have added some new raster algorithms that operate on a local cell-by-cell basis in a raster stack. The Equal to frequency algorithm evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are equal to the value of a value raster. |image50| This feature was developed by `Clemens Raffler `__ New Greater than frequency algorithm

We have added some new raster algorithms that operate on a local cell-by-cell basis in a raster stack. The Greater than frequency algorithm evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are greater than the value of a value raster. |image51| This feature was developed by `Clemens Raffler `__ New Less than frequency algorithm

We have added some new raster algorithms that operate on a local cell-by-cell basis in a raster stack. The Less than frequency algorithm evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are less than the value of a value raster. |image52| This feature was developed by `Clemens Raffler `__ New Lowest position in raster stack algorithm

We added some raster value position analysis tools with this new QGIS version: The *Lowest position in raster stack* algorithm evaluates on a cell-by-cell basis the position of the raster with the lowest value in a stack of rasters. Position counts start with 1 and range to the total number input rasters. The order of the input rasters is relevant for the algorithm. |image53| This feature was developed by `Clemens Raffler `__ New Highest position in raster stack algorithm

We added some raster value position analysis tools with this new QGIS version: The *Highest position in raster stack* algorithm evaluates on a cell-by-cell basis the position of the raster with the highest value in a stack of rasters. Position counts start with 1 and range to the total number input rasters. The order of the input rasters is relevant for the algorithm. |image54| This feature was developed by `Clemens Raffler `__ Load processing results to layer group

Users can now optionally set a group name which ensures that the resulting output layers added to the project when using the *Open output file after running algorithm* option are grouped together. This allows all outputs from several processing algorithms to be grouped so that they may be easily located in the layer tree and be removed, exported, or have their visibility toggled easily. |image58| This feature was developed by `Germán Carrillo `__ Add zonal statistics algorithm which creates new output

Previously, when calculating zonal statistics, the algorithm always updated the original data source, adding additional fields. A new zonal statistics algorithm has been added which creates a new output instead. This functionality is an implementation of the `29504 feature request `__. This feature was developed by `Matthias Kuhn `__ Add geometry processing parameter

Added a new ``QgisProcessingParameterGeometry`` for passing geometries as a parameter to processing alogrithms. This provides a way to pass simple geometries to algorithms without requiring an input layer. The immediates use case are: - Algorithms that might need to manipulate geometries in an atomic way. - Delegation from parent algorithms. - Use with headless qgis processing in stand-alone processing tools. Features: - The parameter is compatible with string parameters as it may pass Well-Known-Text as the value. - The current widget interaction is minimalistic as it only uses the input text widget for entering the value as WKT. This feature was developed by `David Marteau `__ Add an interface to determine whether it is safe for the application to exit

An interface for plugins and scripts to register custom logic to prevent the QGIS application from exiting was added. This allows plugins to determine whether it is safe for the application to exit. This has made it possible to allow plugins to determine whether there are unsaved changes which should be saved or discarded before allowing QGIS to exit, functionality which has already been implemented in the console script editor, preventing data loss by prompting users when there are unsaved changes rather than silently shutting down the application. This feature was developed by `Nyall Dawson `__ Application and Project Options ------------------------------- List available GDAL vector drivers

A *Vector Drivers* tab is now available within the QGIS GDAL Settings window, which lists all the available GDAL vector drivers and allows users to toggle their active state. Where several drivers may be used to open data of a specific type, users may now modify these settings to ensure that the intended driver is used when importing specific vector data types. For example, the FileGDB and OpenFileGDB drivers are both capable of being used to import .gdb files, but if the data file has a version of 9.x, the FileGDB won't be able to open it. In this instance, a user may disable the FileGDB driver and ensure that the data is loaded using the OpenFileGDB driver instead. This functionality directly addresses the limitations outlined in `Issue 18738 `__. |image59| This feature was developed by `Alexander Bruy `__ Detect GRASS installation folder on MacOS

MacOS previously had a platform-specific custom parameter setting Grass7Utils.GRASS\_FOLDER. This caused crashes for many users with multiple QGIS installations or who had some invalid folder settings. The parameter has been removed and a GISBASE environment variable has been introduced instead, which is commonly used in GRASS scripts as the "root" installation directory, emulating the behavior used for GRASS detection in Windows environments. If GISBASE is not present (default), a search is performed for grass folders in ``QgsApplication.prefixPath()`` (when packaged in bundle format). If not found, the standalone GRASS instance is searched for. The new behaviour for GRASS is in-line with the methodology used for the GDAL and SAGA processing tools. This resolves `Issue 38595 `__. |image60| This feature was developed by `Lutra Consulting (Peter Petrik) `__ Browser ------- Expose fields in the Browser

First part of QEP https://github.com/qgis/QGIS-Enhancement-Proposals/issues/171 Exposes field columns in the browser for providers that implement connections API: - PG - GPKG - Spatialite - MSSQL The following operations are supported on fields: - add new field - delete field |image61| |image62| This feature was developed by `Alessandro Pasotti `__ Data Providers -------------- ArcGIS Vector Tile Service connections

An option to create connections for ArcGIS Vector Tile Services was added to allow users to easily load vector tile layers from ArcGIS Server vector tile services. It also added support for authentication, configuration, and custom referer string to vector tile connections. This change adds explicit UI options for adding and configuring connections to ESRI vector tile services. While these services use the standard vector tile framework for data retrieval, they can be directly added by creating a connection using the VectorTileService API endpoint on the ArcGIS server. After a user adds a layer from a VectorTileService, the server's default styling and labeling for the layer is automatically loaded. |image63| This feature was developed by `Nyall Dawson `__ Trust layer metadata propagation

The trust flag at the project level is only used to read the vector layer extent from xml, not from the provider. This flag was not available at the vector layer and data provider level. A new QgsMapLayer reading flag to propagate the trust layer metadata for the project's read flag and a new provider flag to trust the datasource config. Trusting the datasource config allows the provider to use estimated metadata, ensures the primary key is unique and that the detectable geometry type and SRID are the same as the requested. This feature was developed by `rldhont `__ Add support for virtual columns in Oracle

Support for virtual (generated) Oracle columns has been added and is defined this way: ``sql CREATE TABLE QGIS.GENERATED_COLUMNS ( "pk" INTEGER PRIMARY KEY, "generated_field" GENERATED ALWAYS AS ('test:' || "pk") VIRTUAL)`` **Note:** It's not possible to define a generated column on an SDO\_GEOMETRY field in Oracle. For now, when creating a new feature, the generated field is editable and should not be. A new API method needs to be added to retrieve readonly field from the provider as discussed in `Issue 35995 `__. This feature was developed by `Julien Cabieces `__ Add advanced options for data imports

New functionality has been introduced which allows advanced parameters to be specified when importing layers using the OGR data provider, opening a vast range of new possibilities, especially when working around expected dataset issues. |image64| |image65| This feature was developed by `Even Rouault `__ QGIS Server ----------- QGIS Server WFS3 API Sorting

Adds sorting functionality to the QGIS Server WFS3 API This feature was developed by `Alessandro Pasotti `__ QGIS Server landing page plugin

A Landing Page Plugin for QGIS Server was created, which is a C++ port of https://github.com/elpaso/qgis-server-landing-page-plugin |image66| This feature was developed by `Alessandro Pasotti `__ Environment variable to disable GetPrint and to not load layouts

A new ``QGIS_SERVER_DISABLE_GETPRINT`` environment variable was added to QGIS Server which prevents the loading of layouts when projects are read and disables the WMS GetPrint request, improving the read time of projects. This feature was funded by `Ifremer `__ This feature was developed by `3Liz `__ Environment variable to trust layer metadata with server settings

Trust layer metadata can be defined at the project level. A new project reading flag was added which allows the forcing of trust layer metadata. For QGIS server, the trust layer metadata option can be overridden with ``QGIS_SERVER_TRUST_LAYER_METADATA`` environment variable. This feature was funded by `Ifremer `__ This feature was developed by `3Liz `__ Notable Fixes ------------- Bug fixes by Even Rouault


Using Volunteered Geographic Information to measure name changes of artificial geographical features as a result of political changes: a Libya case study

Over the past few years, political systems have changed in several countries of the Middle East as a result of citizen revolutions on the ruling regimes. These geopolitical changes have had effects on the names of artificial geographical features, such as roads and schools. Many of the names, especially those that were associated with previous regimes, were changed to become associated with the revolutions, their dates, their leaders, or their martyrs. The recent change in the paradigm of Web use towards data sharing and crowd-sourcing in the Web 2.0 provides new opportunities to get insight into a local community’s perception of political events. Crowd-sourced spatial data, often referred to as Volunteered Geographic Information (VGI), can be contributed and accessed through various websites and data repositories. These data can supplement traditional data sources, such as road maps hosted by governmental offices. Libya’s governmental maps of urban infrastructure are scarce and incomplete. This provides an incentive for citizens and grassroots groups to collect and generate spatial data on their own and to express changed realities of feature names by the means of crowd-sourced mapping. Using two districts in Libya this study evaluates for five Web 2.0 platforms (OpenStreetMap, Wikimapia, Google Map Maker, Panoramio, and Flickr) to which extent VGI reflects name changes of geographical features as a result of the revolution in 2011. Other data sources, such as school directories posted by teachers on Facebook, serve as additional information for feature name change detection. Results show that the extent to which VGI reflects name changes based on the 2011 revolution in Libya varies strongly between VGI data sources. VGI provides a useful supplement to limited governmental resources to better understand how names of artificial geographical features are affected by changes in political systems.

Šis ir abonementa satura priekšskatījums, piekļuve caur jūsu iestādi.


Skatīties video: How to use clip tool in QGIS