Mercurial > mxd2map
view contrib/python/generateHTML.py @ 306:ea3fde77ea48
Catch generic Exceptions to avoid leaking them and creating
silent errors
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Thu, 06 Sep 2012 18:56:20 +0200 |
parents | 4dc2b9aa3c57 |
children |
line wrap: on
line source
#!/usr/bin/env python # # Copyright (c) 2011 by Intevation GmbH, Germany <info@intevation.de> # # This file is part of MXD2map. # # This program is free software under the LGPL (>=v2.1) # Read the file LICENCE.txt coming with the software for details # or visit http://www.gnu.org/licenses/ if it does not exist. # # MXD2map has been developed on behalf of the # Bundesamt fuer Seeschifffahrt und Hydrographie (BSH) in Hamburg # by Intevation GmbH. # # Authors: # Raimund Renkert <raimund.renkert@intevation.de> # Bjoern Schilberg <bjoern.schilberg@intevation.de> # Stephan Holl <stephan.holl@intevation.de> # # Generate a HTML-Page based on a recursive folder structure of generated # mapfiles from MXD2map # # # Usage: generateHTML.py > output.html import os # this is intended to run in the folder where the generates mapfiles are # stored: rootdir = os.getcwd() + '/map-test-2' debug = False # adopt for you needs: url = 'http://localhost/cgi-bin/mapserv.exe' getmap = url + '?Request=GetMap&Service=WMS&Version=1.1.1' getmap += '&srs=EPSG:4326&width=800&height=600&format=image/png&styles=' getcaps = url + '?Request=GetCapabilities&Service=WMS&Version=1.1.1' def writeHeader(): print '''<html> <head> <title>MXD2map-examples</title> <style> body { font-family: arial, sans-serif; font-size: 12pt; } </style> </head> <body> <h1>Verfuegbare MXD-Dateien</h1> ''' def writeFooter(): content = "</body></html>" print content def writeLayers(mapfile, layers, extent): basename = os.path.basename(mapfile) png = mapfile.replace(".map", "_arcpy.png") gc = getcaps + '&map=' + mapfile print '''<li>Layer: <strong><a target='_mapfile' href='file://%s'>%s</a></strong> | <a target='_getcaps' href='%s'>GetCapabilities</a></li> <br> <a target="bild" href="file://%s"><img witdth="80" height="60" border="" src="file://%s"></a> Anzahl der Layer: %s ''' % (mapfile, basename, gc, png, png, len(layers)) i = 0 print "<ul>" while i < len(layers): urlmapfile = url + '?map=' + mapfile urlmapfile += '&template=openlayers&mode=browse&layers=' + layers[i] gm = getmap + '&map=' + mapfile + '&layers=' + layers[i] if extent: ext = str(extent).strip('[\'\'\\r\\n]') gm += '&bbox='+''.join(ext) print "<li><a target='_new' href='%s'>%s</a> | <a target='_getmap' href='%s'>WMS GetMap</a></li>" % (urlmapfile, layers[i], gm) i=i+1 print "</ul>" def generateArcImage(mapfile): basename = os.path.basename(mapfile) mxdfile = mapfile.replace(".map",".mxd") output = mapfile.replace(".map", "_arcpy.png") if debug: print "MXDfile: %s\nOutput: %s " % (mxdfile, output) if not output: import arcpy mxd = arcpy.mapping.MapDocument(mxdfile) df = arcpy.mapping.ListDataFrames(mxd)[0] arcpy.mapping.ExportToPNG(mxd, output, df, df_export_width=800, df_export_height=600, world_file=True) del mxd def writeGroups(mapfile,groups): if len(groups) > 1: print "Anzahl der Gruppen: %s" % len(groups) i = 0 print "<ul>" while i < len(groups): if os.name == "nt": mapfile = mapfile.replace('\\', '/') urlmapfile = url + '?map=' + mapfile urlmapfile += '&template=openlayers&mode=browse&layers=' + groups[i] print "<li><a target='_group' href='%s'>%s</a></li>" % (urlmapfile, groups[i]) i=i+1 print "</ul>" def main(): writeHeader() for root, subFolders, files in os.walk(rootdir): for file in files: f = os.path.join(root, file) if os.path.isfile(f): basename, extension = os.path.splitext(f) if extension.lower() == ".map": if "orig" in f: # do not generate links for -orig.map-files continue if debug: print "Bearbeite Dokument %s" % f #read file and search for wms_title layers = [] groups = [] extent = [] for line in open(f): if "wms_title" in line: #print line la = line.strip()[12:].replace('"','') if la != "Layers": layers.append(la) if "GROUP" in line: gr = line.strip()[6:].replace('"','') if gr not in groups: groups.append(gr) if "EXTENT" in line: ext = line[9:].replace('"','').replace(' ', ',') extent.append(ext) generateArcImage(f) print "<ul>" writeLayers(f, layers, extent) print "</ul>" # write groups print "<ul>" writeGroups(f, groups) print "</ul>" if debug: print "Layer %s hat %s Layer" % (f, len(layers)) print "Layer %s hat %s Gruppen" % (f, len(groups)) writeFooter() main()