Mer

Hur konverterar jag en skärmposition till geografiska koordinater?

Hur konverterar jag en skärmposition till geografiska koordinater?


Jag letar efter resurser som förklarar hur jag ska konvertera skärmkoordinater (den punkt som jag väljer på skärmen) till geografiska koordinater (lat / lon).

Jag vill bygga ett program där jag, i den förenklade versionen, kan välja en punkt från en karta på skärmen och de geografiska koordinaterna skickas till min databas. Jag har en kakeltjänst som serverar rasterplattor från en .MBTILES -fil, genererad från OSM -data som lagras i en Postgres -databs. Klienten skulle troligen byggas med .NET, troligen MVC för en webbapplikation eller en WPF för ett Windows -skrivbordsprogram.

Jag letar efter koncept så att jag kan göra ytterligare undersökningar på egen hand för att ta reda på vad jag behöver göra härnäst. Vilka är de bästa metoderna för att göra detta?


För det första hjälper det att veta vad du gör i allmänt använda termer. I det här fallet är det en invers projektion eller a förkastelse när du går från projicerade (eller plana) koordinater "tillbaka" till geografiska (eller sfäroida) koordinater.

För det andra måste du veta vilket projekterat koordinatsystem du har på skärmen för att ange inversen. Eftersom OSM inte är bekant med OSM och hittills endast baserat på detta show-a-kml-som-använder-longitud-och-latitud-epsg4326-i-google-osm-projekt använder OSM CRS (koordinatreferenssystem) känd som EPSG: 3857.

För det tredje anger CRS inte bara projektionsmetoden utan också utgångspunkt - detaljer om ellipsoiden som används för att representera jorden. Det hjälper att förstå det för att göra nästa steg korrekt. Du behöver dina geografiska koordinater själva för att vara på rätt datum/ellipsoid.

För det fjärde bör du hitta ett befintligt mjukvarubibliotek/-verktyg som, med tanke på dina två CRS: er-projicerade och oprojekterade-och några projicerade koordinater, omvandlar (oprojektar) dina koordinater till lat-long. PostGIS själv gör en del av det eller använder GDAL/OGR eller andra.

Eftersom många reprojektionsverktyg bara utgår från mappningsenheter i "verkliga världen" (t.ex. m eller ft) och dina startenheter är skärmpixlar, kan du Maj behöver ett försteg 4: konvertera din skärm xy-pixlar till markerade XY-enheter, baserat på kartskalan. Det är en enkel skalär.


Översättning mellan kartesiska och skärmkoordinater

För mitt spel behöver jag funktioner för att översätta mellan två koordinatsystem. Det är väl främst matematisk fråga, men det jag behöver är C ++ - koden för att göra det och lite förklaring till hur jag löser mitt problem.

c) höger += x (ju mer är x -värde, desto mer till höger är punkt)

d) botten -= y (ju mindre är y, desto mer längst ner är punkten)

Jag behöver ett enkelt sätt att översätta från ett system till ett annat och vice versa. För att göra det, (tror jag) behöver jag lite kunskap som var är (0, 0) [övre vänstra hörnet i skärmkoordinater] placerat i de kartesiska koordinaterna.

Det finns emellertid ett problem att positionen i skärmkoordinaterna kan vara minus, vilket är ett nonsens för någon punkt i kartesiska koordinater efter att ha översatt det till skärmkoordinater. Jag kan inte sätta det övre vänstra hörnet av skärmkoordinaterna i (-inifity, +oändlighet) kartesiska koord.

Hur kan jag lösa detta? Den enda lösningen jag kan tänka mig är att placera skärmen (0, 0) i kartesiska (0, 0) och bara använda IV fjärdedel av det kartesiska systemet, men i så fall är det meningslöst att använda kartesiskt system.

Jag är säker på att det finns sätt att översätta skärmkoordinater till kartesiska koordinater och vice versa, men jag gör något fel i mitt tänkande med de minusvärdena.


Undvik koordinatöversättning

Du kanske kan undvika att översätta mellan koordinatsystem helt.

SVG: er inbäddade i HTML -sidan (snarare än en bild eller CSS -bakgrund) blir en del av DOM och kan manipuleras på liknande sätt som andra element. Ta till exempel en grundläggande SVG med en enda cirkel:

Du kan använda CSS -effekter på detta:

Du kan också bifoga händelsehanterare för att ändra attribut:

Följande exempel lägger till trettio slumpmässiga cirklar till en SVG -bild, tillämpar en sväveffekt i CSS och använder JavaScript för att öka radien med tio enheter när du klickar på en cirkel.


WebGL Factory

Tydligt förklarat, tack. Kan du ge motsvarande javascript -syntax?

Detta här är en mycket generisk lösning, så det finns ingen unik JavaScript -syntax. Vilken data (vilken matris och i vilket format) har du tillgänglig som inmatning?

