28
Vad är PostGIS? Hmm, PreGIS måste vara papperskartor .......,  men vad är PostGIS.....  ?

Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Vad är PostGIS?

Hmm, PreGIS måste vara papperskartor......., men vad är PostGIS.....  ?

Page 2: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Man ser det ofta skrivet PostgreSQL/PostGIS

Vad menas?

PostgreSQLPostgreSQL är en databasprogramvara motsvarande:Microsoft SQL ServerMicrosoft AccessOracleDB2Osv, osv

PostGIS är att tillägg till PostgreSQLsom ger PostgreSQL möjligheter att hantera spatiala data

Page 3: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data.

Om man är van att hantera GIS I desktop­miljö som tex Arciew 3.x, ArcMap, Mapinfo  eller liknande så är antagligen första tanken att PostGIS är bara ett annat lagringsformat istället för shape eller liknande.

I webbapplikationer är också PostGIS ofta använt som lagringsformat I bakgrunden.

MEN .......

Page 4: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

PostGIS kan så mycket mer

Förutom att lägga till nya datatyper till PostgreSQL databasen så följer det också med ett stort antal funktioner.

Det förnämliga är att dessa GIS­funktioner hanteras av databasen som vilken annan funktion som helst. Det är databasen, PostgreSQL som räknar ut det bästa sättet att kombinera de olika funktionerna för att det skall gå så snabbt som möjligt. 

Page 5: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

SELECT namn FROM dalarnas_kommuner;

Detta är en sql­sats som kan resultera I någonting som tex:

namn­­­­­­­­­­­­­­AvestaBorlängeFalunGagnefHedemoraIdre/Särna/GrövelsjönLeksandLudvikaMalungMoraOrsa RättvikSmedjebackenSälenSäterVansbroÄlvdalen

Det fungerar I alla databaser som förstår SQL

TexMS AccessMS SQL ServerOraclePostgreSQL

Page 6: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Men om vi har PostGIS installerat och har en tabell som inte bara innehåller namnen utan också kommunernas polygoner

Då kan vi skriva tex

SELECT namn, the_geom FROM dalarnas_kommuner;

Och få tillbaka:

Page 7: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Vansbro;0106000020BE0B00000100000001030000000100000083040000E8479FE01D1B1D41FB9FEC6ED79759416A94F34FB11B1D41Malung­Sälen;0106000020BE0B0000010000000103000000010000006C0A0000F0507E8A8EA6184120CF4BC0DEFA5941A188950A9FA61841Gagnef;0106000020BE0B0000010000000103000000010000006B090000CD70A69536DE1E41D3C2FD13CCA45941F0F310583EDF1E41Leksand;0106000020BE0B000002000000010300000007000000481400005B971C91C91F1E4164E86E1D26C25941849B30AFF11F1E41Rättvik;0106000020BE0B00000300000001030000000100000016000000215349EF83341E414D653E601FBD5941BA20AC5DF4361E41Orsa;0106000020BE0B000001000000010300000001000000D00700008F838721A3741D41225D7F38B10A5A41D2AE876B92741D41Älvdalen;0106000020BE0B0000010000000103000000010000007D080000F80BAD55CFB21641C5F2F10E19545A418ED88FCDDCEC1641Smedjebacken;0106000020BE0B0000020000000103000000010000000A000000744EA9BB7A531F414BDEBFA53A725941090A423841511F41Mora;0106000020BE0B0000020000000103000000010000001C000000EB465694AC361E4174AF297E7FBD594147DE44EE64371E41Falun;0106000020BE0B00000800000001030000000100000007000000F99E737BCD951F41E0302BC288B359415E9A566598951F41Borlänge;0106000020BE0B00000400000001030000000100000068000000EB5491CE85F51F410741BEF4497F5941342217989FF51F41Säter;0106000020BE0B000001000000010300000003000000A60800003C8230F43F2121414893875529A1594146A5EAD71D212141Hedemora;0106000020BE0B0000010000000103000000010000005D040000FF262235D25A2141E062FFB69596594126DDB047A05E2141Avesta;0106000020BE0B000001000000010300000001000000B8030000B9703B1531A82141DE2B3E318589594136A8249D66AB2141Ludvika;0106000020BE0B00000200000001030000000100000019000000F62FF6630A491F416411E63096805941C949B10B3B481F41

