Hallo Holger,
mir ist nicht ganz klar was Du da machst. Normalerweise würde ich die Kacheln verschmelzen und dann georeferenzieren. Dabei gibt man ja den EPSg Code vor. Einfacher ist es wahrscheinlich, sich mit Maperitive eine Grafik der Gegend mit einem hohen Zoom zu erstellen. Da ist dann netterweise gleich die World-File dabei. Die sollte man dann noch etwas bearbeiten und den extent (siehe unten) auslesen. Danach sieht die mapfile dann ungefähr so aus.
Grundsätzlich gibst Du im Layer den mit PROJECTION EPSG Codes des vorliegenden Materials an und im Kopf der Mapfile und bei METADATA den Code, der bspw von JOSM angefragt wird. gdal sollte das dann automatisch umsetzen. Um ein shapefile in ein sichtbares Bild umzuwandeln,brauchst Du shp2img und musst regeln festlegen, wie bestimmte Dinge in der Shapefile auszusehen haben. Siehe CLASS im Beispiel unten
mapfile header
MAP
NAME OSM-WMS
FONTSET "/osm/mapserver/fonts.list"
STATUS ON
UNITS METERS
WEB
METADATA
"wms_title" "Thomas WMS-Server"
"labelcache_map_edge_buffer" "-10"
"wms_onlineresource" "to_be_replaced_by_wms.py"
"wms_srs" "EPSG:4326 EPSG:900913"
"wms_connectiontimeout" "90"
END
IMAGEPATH "/osm/mapserver/imagepath/"
END
CONFIG "PROJ_LIB" "/usr/share/proj"
CONFIG "MS_ERRORFILE" "stderr"
EXTENT 0 0 180 180
MAXSIZE 4000
SIZE 800 800
UNITS dd
IMAGECOLOR "#B3C6D4"
PROJECTION
"init=epsg:4326"
END
Layer eines georeferenzierten Bildes
LAYER
NAME "Hiddensee"
STATUS ON
TYPE RASTER
DATA "/osm/mapserver/hiddensee/Hiddensee_tiled.tif"
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_title" "Hiddensee"
"wms_extent" "13.065000 54.504001 13.132001 54.605000"
"wms_srs" "EPSG:4326"
"copyright" ""
END
END
Beispiel einer gerenderten Shapefile
LAYER
NAME "RoadsVmap0"
TYPE LINE
METADATA
"wms_title" "RoadsVmap0"
"wms_srs" "EPSG:4326" #copied from other layer
"wms_extend" "17.071282 41.521486 24.781496 46.529345"
END
STATUS ON
TRANSPARENCY 100
PROJECTION
"init=epsg:4326"
END
CLASS
NAME "trans-road-I"
STYLE
WIDTH 2
COLOR 37 213 202
END
END
END
Den extent bekomme ich so “python print_wms_extent.py meinbild.tif”
Das Bild in Tiles aufteilen “gdal_translate -of GTiff -co “TILED=YES” vorher.tif nachher.tif”
Und schon vorab verschiedene Zoomlevel bereitstellen “gdaladdo -ro --config USE_RRD YES -r gauss meinbild.tif 2 4 8 16 32 64 128 256”
MINSCALEDENOM/MAXSCALEDENOM sind afaik dafür, wenn Du Rendering Regeln brauchst, also wenn der Mapserver als Renderer arbeitet wenn Du abhängig vom Zoomlevel unterschiedliche Daten/Shapefiles nehmen willst. Das sieht dann bspw so aus
LAYER
STATUS ON
GROUP "default"
PROJECTION "init=epsg:4326"
END
CONNECTIONTYPE postgis CONNECTION "host=localhost dbname=osm user=www-data password=www-data port=5432"
PROCESSING "CLOSE_CONNECTION=DEFER"
maxscaledenom 25010
minscaledenom 10010
TYPE LINE
NAME "roadsclose"
DATA "way from (select way, osm_id ,highway,ref, namesr, tunnel from osm_line where highway is not null order by priority desc) as foo using unique osm_id using srid=4326"
LABELITEM "namesr"
CLASSITEM "highway"
CLASS
EXPRESSION "motorway"
TEXT ([ref])
STYLE
WIDTH 10
OUTLINEWIDTH 1
OUTLINECOLOR "#24277A"
END
STYLE
WIDTH 10
COLOR "#4F719D"
END
LABEL
TYPE TRUETYPE FONT sc PARTIALS FALSE OUTLINEWIDTH 3
PRIORITY 1
FONT scb
SIZE 9
MINDISTANCE 150
MAXLENGTH 6
COLOR 255 255 255
BACKGROUNDCOLOR "#FF5C1D"
BACKGROUNDSHADOWCOLOR "#FDB462"
END
END