We did similar work for IENC Data (inland water) in Germany. Have a look at
http://wsvmapserv.wsv.bund.de/wms_ienc?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1 We're reading S-57 .000 files direct through the OGR Library as Jeff suggested. We also used scripts for generating tile indexes the way we needed them and for generating symbols from the S-52 Standard. Also we used a php wrapper script for generating a S-52 like pick report on GetFeatureInfo. Feel free to contact me if you like more details. Best regards, Oliver 2010/7/23 easyl <[email protected]>: > > Since several months I was looking for an good example or tutorial for > rendering S-57 nautical charts on MapServer. > After searching without any success I tried to build up my first map with > limit knowledge. > > IMO, the most hardest part is how to render them with S-52 style standard. > (The project http://www.opencpn.org/ has done a really good work to render > nautical map in an application.) > > Some resource: > http://home.gdal.org/projects/s57/index.html > http://grass.osgeo.org/wiki/S-57_data > http://www.s-57.com/ > > Here is a short description of what I have done. > > 1) Conver S-57 (*.000) files into shapefiles by using ogr2ogr. > An S-57 file is split into several shapefiles; > Each shapefile contains single one layer of single geometry type. > > For example: > src.000 ------ DEPARE ------> Area (a shapefile) > + +--> Line (a shapefile) > | > +-- (other layer) ......................... (a > shapefile) > > Here is the ogr2ogr commands > > ogr2ogr -skipfailure -append -f "ESRI Shapefile" output/DEPARE/A > src.000 -nlt POLYGON DEPARE > > ogr2ogr -skipfailure -append -f "ESRI Shapefile" output/DEPARE/L > src.000 -nlt LINESTRING DEPARE > > The SOUNDG layer must be converted with special care. > > export OGR_S57_OPTIONS="SPLIT_MULTIPOINT=ON,ADD_SOUNDG_DEPTH=ON" > > ogr2ogr -skipfailure -append -f "ESRI Shapefile" output/SOUNDG/P src.000 > -nlt POINT SOUNDG > > 2) Construct mapfile > 2.1) Generally there are (at least) two things to take care: scale and > layer priority. > > S-57 data may have different scale value and overlap with each > other. > Moreover, a S-57 data may not have a rectangle extent. > > For those reasons, I construct mapfile with the following manner: > Sort layers after scale value, then layer priority. > Group them if necessary. > MAP > LAYER > // scale: 1:100,000 > // priority: low > CONNECTION "shapefile/100000/DEPARE/A/DEPARE.shp" > DATA "DEPARE" > GROUP "DEPARE" > END > > LAYER > // scale: 1:100,000 > // priority: high > CONNECTION "shapefile/100000/LIGHTS/P/LIGHTS.shp" > DATA "LIGHTS" > GROUP "LIGHTS" > END > > LAYER > // scale: 1:10,000 > // priority: low > CONNECTION "shapefile/10000/DEPARE/A/DEPARE.shp" > DATA "DEPARE" > GROUP "DEPARE" > END > > LAYER > // scale: 1:10,000 > // priority: high > CONNECTION "shapefile/10000/LIGHTS/P/LIGHTS.shp" > DATA "LIGHTS" > GROUP "LIGHTS" > END > END > > 2.2) apply style. It is the hardest part. > Here I give abother two examples. > > LAYER > NAME DEPARE_A_1500000_1 > GROUP "DEPARE" > STATUS ON > TYPE POLYGON > CONNECTIONTYPE OGR > CONNECTION "shapefile/1500000/DEPARE/A/DEPARE.shp" > PROCESSING "CLOSE_CONNECTION=DEFER" > PROCESSING "LABEL_NO_CLIP=ON" > DATA "DEPARE" > PROJECTION > "proj=longlat" > "ellps=WGS84" > "datum=WGS84" > "no_defs" > END > CLASSITEM DRVAL1 > CLASS > EXPRESSION ([DRVAL1] < 3) > STYLE > COLOR 115 182 239 > END > END > CLASS > EXPRESSION ([DRVAL1] >= 3 && [DRVAL1] < 8) > STYLE > COLOR 156 198 247 > END > END > CLASS > EXPRESSION ([DRVAL1] >= 8) > STYLE > COLOR 214 235 239 > END > END > END > > > LAYER > NAME LIGHTS_P_1500_1 > GROUP "LIGHTS" > STATUS ON > TYPE POINT > #MAXSCALEDENOM 1501 > CONNECTIONTYPE OGR > CONNECTION "shapefile/1500/LIGHTS/P/LIGHTS.shp" > PROCESSING "CLOSE_CONNECTION=DEFER" > PROCESSING "LABEL_NO_CLIP=ON" > DATA "LIGHTS" > PROJECTION > "proj=longlat" > "ellps=WGS84" > "datum=WGS84" > "no_defs" > END > CLASSITEM COLOUR > CLASS > EXPRESSION ([COLOUR] == 3) > STYLE > COLOR 255 0 0 > SIZE [VALNMR] > OPACITY 50 > OUTLINECOLOR 0 0 0 > END > END > CLASS > EXPRESSION ([COLOUR] == 4) > STYLE > COLOR 0 255 0 > SIZE [VALNMR] > OPACITY 50 > OUTLINECOLOR 0 0 0 > END > END > ... > END > > Here is the result: > http://osgeo-org.1803224.n2.nabble.com/file/n5329589/s57MS.png > http://osgeo-org.1803224.n2.nabble.com/file/n5329589/s57MS.PNG s57MS.PNG > Of course, it needs still a lot of symbols, color encoding, customized > style after standards .... > > I have wrote some script to automatically convert S-57 files and construct > mapfile (manually writing a mapfile for 100+ layers from 20+ S-57 files is > not practical...). If anyone has interest, I can share them or even make a > project to let everyone contribute..... > > Now the task to be done is to encode every possible style in > mapfile............................:( > > Any suggestion is welcome! > > > > > -- > View this message in context: > http://osgeo-org.1803224.n2.nabble.com/Info-S-57-nautical-map-on-MapServer-tp5329589p5329589.html > Sent from the Mapserver - User mailing list archive at Nabble.com. > _______________________________________________ > mapserver-users mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/mapserver-users > _______________________________________________ mapserver-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapserver-users