Jag har en serie x, y, z -koordinater som en uppsättning hörn.
(till exempel:
0.205811 0.423383 0.403992
0.432068 0.603759 0.630250
1.032178 1.203868 1.230359)
Jag har problem med att gå från 2d till 3d. Jag följde den här algoritmen http://stackoverflow.com/questions/5613718/click-to-zoom-in-webgl som verkar likna den idé som beskrivs ovan, men koordinaterna som jag inte får motsvarar de faktiska hörnen Jag grafar. Några råd hur man gör detta?

Kan du beskriva mig mer i detalj vad du gör -är det 3D -& gt 2D -& gt 3D, är någon av koordinaterna matchande (t.ex. x och y är, z är inte)?

Jag planerar 3D -data. Jag skulle vilja kunna klicka på en skärmkoordinat (som i huvudsak är 2d) och härleda den närmaste motsvarande 3d -punkten. I exemplet tar det 2 godtyckliga värden för z: -1 och 0, gör sedan en subtraktion mellan de 2 matriserna. Inget av de resulterande värdena matchar. Kanske missuppfattar jag genomförandet?

Att bestämma Z -koordinaten är lite mer knepigt - du skulle behöva kolla efter en strålkorsning med ditt objekt/plan. Ändå bör x- och y -koordinaterna vara korrekta. Jag försöker förklara koden lite mer, kanske hittar du felet:

dubbel x = 2,0 * winX / klientbredd - 1
dubbel y = - 2,0 * winY / clientHeight + 1

- winX och winY - muskoordinater i förhållande till 3d -fönstret eller duken, inte hela skärmen eller webbläsarfönstret

- klientbredd och klienthöjd samma - storlek på duken/3D -fönstret

Matrix4 viewProjectionInverse =
invers (projectionMatrix *
viewMatrix)
Point3D point3D = ny Point3D (x, y, 0)
return viewProjectionInverse.multiply (point3D)

Här är det bara matte, med z = 0 som referens (du bör fortfarande få x och rätta). Denna multiplikationsordning är radborgmästare - kanske använder du kolumnborgmästare?

Du kan också kontrollera vad du får när du överför från 3D -punkten du fick (korrekt eller inte) tillbaka till 2D.

var world1 = [0,0,0,0]
var world2 = [0,0,0,0]
var dir = [0,0,0]
var w = event.srcElement.clientWidth
var h = event.srcElement.clientHeight
// beräkna x, y klipputrymme koordinater
var x = (event.offsetX-w/2)/(w/2)
var y = -(event.offsetY -h/2)/(h/2)
mat4.inverse (pvMatrix, pvMatrixInverse)
// konvertera klipputrymmeskoordinater till världsutrymme
mat4.multiplyVec4 (pvMatrixInverse, [x, y, 0,1], world1)

min skärm (i förhållande till duk) x, y är korrekta - jag försökte ett antal olika sätt att nå detta och fick samma värden varje gång.
sedan ta det inversa av min pvmatrix och sedan multiplicera det med [x, y, 0,1] (för tillfället kan vi säga att alla mina z ': or är 0). Då borde resultatet vara i världen1. Men när jag klickar på 1,1,0 får jag inget matchande resultat.

Koden ser bra ut för mig - det enda värdet som här är okänt är pvMatrix. Jag antar att en bör vara korrekt eftersom du återger din scen, men dubbelkolla om den har rätt värde. Jag skulle försöka (om du inte redan gjorde det) att konvertera world1 tillbaka till skärmutrymme (får du event.offSet -värdena igen?). Annars är det samma matematik som i min kod

Trevlig handledning, tydlig och bra läsning.

Det enda lilla jag märkte var:

Matrix4 viewProjectionInverse = invers (projektionMatrix * viewMatrix)

Matrisens multiplikationsordning:

Multipliceringsordning bör ändras till att vara:

Tack för en bra handledning.

Hej Ben, tack för kommentaren, uppskattar det mycket! När det gäller matrisordningen: multiplikationsordningen är faktiskt en eftertraktningsgrej. Beroende på vad du tolkar punkter som kolumn- eller radvektorer och med rad- eller huvudkolumnläge kan ordningen ändras. I detta specifika fall här antog jag att punkterna var radvektorer och matriseraden major (t.ex. translationskomponent i matrisindexen 12, 13 och 14). Skriv ner på ett papper arbetspunkten*värld*vy*projektion i matematisk notering så förstår du vad jag menar.

P.S. Jag planerade i alla fall att ha ett inlägg eller två om transformationer i detalj, tack för att du påminde mig :)

Bra tutorial Denis! Några punkter:

1) Kan du beskriva vad du exakt gjorde när du gjorde en 3D till 2D -konvertering. Koden är bra, men för mig ger den lite förskjutningsfel, så för att rätta till det måste jag förstå vad koden försöker göra.

2) musplockningslänk fungerar inte.

Hy Amit, förlåt för den trasiga länken - jag försöker hitta ett bra substitut för det (var någon pdf på nätet där jag först såg dessa beräkningar för några år sedan, och kommer inte ihåg nu hur det hette längre) .

Beträffande 3D- & gt2D-konverteringen. hela processen kan delas upp i några enkla steg, förutsatt att vi har en 3D -punkt i & quotabsoluta & quot -koordinater. Först försöker vi flytta denna 3D till relativ kamerarum genom att multiplicera den med vymatrisen. Därefter multipliceras produkten med projektionsmatrisen för att få punkten till klippkoordinater.

Eftersom projektions- och vymatrisen är känd i början multiplicerade jag dem först och sedan resultatmatrisen med punkten (inte nödvändigt för en punkt, men tänk att du hade 50 000 poäng att konvertera av vilken anledning som helst).

När dessa steg är klara får vi en punkt i normaliserat koordinatutrymme ([-1,1], [-1,1]). Vi omvandlar denna 2D -punkt till domänen ([0,1], [0,1]). Nu, multiplicera detta med fönsterbredd/höjd får vi pixelkoordinaterna för skärmen.

Mindre fel måste förväntas (särskilt på grund av avrundningen när du får de normaliserade koordinaterna). Du kan försöka specificera den runda funktionen bättre - kanske använda den här
http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm

& quotNär dessa steg är gjort får vi en punkt i normaliserat koordinatutrymme ([-1,1], [-1,1]) & quot. På vilket sätt?

Jag gjorde det genom att dyka x, y, z klippa koordinater genom att klippa koordinat W. (som representerar skalningsfaktorn för scenen).

Missade du det här steget eller var det verkligen inte nödvändigt?

Enligt teorin bör det övervägas och uppdelningen bör göras. I det här fallet antog jag dock att w -koordinaten är 1 och konsekvent i hela datan (därför ingen uppdelning, jag bör påpeka detta i inlägget).

Kolla in dessa två länkar här, kanske de hjälper:

Hur som helst, vad är det exakta problemet du har?

Jag arbetar med en prototyp som krävde att jag plockade och 3D- & gt2D-transformation. Jag har gjort båda men att ta reda på att göra normalisering tog betydande tid. Jag tror att det skulle vara en bra idé om du förklarar normaliseringssteget i inlägget.

Jag tog också W = 1 först men efter att ha multiplicerat [x, y, z, W] med vymatris och projektionsmatris blir W & gt1 och det var därför det var ett strikt behov av att jag skulle dela x, y med W.

Jag läste konverteringsfunktionen get3dPoint men jag förstod inte hur jag skulle använda den. Till exempel har jag en bild av en punkt med koordinater (x, y) respektive (2.3) hur kan jag hitta Point3D (x, y, z).

Hej Denis,
Stort tack för handledningen. Jag undrade om du har en ledig stund att hjälpa mig att lösa detta. Jag har byggt exemplet i javascript, men jag har lite problem med att konvertera tillbaka från en 3d -punkt till xy. Med andra ord, tillämpa viewProjectionMatrix tillbaka på 3d -punkten för att få det normaliserade skärmkordet.

// börjar med de nomaliserade skärmkorten:
screen3D [0] = 0,5
screen3D [1] = 0,5
screen3D [2] = 0
screen3D [3] = 1

var viewProjectionMatrix = Matrix.mult (projektionMatrix, viewMatrix)
var invViewProjectionMatrix = Matrix.inverse (viewProjectionMatrix)

// tillämpa invers projektionsvy matris få oss in i världens rymd
var worldM = Matrix.multTranslate (invProjectionViewMatrix, screen3D)

// Jag kan multa denna worldM matix med viewProjectionMatrix nu för att komma tillbaka till mina normaliserade skärmkord.

var normScreenM = Matrix.multTranslate (projectionViewMatrix, worldM)

// Men tar WorldPoint -koorden.
var worldPoint = Matrix.getTrans (worldM)
//. och att multiplicera projectionViewMatrix till det fungerar inte
var normScreenM2 = Matrix.multTranslate (projectionViewMatrix, worldPoint)

Så jag får inte de normaliserade skärmkorten från produkten från (worldPoint * projectionViewMatrix). Jag kan bara få tillbaka dem om jag har hela matrisen att multiplicera (worldM * projectionViewMatrix).
Jag försökte tillämpa det omvända alternativet som en hälsokontroll, se till att allt var utcheckat. Tyvärr är det något jag har missat. Jag kan inte återgå till mina normaliserade skärmkoder som samarbetar med worldPoint så jag skulle verkligen uppskatta det om du har en stund/idé om vad som är fel för att hjälpa mig att lösa denna hjärnbanan.

den tydliga och verkliga vyn från de senaste displayenheterna gör vår upplevelse verklig. bildskärmssystemet kan levas mer med rätt stöd .. för vackra hemgardiner och många fler kan du besöka ..
Projektionsskärmsföretag
Teaterridå & quot

Mycket hjälpsam artikel, tack! :) Jag skrev faktiskt en liknande artikel för att utföra samma konvertering, men jag arbetar specifikt i Maya. För personer som har problem med normaliseringsdelen, kanske du kommer att hitta det här användbart: http://www.gouvatsos.com/how-to-transform-3d-coordinates-to-2d-screenspace-and-vice-versa

Om skärmens ursprung finns i nedre vänstra hörnet istället för uppe till vänster, vad skulle du behöva ändra för att konvertera från 2d- & gt3d?

(1) dubbel y = - 2,0 * winY / clientHeight + 1

(2) dubbel y = 2,0 * winY / clientHeight - 1
Så du bör använda samma tillvägagångssätt som med x-axeln.

Förutom det får du samma resultat om du ersätter & quotwinY & quot med & quotclientHeight - winY & quot in (1).

Ska du inte dividera med z för att få skärmkord?

Jag gjorde detta med glm, och det verkar fungera (faktisk kod):

glm :: vec2 getScreenCoord (glm :: vec3 pos) <

glm :: vec4 p = cameraPerspectiveMatrix*glm :: vec4 (pos, 1.0)
glm :: vec2 s
s.x = int (((p.x/p.z + 1.0) /2.0) * winWidth + .5)
s.y = int (((1,0 - p.y/p.z) /2,0) * winHeight + .5)
återvända s
>

Du kan också extrahera z-coord från z-buffert, något liknande

GLfloat zbuf
getPixelInfo (x, y, GL_COLOR_ATTACHMENT0, GL_DEPTH_COMPONENT, GL_FLOAT och ampzbuf)
dubbel znorm = 2,0 * zbuf - 1,0
dubbel zreal = 2.0 * clipNear * clipFar / (clipFar + clipNear - znorm * (clipFar - clipNear))

Jag tillbringade de senaste timmarna med att försöka felsöka min kod och läste ett gäng lösningar som sa att dela med w, men det hjälpte inte. Slutligen hittade jag din kommentar och dividerad med z (förutom w, om det gör något användbart) och det löste mitt problem helt! Jag utesluter också återgivningsetiketter (mitt användningsfall för den här koden) när z & lt 0.0 (dvs. bakom kameran), liksom det degenererade fallet när w = 0. Tack för att du lade den här kommentaren! Med vänliga hälsningar, Framtiden.

Se http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/MousePicking för en detaljerad förklaring av hur x och y beräknades utan behovet av z.

När det gäller glm är detta ett allmänt kodande tillvägagångssätt skrivet med WebGL i åtanke, utan användning av några speciella bibliotek.

Jag har problem: Jag kan inte hitta någon algoritm eller ett program som beskriver hur man gör omvandlingspunkt 2D till 3D
hur hittade jag Z
punkt (x, y) -& gt -punkt (x, y, z)
snälla hjälp mig

Till slut kom jag på det. Problemet är när du ställer in kamera Z till ett särskilt värde (i artikel 0), då beräknar värld X och Y faktiskt att passa till det Z. Så när du vill beräkna X, Y världskoordinater måste du veta för vilken värld Z du hittar detta X a Y. När du väl vet det. Du kan beräkna kamerakoordinat Z som du äntligen kan använda för att beräkna värld X, Y som beskrivs i artikeln. Så hur hittar du kameranZ när du känner till worldZ? Du måste ta ett plan som innehåller worldZ -koordinat och har normal identisk med riktningsvektor (det är målet - eyeCoor) När du har det planet måste du förvandla det till kamerarum (till exempel genom att ta de punkter som planet innehållerc , spåra dem och gör sedan av dem igen). Och genom att sätta kamera X, Y till planet equatian får du kamera Z. Och det är det!

Vad är clientWidth, clinetHeight, winX, winY i 2d till 3d -konverteringsfunktionen? snälla hjälp.

Bild du har en poäng på (100, 200) på en 2D redering yta i storlek 640x480.

clientWidth == 640
clinetHeight == 480
winX == 100
winY == 200

Jag har en 4 2dlocator (animerad bakad) med en enkel plan geometri rotation och rörelse.
jag behöver:
är här ett enkelt mel -skriptkommando för att konvertera min 4 2dlocator till 1 3d -locator i mitten av 4 2dlocator.created 3d -locator med skala, transformera x, y och xyz rotaion.
är detta möjligt i maya jag behöver denna metod för att placera mitt polyplan i min 3D -scenvideo. med rotaion skala rörelse in3d men framsidan av projicerade videolager inget behov av z rörelse behöver matchas med samma skärmutrymme som utmatning av render video.
någon idé någon länk någon metod något skript någon programvara som gjorde detta
snälla hjälp mig

Jag arbetar med 3D-scanner. Jag kan inte förstå hur man konverterar pixelkoordinater till verkliga koordinater.

Till exempel har jag en datauppsättning som endast innehåller (x, y) koordinater för vissa punkter på objektet när det gäller pixlar, hur kan jag konvertera dem till verkliga enheter (dvs. cm eller mm)?

Vad är winx och winy i funktionen nedan? Är det bara skärmens bredd och höjd?

funktion Point3D get3dPoint (Point2D point2D, int bredd,
int höjd, Matrix viewMatrix, Matrix projectionMatrix) <

dubbel x = 2,0 * winX / klientbredd - 1
dubbel y = - 2,0 * winY / clientHeight + 1
Matrix4 viewProjectionInverse = inverse (projektionMatrix *
viewMatrix)

Point3D point3D = ny Point3D (x, y, 0)
return viewProjectionInverse.multiply (point3D)
>

Använd kontrollerna i kontrollfönstret för att helt ändra rörelsen smash -format. Kunder kan ändra antalet, vikten, tyngdkraften, tjockleken och effekten av smash -påverkan för att få evigt coola utseende. Motion 5 Effekter


Använd grader av visuell vinkel för att ställa in stimulans storlek och plats. Detta är naturligtvis beroende av avståndet som deltagaren sitter från skärmen såväl som själva skärmen, så se till att detta är kontrollerat och kom ihåg att ändra inställningen i Monitor Center om visningsavståndet ändras.

Rumsfrekvens: cykler per grad

Kräver: information om skärmbredden i cm och pixlar och visningsavståndet i cm

Det finns faktiskt tre varianter: 'deg', 'degFlat' och 'degFlatPos'

'Deg' : De flesta som använder grader av visuell vinkel väljer att anta att en grad av visuell vinkel sträcker sig över samma antal pixlar i alla delar av skärmen. Detta är faktiskt inte sant för vanliga plattskärmar - en viss synvinkel vid kanten av skärmen sträcker sig över fler pixlar eftersom det är längre från ögat. För måttliga excentriciteter är felet litet (ett 0,2% fel i storleksberäkning vid 3 deg excentricitet) men växer när stimuli placeras längre från mitten av skärmen (ett 2% fel vid 10 grader). För de flesta studier är denna form av beräkning att föredra, eftersom det inte resulterar i ett snedställt utseende av visuella stimuli, men om du behöver större precision vid långt excentriciteter väljer du ett av alternativen nedan.

‘DegFlatPos’ : Detta står för platta skärmar vid beräkning av positionskoordinater för visuella stimuli men lämnar storlek och rumsfrekvens okorrigerad. Detta innebär att ett jämnt fördelat rutnät av visuella stimuli kommer att se ut skevt i position men kommer

‘DegFlat’: Detta korrigerar beräkningarna av grader för planhet på skärmen för varje hörn av dina stimuli. Kvadratiska stimuli i periferin kommer därför att bli mer åtskilda men de kommer också att bli större och romska i pixlarna som de upptar.


Innehåll

Koordinater för platser tillhandahålls med hjälp av två uppsättningar nummer på ett enkelt kartesiskt koordinatsystem. På så sätt kan platser hittas med easting/northing (eller x,y) par. Som en konvention representeras paret vanligtvis österut först, norrut andra.

Till exempel är toppen av Mount Assiniboine (vid 50 ° 52′10 ″ N 115 ° 39′03 ″ W  /  50.86944 ° N 115.65083 ° W  / 50.86944 -115.65083) i UTM Zone 11 representerad av 11U 594934 5636174. Andra konventioner kan också användas, till exempel en trunkerad nätreferens, [2] som skulle förkorta exempelkoordinaterna till 949-361.

Falsk östlig

Det linjära värdet läggs till alla x-koordinater för en kartprojektion så att inga av värdena i den geografiska region som mappas är negativa. Ursprungspunkten för varje UTM -zon är skärningspunkten mellan ekvatorn och den centrala meridianen för varje zon. För att undvika att hantera negativa tal är den centrala meridianen för varje zon inställd på 500 000 meter öst.

Falskt norrland

Det linjära värdet som läggs till alla y-koordinaterna för en kartprojektion så att inga av värdena i den geografiska region som mappas är negativa. norden vid ekvatorn är inställd på 10 000 000 meter så ingen punkt har ett negativt värde.


Uppdatering

Jag uppdaterade metoden ConvertToCartesian, så att den tar True Anomaly (nu) beräknad från ConvertToKeplerElements -funktionen som en ingång. Sedan beräknar den excentrisk anomali (E), sedan beräknar medelavvikelse (Mt) från det. När ConvertToCartesian anropas i efterföljande slingor uppdateras Mt med det relevanta tidsteget. Sedan beräknar jag E igen från den uppdaterade Mt, sedan beräknar jag nu från den uppdaterade E. Detta löser de flesta fall. Problemet är att nu beräknas nu 180 grader från där det ska vara, vilket gör startpunkten för den visade banan 180 grader av.

I min ConvertToKeplerElements -funktion, enligt matematiken, nu = 2pi - nu om r.v & lt 0. Detta händer till exempel när jag ställer in de initiala r, v -vektorerna så att fartyget varken startar vid periapsis eller apoapsis utan någonstans mellan. Jag vet att detta är korrekt, men när jag beräknar nu- & gtE- & gtnu går den 180 graders vändningen förlorad i beräkningen.

Här är de relevanta delarna av den uppdaterade metoden ConvertToCartesian.

Här är det dåliga resultatet jag får:


Har du redan ett konto? Logga in här.

Tom Allensworth,
Grundare av AVSIM Online

AVSIM är en gratis tjänst för flygsimuleringsgemenskapen. AVSIM är helt bemannat av volontärer och alla medel som doneras till AVSIM går direkt tillbaka till att stödja samhället. Din donation här hjälper till att betala våra bandbreddskostnader, nödfinansiering och andra allmänna kostnader som dyker upp då och då. Tack för ditt stöd!

Donationsmål

Donera till vårt årliga allmänna insamlingsmål. Denna donation håller våra dörrar öppna och ger dig service 24 x 7 x 365. Din donation här hjälper till att betala våra bandbreddskostnader, nödfinansiering och andra allmänna kostnader som dyker upp då och då. Vi återställer detta mål varje nytt år för nästa års mål.


5 CFR § 531.214 - Fastställande av lön vid kampanj.

(en general. En byrå måste fastställa en anställd som ska betala grundlönen vid marknadsföring enligt reglerna i detta avsnitt, i överensstämmelse med 5 U.S.C. 5334 (b). Kampanjeregeln i 5 U.S.C. 5334 (b) och genomförandebestämmelserna i detta avsnitt gäller endast en GS -anställd som befordras från ett GS -betyg till ett högre GS -betyg. I överensstämmelse med § 531.206 måste alla allmänna lönejusteringar som träder i kraft samma dag som en kampanjåtgärd behandlas innan reglerna i detta avsnitt tillämpas.

(b) Geografisk konvertering. När en anställds officiella arbetsplats ändras till en ny plats där olika lönescheman gäller, måste byrån omvandla den anställde till tillämpliga lönescheman och grundlönen för den nya officiella arbetsplatsen baserat på den anställdes position registrera före kampanj enligt 531.205 innan du behandlar en samtidig kampanjåtgärd.

(c) Samtidig höjning inom betygsgraden. När en anställd har rätt till en höjning inom betyg eller en kvalitetsstegsökning som är effektiv samtidigt som en kampanj, måste byrån behandla den ökningen innan hanteringen av kampanjåtgärden.

(1. allmän. En byrå måste fastställa en anställd som ska betala grundlönen vid befordran med hjälp av standardmetoden i punkt d (3) i detta avsnitt eller den alternativa metoden i punkt (d) (4) i detta avsnitt, med förbehåll för den särskilda regeln i stycke (d) (5) i detta avsnitt för anställda som får en bibehållen skattesats före befordran. En bestämning om huruvida den alternativa metoden används istället för standardmetoden beror på de lönescheman som gäller för en anställd före och efter befordran, enligt punkt (d) (2) i detta avsnitt. I detta stycke (d) betyder hänvisningar till en anställds ränta eller intervall "före marknadsföring" kursen eller intervallet före marknadsföring men efter varje geografisk omvandling som krävs enligt punkt (b) i detta avsnitt.

(2) Bestämning av tillämplig metod. Följande regler styr beslut om vilken marknadsföringsmetod som ska användas:

(i) Tillämpa standardmetoden uteslutande om den anställde omfattas av samma lönescheman före och efter marknadsföring. Till exempel kan en anställd omfattas av det allmänna schemat och samma lokaliseringsschema före och efter marknadsföring.

(ii) Tillämpa den alternativa metoden om den anställde omfattas av olika lönescheman före och efter marknadsföring och om den alternativa metoden kommer att ge en högre betalningssats vid befordran än standardmetoden. Till exempel kan en anställd omfattas efter befordran av ett speciellt prisschema som inte gällde honom eller henne före befordran, och den alternativa metoden ger en högre skattesats.

(iii) Tillämpa standardmetoden under alla andra omständigheter, förutom att en byrå efter eget gottfinnande kan tillämpa den alternativa metoden för en anställd som omfattas av olika lönescheman före och efter marknadsföring, även om metoden ger en lägre skattesats än standardmetoden, men endast under följande villkor:

(A) Byrån bedömer att det skulle vara olämpligt att använda standardmetoden baserat på en slutsats att den högre lönen för tjänsten före befordran inte är tillräckligt relaterad till de kunskaper och färdigheter som krävs för tjänsten efter befordran och

(B) Byrån informerar den anställde om beslutet att använda den alternativa metoden före kampanjens ikraftträdande.

(i) Standardmetoden för att tillämpa marknadsföringsregeln presenteras i följande tabell:

Kampanjeregel - standardmetod
Steg A Om tillämpligt, tillämpa den geografiska konverteringsregeln i § 531.205 för att bestämma den anställdes (er) pris och intervall (er) för grundlön baserat på den anställdes rekordposition före marknadsföring och den nya officiella arbetsplatsen, enligt vad som krävs i punkt (b) i Den här delen. Ange också, om tillämpligt, alla samtidiga höjningar inom kvalitetsnivå eller höjning av kvalitetssteg, enligt kraven i punkt (c) i detta avsnitt. Använd den eller de resulterande grundlönen som befintliga räntor som gäller omedelbart före marknadsföring i steg B och C.
Steg B Identifiera medarbetarens befintliga GS-ränta (eller LEO-specialbaspris) i betyget före marknadsföring, och höj den med två GS-betygsökningar för det betyget.
Steg C Bestäm den grundläggande lönen som ska betalas (steg) eller steget som fastställs i steg B genom att tillämpa lokalbetalning eller specialtaxetillägg som gäller för det angivna betyget, baserat på den anställdes rekordposition före marknadsföring och officiell arbetsplats efter marknadsföring. (Om den ränta som fastställs i steg B ligger över intervallets maxvärde, använd samma lokalbetalning eller specialtaxetillägg som gäller för priser inom ränteintervallet.)
Steg D Identifiera det högsta tillämpliga ränteintervallet för den anställdes rekordposition efter marknadsföring och hitta den lägsta stegräntan i det intervallet som motsvarar eller överstiger den skattesats som fastställs i steg C. Detta är den anställdes betalningsbas för grundlön vid befordran. (Om den ränta som anges i steg C överskrider maxvärdet för ränteintervallet som identifierades i detta steg, är den anställdas betalningsränta den högsta räntan, eller, om den anställdes befintliga ränta är högre än den maximala räntan, en bibehållen ränta under 5 CFR -del 536 lika med den befintliga kursen.)

(ii) Exempel på standardmetod: En GS-11, steg 5, anställd i Los Angeles befordras till en GS-12-position i Kansas City. I Kansas City skulle en särskild prisschema gälla för den anställdes GS-11-position, men vid GS-12 gäller inget särskilt prisintervall i stället, bara ett lokalavgiftsintervall gäller. Således gäller olika lönescheman för den anställde i Kansas City före och efter marknadsföring. Byrån bestämmer att standardmetoden ger en högre ränta än den alternativa metoden eftersom den anställde omfattas av en särskild taxaschema före marknadsföring men inte efter marknadsföring. Byrån beslutar också att den inte kommer att åberopa undantagsbestämmelsen enligt punkt d (2) ) (iii). Byrån tillämpar standardmetoden enligt följande:

Steg A Tillämpa den geografiska konverteringsregeln för att bestämma baslönen för GS-11, steg 5, position i Kansas City. De lönescheman som gäller för den anställde i Kansas City är det allmänna schemat, lokalitetsschemat som är tillämpligt i Kansas City och det särskilda schemat som gäller för den anställdes position i Kansas City.
Steg B Med hjälp av det underliggande allmänna schemat, öka GS-11, steg 5, ränta med två inom-grade höjningar, vilket producerar GS-11, steg 7, hastighet.
Steg C Den betalningsbara (högsta) baslönen för GS-11, steg 7, är motsvarande GS-11, steg 7, specialavgift som skulle vara tillämplig på GS-11-positionen i Kansas City.
Steg D Det högsta tillämpliga ränteintervallet för GS-12-positionen efter kampanjen är GS-12-täthetsintervallet enligt Kansas City lokalitetshastighetsschema. Hitta den lägsta steghastigheten i det intervallet som är lika med eller överstiger GS-11, steg 7, specialränta från steg C. Den stegräntan är den grundläggande lönesatsen vid marknadsföring.

(i) Den alternativa metoden för att tillämpa marknadsföringsregeln, som innebär att man använder lönescheman som gäller före kampanjen och sedan omvandlar lön till ett annat schema som gäller efter kampanj, presenteras i följande tabell:

Marknadsföringsregel - alternativ metod
Steg A, B, C Samma som standardmetod i punkt (d) (3) i detta avsnitt.
Steg D Identifiera det högsta tillämpliga ränteintervallet för den anställdes betyg efter befordran baserat på hänsyn till eventuella lönescheman som gällde den anställdes rekordposition före marknadsföring (efter eventuell geografisk konvertering). (Tänk inte på lönescheman som endast gäller för den anställdes nya rekordposition efter marknadsföring. Till exempel, om en särskild specialtaxeplan endast gäller för en anställd rekordposition efter marknadsföring, bortse från det schemat när du tillämpar detta steg.) Hitta det lägsta steget i det högsta tillämpliga ränteintervallet som är lika med eller överstiger den ränta som anges i steg C. (Om räntan som anges i steg C överstiger det högsta till räntesortimentet som identifierats i detta steg, är den anställdas betalningsränta den högsta räntan, eller, om den anställdes befintliga ränta är högre än den högsta räntan, en bibehållen ränta enligt 5 CFR del 536 lika med den befintliga räntan.)
Steg E Convert the lowest step rate identified in step D to a corresponding step rate (same step) in the highest applicable rate range for the employee's new position of record after promotion. This is the employee's alternate payable rate of basic pay upon promotion. (If the rate derived under step D was a retained rate, determine the alternate payable rate of basic pay as provided in paragraph (d)(4)(ii) of this section.)
Step F If the alternate payable rate identified in step E exceeds the payable rate resulting from the standard method in paragraph (d)(3) of this section, the employee is entitled to the alternate rate upon promotion. Otherwise, the employee is entitled to the payable rate derived under the standard method, except as provided in paragraph (d)(2)(iii) of this section.

(ii) In applying step E of the table in paragraph (d)(4)(i) of this section, if the rate derived under step D was a retained rate, compare the retained rate to the highest applicable rate range identified in step E. If the retained rate exceeds the maximum of that rate range, the retained rate continues and is the employee's alternate payable rate upon promotion. If the retained rate is below the rate range maximum, the employee's alternate payable rate upon promotion is the maximum rate of the range (step 10).

(iii) Example of alternate method: A GS-7, step 7, employee in Atlanta is promoted to a GS-9 position in Washington, DC. The promotion involves not only a change in grade but also a change in the employee's occupational series. In Washington, DC, no special rate schedule would apply to a GS-7 or GS-9 position in the old occupational series, but a special rate schedule does apply to the GS-9 position in the new occupational series. Thus, different pay schedules apply before and after promotion, and the alternate method would result in a higher rate than the standard method. As provided in paragraph (d)(2)(ii) of this section, the agency must apply the alternate method and compare the result to the result derived under the standard method, as follows:

Step A Apply the geographic conversion rule in § 531.205 to determine the rates of basic pay for the GS-7, step 7, position in Washington, DC. Based on the GS-7 position before promotion (including the old occupational series), the pay schedules applicable to the employee in Washington, DC, would be the General Schedule and the locality rate schedule applicable in Washington, DC.
Step B Using the underlying General Schedule, increase the GS-7, step 7, rate by two within-grade increases, which produces the GS-7, step 9, rate.
Step C The payable (highest) rate of basic pay for GS-7, step 9, is the corresponding GS-7, step 9, locality rate in Washington, DC.
Step D If the employee were promoted to a GS-9 position in the old occupational series, the highest applicable rate range for that GS-9 position after promotion would be the GS-9 locality rate range in Washington, DC. The GS-9, step 3, locality rate is the lowest step rate in that range that equals or exceeds the GS-7, step 9, locality rate from step C.
Step E Convert the GS-9, step 3, locality rate to the higher GS-9, step 3, special rate that applies to the employee's position after promotion (including the new occupational series). That GS-9, step 3, special rate is the payable rate of basic pay upon promotion.
Step F Assume that the standard method would have compared the GS-7, step 9, locality rate directly to the higher GS-9 range of special rates and produced a rate of GS-9, step 1. Since the rate produced by the alternate method (GS-9, step 3) is greater than the rate produced by the standard method, the result of the alternate method is used.

(5) If employee was receiving a retained rate before promotion.

(i) If an employee's existing payable rate of basic pay before promotion is a retained rate, apply the applicable promotion methods in paragraphs (d)(3) or (d)(4) of this section as if the employee were receiving the maximum rate of the employee's grade before promotion.

(ii) If the payable rate of basic pay after promotion determined under paragraph (d)(5)(i) of this section is greater than the employee's existing retained rate, the employee is entitled to that payable rate.

(iii) If the existing retained rate is greater than the rate determined under paragraph (d)(5)(i) of this section, the retained rate must be compared to the highest applicable rate range for the position after promotion, as provided in 5 CFR 536.304. The employee is entitled to the lowest step rate in the range that equals or exceeds the retained rate or, if the retained rate exceeds the range maximum, to the retained rate.

(6) If employee is promoted from GS-1 or GS-2. In applying the promotion rule to an employee who is promoted from step 9 or 10 of grade GS-1 or GS-2, the value of two within-grade increases is determined by doubling the within-grade increase between step 9 and 10 for the applicable grade.

(e) Temporary promotions. Pay is set for an employee receiving a temporary promotion on the same basis as a permanent promotion. Upon expiration or termination of the temporary promotion, pay is set as provided in § 531.215(c). If a temporary promotion is made permanent immediately after the temporary promotion ends, the agency may not return the employee to the lower grade instead, the agency must convert the employee's temporary promotion to a permanent promotion without a change in pay.

(f) Corrections of demotions. The promotion rule in this section may not be used in correcting an erroneous demotion. (See § 531.215(e).)


In your App Builder Field Settings, expand More Field Settings to customize these properties.

Accuracy (m) Option

Accuracy (m) allows you to specify how accurate the GPS location must be in meters for the location. When acquiring a location from satellites, the first points reported by the hardware can often be inaccurate.

By choosing a focus on accuracy, GoCanvas will reject any reported location coordinates until the desired accuracy is met or until the timeout expires.

Timeout (ms) Option

Timeout (ms) allows you to decide the maximum amount of time, in milliseconds, to wait for location coordinates. If it takes to long, and accuracy hasn't been met, the location will be reported.

You can change this by turning on the force accuracy option (see below).

Force Accuracy Option

If you choose Force Accuracy, if the mobile app doesn't get the accurate location before timing out, no location will be captured.


Titta på videon: 144hz skärm, är det värt? Halojonssan