Wow! Imponerade?

Page 8: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Ok, det sa inte så mycket

Men om vi ber om att få tillbaka the_geom i textformat istället: 

SELECT namn, ST_AsText(the_geom) FROM dalarnas_kommuner;

Och få tillbaka:

Page 9: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Vansbro;MULTIPOLYGON(((476871.469357608 6709085.73319244,476908.32807762 6708983.84571009,476938.569685915 6Malung­Sälen;MULTIPOLYGON(((403875.635247483 6810491.00462702,403879.760336051 6810468.68995297,403893.345391391 Gagnef;MULTIPOLYGON(((505741.646142733 6722352.31236334,505807.58600217 6722348.82274123,505805.848285739 6Leksand;MULTIPOLYGON(((493554.391710629 6752408.45989427,493564.42108386 6752406.67278899,493571.853474744 6Rättvik;MULTIPOLYGON(((494880.983678149 6747261.50380833,495037.091476928 6745313.12277712,494915.032422609 Orsa;MULTIPOLYGON(((482600.782743507 6826692.88277367,482596.605009777 6826683.38571284,482590.906649911 Älvdalen;MULTIPOLYGON(((371891.833667933 6901860.23351735,375607.200744041 6900405.30835683,377318.391584888 Smedjebacken;MULTIPOLYGON(((513246.68326304 6670570.58983571,513104.30493942 6670402.8648105,513022.491410882 667Mora;MULTIPOLYGON(((495019.144860371 6747645.97129427,495065.232684587 6747641.5879371,495084.763103153 6Falun;MULTIPOLYGON(((517491.370558247 6737443.03388616,517478.098963177 6737410.8297189,517396.783658645 6Borlänge;MULTIPOLYGON(((523617.451726271 6683943.82411218,523623.898525748 6683778.95122592,523625.274225587 Säter;MULTIPOLYGON(((561311.976932592 6718629.33639986,561294.921712079 6718604.56247125,561196.503554728 Hedemora;MULTIPOLYGON(((568681.103776187 6707798.85933754,569168.140021239 6707000.59412815,569224.236644557 Avesta;MULTIPOLYGON(((578584.541469119 6694420.76941964,578995.306920296 6694177.08911342,579149.971146056 Ludvika;MULTIPOLYGON(((512578.597618818 6685272.76404223,512526.761418488 6685259.15464207,512505.305031116 

Page 10: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Eller så kan vi ta in samma tabell I QGIS

Page 11: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Ok, nu har vi alltså våra kommuner liggande I PostGIS.Och ??....

Tex så kan vi ta fram arealen och sortera kommunerna på areal med största först:

SELECT namn, ST_Area(the_geom) as areal FROM dalarnas_kommunerORDER BY ST_Area(the_geom);

Namn areal­­­­­­­­­­­­­­­­­­­­­­­­­­Älvdalen 7181825812.02954Malung­Sälen 4334800351.50391Mora 3126902024.13403Falun 2286147223.44165Rättvik 2147645359.67383Orsa 1806522832.78857Vansbro 1665607163.07153Ludvika 1656379207.64697Leksand 1422736669.07739Smedjebacken1061635436.9646Hedemora 933380369.596191Gagnef 813834459.520508Avesta 672367605.668213Borlänge 638828959.19751Säter 627478468.49292

Och det går fortMycket fortDetta tog 11 ms

Page 12: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Nytt exempel, en skogsbruksplan

Page 13: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

SELECT ST_Distance(b.the_geom, v.the_geom) AS avstånd FROM bestand_ytor b, vatten v where v.namn='Rattsjön' and b.avdnr=95;

Exempel på distansfunktion

avstånd­­­­­­­­­­­­­­­­­­­262.905890060985

Page 14: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

5 35 65 95 125

155

185

215

245

275

305

335

365

395

425

455

485

515

545

575

605

635

665

695

0

10000

20000

30000

40000

50000

60000

70000

meter från väg

m3sk

Ett annat distansexempel

Ackumulerad volym med ökande avstånd från väg Utifrån beståndens centrumspunkt.

Page 15: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

SELECT SUM(d.vol)::integer, n+5 AS klass FROM(SELECT DISTINCT ON (a.gid) a.gid, ST_Distance(ST_Centroid(a.geom), b.geom) dist, ST_Area(a.geom)/10000*a.m3skha as vol from bestand_ytor a inner join(SELECT * FROM veger WHERE typ IN (21,22)) b  ON ST_Dwithin(a.geom, b.geom, 1000) ORDER BY a.gid, ST_Distance(ST_Centroid(a.geom), b.geom)) d right join generate_series(0, 700, 10) as n on d.dist>=n and d.dist < n+10group by n order by n

0.9 sekunder

Sqlkoden som ger data till diagrammet

Page 16: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

En karta med de delar av bestånd som ligger mer än 300 meter från väg

Page 17: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

CREATE TABLE far_away ASSELECT ST_CollectionExtract(st_difference(a.geom, b.geom),3) AS the_geom,a.* FROM (SELECT ST_Union(ST_Buffer(geom, 300)) AS geom FROM veger) b CROSS JOIN bestand_ytor a ;

1,4 sekunder

Sqlkoden som ger kartan

Page 18: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Utifrån denna karta kan man tex skapa en Tabell med arealerna per huggningsklass300 meter från väg

SELECT hkl, (SUM(ST_Area(the_geom))/10000)::integerFROM far_awayGROUP BY hkl ORDER BY  SUM(ST_Area(the_geom)) DESC

0,003 sekunder

hkl arealR2 24

G1 19

S2 7

3

S1 1

G2 0

ÖF 0

R1 0

K1 0

Page 19: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Här har jag tagit och skurit ut den del av avdelningarnaSom ligger mellan 5 och 10 meter från vägmitt.

Page 20: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Geography type

Från version 1.5 av PostGIS

Hanterar oprojiserad data I srid 4326

Funktioner ger svar I meter

Betydligt mer avancerade algoritmer, därför långsammare

Med andra ord:Om ni jobbar över ett mindre område, tex Sverige: Använd projiocerade data.Om ni jobbar över stora områden som ger  för stora avvikelser I en och Kartsystem så är det antagligen bättre att lagra I geography type.

Kan anges vid lagring eller så kan man få geography tye genom en omvandling under körning

Page 21: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

PostGIS goes 3D

Varför hantera GISdata I 3D?

* Visualisering, tex byggnader I en stad eller landskapets höjdskillnader* Mer komplexa analyser där hänsyn tas till Z­koordinaten

Page 22: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

PostGIS goes 3D

PostGIS har länge kunnat hantera punkter, linjer och polygoner I 3DSamt haft en del funktioner som har haft stöd för 3D,Helt eller delvis

Det som nu tillkommer är:

Page 23: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

PostGIS goes 3D

Nya datatyper:

Polyhedralsurface är sammanfogade polygoner

TIN är sammanfogade trianglar

Page 24: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

PostGIS goes 3D

Nya 3D­funktioner:

* ST_3DDistance* ST_3DClosestPoint* ST_3DShortestLine* ST_3DDWithin

* ST_3DMaxDistance* ST_3DLongestLine* ST_3DDFullyWithin

Page 25: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Andra intressanta nya funktioner

ST_Split(geometry, geometry)

select st_split(ageom, bgeom) as the_geom from(Select 'POLYGON((1 1, 1 10,10 10, 10 1,1 1))'::geometry as ageom, 'LINESTRING(0 3, 15 20)'::geometry as bgeom) g

Page 26: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Andra intressanta nya funktioner

ST_Snap(geometry, geometry, tolerance)

A B NY_A B

SELECT ST_Snap(A, B, 2.0) as NY_A 

Page 27: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

POSTGIS Raster

Integreras I PostGIS I version 2.0

Man kan idag göra en overlay mot et vektorlager

Man kan använda mapalgebra på ett lager, det a på gång med två lager.

Hur kan man titta på rasterdatat?

Page 28: Vad är PostGIS? - Geoforum · 2011-03-29 · Vad PostGIS kryddar PostgreSQL med är först och främst nya datatyper för att kunna lagra geometrisk och geografisk data. Om man är

Tack för mig!

Nicklas AvénE­post: [email protected]: http://blog.jordogskog.noHttp://www.postgisonline.org