NORDISK KARTOGRAFI MED MAPSERVER Lars Schylberg Företagsspecialist GIS, Saab AB Doc ID, Issue: 2014-06-27 Page 1 COMPANY UNCLASSIFIED - NOT EXPORT CONTROLLED
INNEHÅLL Att skapa en Nordisk karta från officiella databaser Aktuella verktyg för att skapa Mapserver projekt Preparering av data med GDAL/OGR Editering med Scribe Datastrukturer som jag gillar/ogillar Mapservertips om vägnummer Doc ID, Issue Page 2
NORDISK WEBB-KARTA Projekt att skapa en webbkarta som är på ett intranät (ingen anslutning till internet) Använda officiella databaser Designkrav på att den skall vara responsiv, dvs snabb Användarmedverkan Doc ID, Issue Page 3
DATA Sverige: 1:1milj., Översiktskartan 1:250k (shape), SWEREF 99 Norge: Norge 1000k, Norge 500k (shape) Danmark: D500, D200 (MapInfo) Finland: 4,5_milj. 1 milj. (250K) Shape Natural Earth (110m, 50m 10m) Doc ID, Issue Page 4
Natural Earth data
Natural Earth inzoomad
MAPSERVER EDITORS MapManager Windows editor WYSWYG desktop GUI Bygger helt på Microsoft-arkitektur med IIS https://github.com/dms-aus/mapmanager ScribeUI Webbased editor Apache Ny syntax
MAPMANAGER KARTVY
MAPMANAGER EDITERINGSLÄGE
Doc ID, Issue Page 10 SCRIBE UI
DATAPREPARERING Sverige 250k lästes ihop till rikstäckande data (shapemerger.py) Alternativt kan man skapa index till alla filer (ogrtindex) python shapemerger.py -n -i -o ov_merged/my_all.shp oversikt/*/my*.shp Kapa data vi lands- och territoralgränser med vektormask ogr2ogr -clipsrc DEN-Mask-freehand_edit.shp $DIR/${FILENAME}_edit.shp $DIR/${FILENAME}.shp shptree $DIR/${FILENAME}_edit.shp
DATAPREPARERING Om-projetion till enhetlig projection: EPSG Projection 32633 - WGS 84 / UTM zone 33N ogr2ogr -s_srs EPSG:3006 -t_srs EPSG:32633 ov_32633/my_all.shp ov_merged/my_all.shp Skapa index för shapefiler ## Create quad index shptree ov_merged/my_all.shp
TEXTPLACERING FÖR SVENSKA DATA Pythonprogram för att lägga till extra fält Alternativt blir syntaxen mycket längre Doc ID, Issue Page 13
Symboler Fonter: Svenska GSD-fonter Danmark och Norge har symbolfonter (ej använda) Norge har samiska teckenfonter Överväger att gå över till SVG där det är möljigt Linjesymboler och ytor efter svenskt (Lantmäteriet) och norskt maner (Kartverket) Doc ID, Issue Page 14
Editera kartor land för land och för varje zoom nivå
Editera kartor land för land och för varje zoom nivå
Huvuddefinitioner MAP { NAME: "karta" CONFIG: "PROJ_LIB" './' FONTSET: './fontset.lst' CONFIG: "MS_OPENLAYERS_JS_URL" "http:\/\/localhost/localopenlayers/ OpenLayers-ms60.js" CONFIG: "MS_ERRORFILE" "/tmp/nordicmap_debug2.log" DEBUG: 5 IMAGETYPE: png MAXSIZE: 4000 SIZE: 1000 1000 UNITS: meters EXTENT: -1758000 4187000 1966675 7861700 IMAGECOLOR: @water_clr SHAPEPATH: './data/' WEB { METADATA {{ "ows_enable_request" "*" "wms_srs" "EPSG:32633" "labelcache_map_edge_buffer" "- 10" "wms_title" "StricMap" }} IMAGEPATH: '/tmp/ms_tmp/' IMAGEURL: '/ms_tmp/' } PROJECTION {{ "init=epsg:32633" }} SYMBOLSET: './symbols.sym'
Alla lager ORDER { 1: layers/ne_ocean.layer 2: layers/ne_land.layer 3: layers/ne_urban.layer 4: layers/ne_water.layer 5: layers/ne_admin.layer 6: layers/ne_roads.layer 7: layers/ne_railroads.layer 8: layers/ne_cities.layer 9: layers/ne_airports.layer 10: layers/swe_2_landuse_my.layer 11: layers/swe_3_cities_mb.layer 12: layers/swe_4_elevation_oh.layer 13: layers/swe_5_hydro_hl.layer 14: layers/swe_6_powerlines_kl.layer 15: layers/swe_7_railroad_jl.layer 16: layers/swe_8_roads_vl.layer 17: layers/swe_9_otherlines_bo.layer 18:layers/SWE_10_pointsymbols_bs.lay er 19: layers/swe_11_citynames_bt.layer 20: layers/swe_12_text_hydro.layer 21: layers/swe_13_road_signs.layer 22:layers/SWE_14_text_names_tx.layer 23: layers/no_landuse.layer 24: layers/no_roads.layer 25: layers/no_text.layer 26: layers/fin_landuse.layer 27: layers/fin_roads.layer 28: layers/fin_text.layer 29: layers/fin-point-symbols.layer 30: layers/den_landuse.layer 31: layers/den_railroad.layer 32: layers/den_roads.layer 33: layers/den_text.layer 34: layers/den_road_numbers.layer 35: layers/den_features.layer 36: layers/swe_15_border_al.layer 37: layers/ne_ferries.layer 38: layers/ne_country_borders.layer }
Zoom-nivåer SCALES { 1:268435456 2:134217728 3:67108864 4:33554432 5:16777216 6:8388608 7:4194304 8:2097152 9:1048576 10:524288 11:262144 12:131072 13:65536 14:32768 15:16384 16:8192 }
Variabler VARIABLES { layerconfig { GROUP: 'default' STATUS: ON PROJECTION {{ }} 'init=epsg:32633' PROCESSING: 'LABEL_NO_CLIP=ON' } road_style_attributes { } LINECAP: BUTT LINEJOIN: ROUND watercolor: '#C6E2F2' watercolor_ol: '#469FC3' watercolor_lbl: '#80C0FF' rivercolor: '#6CAAC3' water_clr: '#C6E2F2' land_clr: 212 255 191 road_orange: 253 146 58 road_yellow: 255 251 138 road_off_white: 250 250 250 road_light_brown: 222 208 182
LAGER LAYER { 8-16 { NAME: 'Roads' TYPE: LINE SIZEUNITS: PIXELS @layerconfig DATA { 8-12: 'sve1milj_32633/vl_riks_edit ' 13-16: 'ov_merged/vl_all' } CLASSITEM: KKOD /* övriga, allmän vägnr. 100-499 */ CLASS { 9-10 { EXPRESSION { 9-10: /5212/ } STYLE { WIDTH { 9: 1.0 10: 1.2 } COLOR: @RIKSV_EJ_EVAG @road_style_attributes } } }
Skapa den sammanlagda Mapfilen python scribe.py -n../../karta1
Önskemål om data Alla databaser borde kunna fås klippta till regioner eller gränser Alla texter borde vara kopplade till ett geografisk objekt Sjönamn till sjöpolygon Tätortsnamn knuten till polygon eller punkt osv. Den norska databaserna känns mest moderna. Finska koderna är bara beskrivna på finska Texter skall helst inte ha förbestämd positionering Mapserver får lösa konflikterna, vilket den gör mycket bra
Doc ID, Issue Page 31
Avancerade vägnumrering LABEL { 9-16 { EXPRESSION: ("[level]" eq "E" AND ('[label]' ~ '^E..$')) } STYLE { GEOMTRANSFORM: "labelpnt" COLOR: @VAGNRBOX_GRON } } SYMBOL: VAGNRBOX_3TKN SIZE: 10 TEXT: '[label]' FONT: 'sc' TYPE: truetype POSITION: CC COLOR: @VAGNR SIZE: 7 FORCE: FALSE REPEATDISTANCE: 150 MINDISTANCE: 400
Avancerade vägnumrering (forts.) LABEL { 9-16 { EXPRESSION: (('[label]' ~ '.') AND ('[label2]' ~ '^E.$')) STYLE { GEOMTRANSFORM: "labelpnt" SYMBOL: VAGNRBOX COLOR: @VAGNRBOX_GRON OFFSET: 0 15 SIZE: 10 } TEXT: '[label2]' OFFSET: 0 15 FONT: 'sc' TYPE: truetype POSITION: CC COLOR: @VAGNR SIZE: 7 FORCE: FALSE REPEATDISTANCE: 150 MINDISTANCE: 400 }
Avancerade vägnumrering (forts.)
Texthantering
Nästa steg Sjökort Höjd terrängskuggning Texthantering Lära mig hantera masker i MS
Doc ID, Issue Page 38 COMPANY UNCLASSIFIED - NOT EXPORT CONTROLLED