Vet du vad klockan är?

I helgen gick vi över till normaltid och mornarna blir lite ljusare i ett par veckor innan det blir nattsvart igen. Övergången till normaltid känns mer obegriplig än övergången till sommartid på våren, så kan vi inte införa sommartid som svensk normaltid och strunta i att ställa om klockan?

Om du är förvirrad om vad klockan är så kommer detta inlägg inte att hjälpa, men om du dessutom är intresserad av möjligheterna med PostGIS så kan det bli extra intressant.

Nedanstående SQL skript hittade jag på GitHub hos Vincent Picavet.

-- Open These views with QGIS
-- You can label the ticks view with this expression : "CASE WHEN m % 5 = 0 THEN h END" to get hour numbers
-- Set categorized styles on typ and unit to set different styles for dials, and for the hands
-- Please tweet your best clock designs with #PostGISClock hashtag
 
create or replace view ticks as
select
m as id
, case when m % 5 = 0 then 'h' else 'm' end as typ
, m % 5 as h
, m as m
, st_makepoint(
cos(m::double precision * -pi() / 30.0 + pi() / 2)
, sin(m::double precision * -pi() / 30.0 + pi() / 2)
)
from
generate_series(1, 60) as m;
 
create or replace view clock as
with hms (id, unit, length, nb, val) as (
values (1, 'h', 0.3, 12, extract('hour' from current_time))
, (2, 'm', 0.6, 60, extract('minute' from current_time))
, (3, 's', 0.9, 60, extract('second' from current_time))
)
select
hms.id
, st_makeline(
st_makepoint(0, 0)
, st_makepoint(
hms.length * cos(val::double precision * -pi() / 6.0 + pi() / 2)
, hms.length * sin(val::double precision * -pi() / 6.0 + pi() / 2)
)
) as geom
from
hms;

Om man kör detta på en PostGIS server så får man tillgång till två nya lager som kan läggas till i QGIS.

Screenshot from 2014-10-26 09:26:50Det framgick inte så tydligt hur skriptet skulle köras, så jag provade både DBmanager i QGIS och PgAdminIII, där jag tror att det var det senare som fungerade men jag är inte riktigt säker.

Hur som helst skapar skriptet två nya ”vyer” eller ”views” som man kan komma åt som PostGIS lager i QGIS. Klockans centrum har koordinaten 0,0 och urtavlan är placerad på avståndet 1 från centrum, det är med andra ord ett helt fiktivt koordinatsystem. Klockan uppdaterar heller inte sig själv utan man får panorera kartan eller på annat sätt uppdatera sidan för att få aktuell tid.

Detta är nu inte världens bästa och mest noggranna klocka, så glöm att planera in möten och arbetstid med denna som referens. Däremot så erbjuds några unika möjligheter att skapa olika utseende på klockan med hjälp av stilar i QGIS.

Hur har jag lyckats med att sätta etiketter vid punkterna som jag gjort?

Siffran är ett attribut och genom att multiplicera talet med sex så får man riktning från centrum i grader. Detta kan användas för att rotera etiketten:

Screenshot from 2014-10-26 09:38:17Detta roterar som sagt etiketten i förhållande till platsen, men vänder den inte upp och ned, vilket inte heller behövs.

Genom att sätta ankringspunkten i centrum och välja datadefinierad offset med ett uttryck, så kan man med lite trigonometri flytta ankringspunkten beroende på den vinkel som räknats fram ovan.

Screenshot from 2014-10-26 09:42:23Notera att i denna dialog så skall vinklar vara i radianer (därav multiplikation med 2 pi, delat med 360) och hela uttrycket är en textsträng på formatet X,Y. Det tog ett tag att lista ut detta då hjälpen både på engelska och svenska var något förvirrande.

Exemplet ovan belyser dels några möjligheter med PostGIS, men även kraften i datadefinierad åsidosättning i QGIS.

Annonser

Taggar:,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: