Skip to content

Instantly share code, notes, and snippets.

@rastermanden
Last active August 29, 2015 14:22
Show Gist options
  • Save rastermanden/1c9dd5e03e13b42f3add to your computer and use it in GitHub Desktop.
Save rastermanden/1c9dd5e03e13b42f3add to your computer and use it in GitHub Desktop.
workshop_postgis

#Workshop ##Hvordan bruger I PG? ##Hvilke versioner bruger I? ##Hvad vil I gerne lære ? ##Materiale fra tidligere heldags worshops http://www.septima.dk/haderslev-postgis/

http://www.septima.dk/kbh-postgis-kursus/

Smarte funktioner

###PostgreSQL COPY COPY kan bruges til mange ting. Kan importere/eksportere tabulare data.

####Hent data fra internettet direkte ind i PostgreSQL (husk PGAGENT)

Danmarks Statistik:

DROP TABLE IF EXISTS stat.folketal;
CREATE TABLE stat.folketal
(
  komkode character varying,
  tid character varying,
  antal integer
);
 
COPY stat.folketal
 FROM PROGRAM
  'curl "http://api.statbank.dk/v1/data/FOLK1/CSV?valuePresentation=Code&OMRÅDE=*&TID=2015K1"' CSV HEADER DELIMITER ';';

####Kopier til en CSV fil

COPY (SELECT * FROM kulturarv.fbb_view_bygning_fredede) TO 'c:\temp\test.csv'

###PGAGENT En smart "Scheduler" til at udføre opgaver som Backups, import af data, eksport af Spatial Suite konfigiuration.

  • En nem måde at sætte jobs op
  • Kan både køre SQL jobs samt almindelige CMD/BATCH jobs
  • Kan udvides med at sende emails

###Foregin Data wrappers Integration af data fra andre datkilder, som wfs, shapefiler, Tab filer, excel, direkte i PostgreSQL.

####Fredede og bevaringsværdige bygninger fra WFS

create extension postgis;
create extension ogr_fdw;
create schema kulturarv;


CREATE SERVER kulturarv
  FOREIGN DATA WRAPPER ogr_fdw
  OPTIONS (
    datasource 'wfs:http://www.kulturarv.dk/geoserver/wfs?',
    format 'WFS' );

DROP FOREIGN TABLE IF EXISTS kulturarv.fdw_fbb_view_bygning_fredede;

CREATE FOREIGN TABLE kulturarv.fdw_fbb_view_bygning_fredede (
  fid integer,
  geom geometry(POINT, 25832),
  gml_id varchar,
  bygningsid integer,
  fredningsstatus integer,
  bevaringsvaerdi integer,
  adresse varchar,
  kommune varchar,
  bbrnummer varchar,
  fredet varchar,
  ois_id varchar )
  SERVER kulturarv
  OPTIONS ( layer 'fbb:view_bygning_fredede' );

CREATE MATERIALIZED VIEW kulturarv.fbb_view_bygning_fredede AS

  SELECT fid, ST_SetSRID(geom, 25832)::geometry(POINT,25832), gml_id, bygningsid, fredningsstatus, bevaringsvaerdi, adresse, kommune, bbrnummer, fredet, ois_id
  FROM kulturarv.fdw_fbb_view_bygning_fredede;

REFRESH MATERIALIZED VIEW kulturarv.fbb_view_bygning_fredede;

####DAGI data fra zippet shapefil fra ftp server

CREATE SERVER dagi2m_kommune
   FOREIGN DATA WRAPPER ogr_fdw
  OPTIONS (datasource '/vsizip/vsicurl/ftp://USER:[email protected]/landinddelinger/dagi/SHAPE/DAGI2M_SHAPE_UTM32-EUREF89.zip/ADM/KOMMUNE.shp',format 'ESRI Shapefile');
ALTER SERVER dagi2m_kommune
  OWNER TO postgres;
  
  -- Foreign Table: dagi2m.kommune_fdw

-- DROP FOREIGN TABLE dagi2m.kommune_fdw;

CREATE FOREIGN TABLE dagi2m.kommune_fdw
   (fid integer ,
    geom geometry ,
    feat_id real ,
    feat_kode integer ,
    feat_type character varying ,
    feat_sttxt character varying ,
    geom_sttxt character varying ,
    dagi_id real ,
    areal real ,
    regionkode character varying ,
    regionnavn character varying ,
    gyldig_fra date ,
    gyldig_til date ,
    dq_index character varying ,
    dq_specifk character varying ,
    dq_statem character varying ,
    dq_descr character varying ,
    dq_process character varying ,
    dq_respons character varying ,
    dq_posacpl character varying ,
    dq_posaclv character varying ,
    timeof_cre character varying ,
    timeof_pub character varying ,
    timeof_rev character varying ,
    timeof_exp character varying ,
    timeof_udt character varying )
   SERVER dagi2m_kommune
   OPTIONS (layer 'KOMMUNE');
ALTER FOREIGN TABLE dagi2m.kommune_fdw
  OWNER TO postgres;
  
DROP MATERIALIZED VIEW IF EXISTS dagi2m.kommune;

CREATE MATERIALIZED VIEW dagi2m.kommune AS
SELECT  substring(dq_index from 2)::integer as dq_index, dq_specifk, St_Union(st_setsrid(ST_Multi(ST_Force_2D(geom)), 25832)::geometry(MultiPolygon,25832)) as the_geom
  FROM dagi2m.kommune_fdw
  GROUP BY dq_index,dq_specifk, regionnavn
  ORDER BY dq_index;
CREATE INDEX dagi2m_kommune_geom_idx  ON dagi2m.kommune USING GIST (the_geom);
CREATE UNIQUE INDEX idx_dq_index ON  dagi2m.kommune (dq_index);

ALTER TABLE dagi2m.kommune
  OWNER TO postgres;
  
REFRESH MATERIALIZED VIEW dagi2m.kommune;

SELECT * FROM dagi2m.kommune;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment