示例#1
0
def output():
    l.debug("Outputting XML")
    # First, set up a few data structures for optimization purposes
    global geometries, features
    nodes = [geometry for geometry in geometries if type(geometry) == Point]
    ways = [geometry for geometry in geometries if type(geometry) == Way]
    relations = [geometry for geometry in geometries if type(geometry) == Relation]
    featuresmap = {feature.geometry : feature for feature in features}

    w = XMLWriter(open(options.outputFile, 'w'), 'utf-8')
    if options.noUploadFalse:
        w.start("osm", version='0.6', generator='uvmogr2osm')
    else:
        w.start("osm", version='0.6', generator='uvmogr2osm', upload='false')
        
    w.data("\n")
    for node in nodes:
        w.start("node", visible="true", id=str(node.id), lat=str(node.y*10**-options.significantDigits), lon=str(node.x*10**-options.significantDigits))
        if node in featuresmap:
            for (key, value) in featuresmap[node].tags.items():
                w.element("tag", k=escape(key), v=escape(value))
                w.data("\n")
        w.end("node")
        w.data("\n")

    for way in ways:
        w.start("way", visible="true", id=str(way.id))
        w.data("\n")
        for node in way.points:
            w.element("nd", ref=str(node.id))
            w.data("\n")
        if way in featuresmap:
            for (key, value) in featuresmap[way].tags.items():
                w.element("tag", k=escape(key), v=escape(value))
                w.data("\n")
        w.end("way")
        w.data("\n")

    for relation in relations:
        w.start("relation", visible="true", id=str(relation.id))
        w.data("\n")
        for (member, role) in relation.members:
            w.element("member", type="way", ref=str(member.id), role=escape(role))
            w.data("\n")
        w.element("tag", k='type', v='multipolygon')
        w.data("\n")
        if relation in featuresmap:
            for (key, value) in featuresmap[relation].tags.items():
                w.element("tag", k=escape(key), v=escape(value))
                w.data("\n")
        w.end("relation")
        w.data("\n")

    w.end("osm")
示例#2
0
#!/usr/bin/env python
# marek kuczynski
# www.marek.asia
# sudo apt-get install python-eyed3

from time import sleep
import eyeD3, sys, os, hashlib, time, shutil
from SimpleXMLWriter import XMLWriter
# import configuration file
from cfg import *

###
# define the output of the program (either stdout or file)
xml = XMLWriter('rss.xml')

# head of the file
output = xml.start('rss', version='2.0')

# channel part of the file
xml.start('channel')
xml.element('title', title)
xml.element('link', url)
xml.element('language', 'en-us')
xml.element('description', description)
xml.element('author', author)
xml.element('category', category)

xml.start('image')
xml.element('url', image)
xml.end('image')
示例#3
0
#print nodeRefs
#print segmentNodes
#print lineSegments
#print areaRings
#print segmentRefs



print
print "Generating OSM XML..."
print "Generating nodes."


#w = XMLWriter(sys.stdout)
w = XMLWriter(open(outputFile,'w'))

w.start("osm", version='0.6', generator='ogr2osm')

# First, the nodes
for (nodeID,(x,y)) in nodeCoords.items():
	w.start("node", visible="true", id=str(nodeID), lat=str(y), lon=str(x))
	for (tagKey,tagValue) in nodeTags[nodeID].items():
		if tagValue:
			w.element("tag", k=tagKey, v=tagValue)
	w.end("node")
	if showProgress: sys.stdout.write('.')


#print "Generated nodes. On to shared segments."
示例#4
0
def output():
    l.debug("Outputting XML")
    # First, set up a few data structures for optimization purposes
    global global_geometrias, global_feicoes
    nodes = [geometry for geometry in global_geometrias if type(geometry) == Point]
    ways = [geometry for geometry in global_geometrias if type(geometry) == Way]
    relations = [geometry for geometry in global_geometrias if type(geometry) == Relation]
    featuresmap = {feature.geometry : feature for feature in global_feicoes}

    w = XMLWriter(open(options.outputFile, 'w'))
    w.start("osm", version='0.6', generator='uvmogr2osm')

    for node in nodes:
        w.start("node", visible="true", id=str(node.id), lat=str(node.y), lon=str(node.x))
        if node in featuresmap:
            for (key, value) in featuresmap[node].tags.items():
                w.element("tag", k=key, v=value)
        w.end("node")

    for way in ways:
        w.start("way", visible="true", id=str(way.id))
        for node in way.points:
            w.element("nd", ref=str(node.id))
        if way in featuresmap:
            for (key, value) in featuresmap[way].tags.items():
                w.element("tag", k=key, v=value)
        w.end("way")

    for relation in relations:
        w.start("relation", visible="true", id=str(relation.id))
        for (member, role) in relation.members:
            w.element("member", type="way", ref=str(member.id), role=role)
        if relation in featuresmap:
            for (key, value) in featuresmap[relation].tags.items():
                w.element("tag", k=key, v=value)
        w.end("relation")

    w.end("osm")
def output():
    l.debug("Outputting XML")
    # First, set up a few data structures for optimization purposes
    global geometries, features
    nodes = [geometry for geometry in geometries if type(geometry) == Point]
    ways = [geometry for geometry in geometries if type(geometry) == Way]
    relations = [geometry for geometry in geometries if type(geometry) == Relation]
    featuresmap = {feature.geometry : feature for feature in features}

    w = XMLWriter(open(options.outputFile, 'w'))
    w.start("osm", version='0.6', generator='myogr2osm')

    for node in nodes:
        w.start("node", version="1", timestamp="2012-01-01T00:00:00.0+11:00", changeset="0", visible="true", id=str(node.id), lat=str(node.y), lon=str(node.x))
        if node in featuresmap:
            for (key, value) in featuresmap[node].tags.items():
                w.element("tag", k=key, v=value)
        w.end("node")

    for way in ways:
        w.start("way", version="1", timestamp="2012-01-01T00:00:00.0+11:00", changeset="0", visible="true", id=str(way.id))
        for node in way.points:
            w.element("nd", ref=str(node.id))
        if way in featuresmap:
            for (key, value) in featuresmap[way].tags.items():
                w.element("tag", k=key, v=value)
        w.end("way")

    for relation in relations:
        w.start("relation", version="1", timestamp="2012-01-01T00:00:00.0+11:00", changeset="0", visible="true", id=str(relation.id))
        for (member, role) in relation.members:
            w.element("member", type="way", ref=str(member.id), role=role)
        if relation in featuresmap:
            for (key, value) in featuresmap[relation].tags.items():
                w.element("tag", k=key, v=value)
        w.end("relation")

    w.end("osm")
示例#6
0
print "Segment join operations: " + str(segmentJoinCount)
print "Lines: " + str(lineCount)
print "Areas: " + str(areaCount)

#print nodeRefs
#print segmentNodes
#print lineSegments
#print areaRings
#print segmentRefs

print
print "Generating OSM XML..."
print "Generating nodes."

#w = XMLWriter(sys.stdout)
w = XMLWriter(open(outputFile, 'w'))

w.start("osm", version='0.6', generator='ogr2osm')

# First, the nodes
for (nodeID, (x, y)) in nodeCoords.items():
    w.start("node", visible="true", id=str(nodeID), lat=str(y), lon=str(x))
    for (tagKey, tagValue) in nodeTags[nodeID].items():
        if tagValue:
            w.element("tag", k=tagKey, v=tagValue)
    w.end("node")
    if showProgress: sys.stdout.write('.')

#print "Generated nodes. On to shared segments."

# Now, the segments used by more than one line/area, as untagged ways
示例#7
0
                # 0-D = point
                if showProgress:
                    sys.stdout.write(",")
                x = geometry.GetX()
                y = geometry.GetY()
                nodeID = addNode(x, y)

            elif geometry.GetDimension() == 1 or geometry.GetDimension() == 2:
                # linestring
                geomID = elementIdCounter
                elementIdCounter = elementIdCounter - 1
                way = convertGeometry(geometry)
                ways[geomID] = way

print "Generating OSM XML..."
w = XMLWriter(open(outputFile, "w"))
w.start("osm", version="0.6", generator="ogr2osm")

print "Generating " + str(len(nodes)) + " nodes."
for (nodeID, (x, y)) in nodes.items():
    w.start("node", visible="true", id=str(nodeID), lat=str(y), lon=str(x))
    w.end("node")

print "Generating " + str(len(ways)) + " ways."
for key in ways.keys():
    w.start("way", id=str(key), action="modify", visible="true")
    for node in ways[key]:
        w.element("nd", ref=str(node))
    w.end("way")
print "All done. Enjoy your data!"
w.end("osm")
示例#8
0
 def __init__(self, _file, encoding="utf-8"):
     self.myfile = open(str(_file), "w")
     self.filename = XMLWriter(_file, encoding)
示例#9
0
class XlsXmlGenerator:
    """Convert a database query result into an xml spreadsheet file"""

    def __init__(self, _file, encoding="utf-8"):
        self.myfile = open(str(_file), "w")
        self.filename = XMLWriter(_file, encoding)

    def setAttributes(self, head, cols, data, totColumns=None, sn=1):
        self.head = head
        self.cols = cols
        self.values = data
        self.totColumns = totColumns
        self.sn = sn

    def XlsXmlHeader(self):
        """Set up all the Xml code that we need to make a well formed document for MSO 2003"""
        wrkbook_attr = {
            "xmlns": "urn:schemas-microsoft-com:office:spreadsheet",
            "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
            "xmlns:x": "urn:schemas-microsoft-com:office:excel",
            "xmlns:x2": "http://schemas.microsoft.com/office/excel/2003/xml",
            "xmlns:ss": "urn:schemas-microsoft-com:office:spreadsheet",
            "xmlns:o": "urn:schemas-microsoft-com:office:office",
            "xmlns:html": "http://www.w3.org/TR/REC-html40",
            "xmlns:c": "urn:schemas-microsoft-com:office:component:spreadsheet",
        }
        ods_attr = {"xmlns": "urn:schemas-microsoft-com:office:office"}
        EWB_attr = {"xmlns": "urn:schemas-microsoft-com:office:excel"}
        Style_attr = {"ss:ID": "Default", "ss:Name": "Default"}
        Style_attr1 = {"ss:ID": "Result", "ss:Name": "Result"}
        Style_attr2 = {"ss:ID": "Result2", "ss:Name": "Result2"}
        Style_attr3 = {"ss:ID": "Heading", "ss:Name": "Heading"}
        Style_attr4 = {"ss:ID": "Heading1", "ss:Name": "Heading1"}
        Style_attr5 = {"ss:ID": "co1"}
        Style_attr6 = {"ss:ID": "ta1"}
        # specific cells attributes start here
        Style_attr7 = {"ss:ID": "ce1"}
        Style_attr8 = {"ss:ID": "ce2"}
        Style_attr9 = {"ss:ID": "ce3"}
        Style_attr10 = {"ss:ID": "ce4"}
        Style_attr11 = {"ss:ID": "ce5"}
        Style_attr12 = {"ss:ID": "ce6"}
        Style_attr13 = {"ss:ID": "ce7"}
        Style_attr14 = {"ss:ID": "ce8"}
        Style_attr15 = {"ss:ID": "ce9"}
        Style_attr16 = {"ss:ID": "ce10"}
        Style_attr17 = {"ss:ID": "ce11"}
        Style_attr18 = {"ss:ID": "ce12"}
        Bord_bott_attr = {"ss:Position": "Bottom", "ss:LineStile": "Continous", "ss:Weight": "1", "ss:Color": "#000000"}
        Bord_left_attr = {"ss:Position": "Left", "ss:LineStile": "Continous", "ss:Weight": "1", "ss:Color": "#000000"}
        Bord_top_attr = {"ss:Position": "Top", "ss:LineStile": "Continous", "ss:Weight": "1", "ss:Color": "#000000"}
        Bord_right_attr = {"ss:Position": "Right", "ss:LineStile": "Continous", "ss:Weight": "1", "ss:Color": "#000000"}
        Interior_attributes = {"ss:Color": "#ffb515", "ss:Pattern": "Solid"}
        Interior_attributes1 = {"ss:Color": "#fff515", "ss:Pattern": "Solid"}
        Font_attr = {"ss:Bold": "1", "ss:Italic": "1", "ss:Underline": "Single"}
        Font_attr1 = {"ss:Bold": "1", "ss:Italic": "1", "ss:Size": "16"}
        Font_attr2 = {"ss:Bold": "1"}
        NF_attr = {"ss:Format": "Euro Currency"}
        Align_attr = {"ss:Horizontal": "Center"}
        Align_cent_attr = {"ss:Horizontal": "Center", "ss:Vertical": "Center", "ss:indent": "0"}
        Align_left_attr = {"ss:Horizontal": "Left", "ss:Vertical": "Center", "ss:indent": "0"}
        Align_right_attr = {"ss:Horizontal": "Right", "ss:Vertical": "Center", "ss:indent": "0"}
        ssWs_attr = {"ss:Name": "Tabella1"}

        self.filename.declaration()
        self.filename.suffix()
        self._id = self.filename.start("Workbook", wrkbook_attr)
        self.filename.start("OfficeDocumentSettings", ods_attr)
        self.filename.start("Colors")
        self.filename.start("Color")
        self.filename.start("Index")
        self.filename.data("3")
        self.filename.end("Index")
        self.filename.start("RGB")
        self.filename.data("#c0c0c0")
        self.filename.end("RGB")
        self.filename.end("Color")
        self.filename.start("Color")
        self.filename.start("Index")
        self.filename.data("4")
        self.filename.end("Index")
        self.filename.start("RGB")
        self.filename.data("#ff0000")
        self.filename.end("RGB")
        self.filename.end("Color")
        self.filename.start("Color")
        self.filename.start("Index")
        self.filename.data("5")
        self.filename.end("Index")
        self.filename.start("RGB")
        self.filename.data("#ffb515")
        self.filename.end("RGB")
        self.filename.end("Color")
        self.filename.end("Colors")
        self.filename.end("OfficeDocumentSettings")
        self.filename.start("ExcelWorkBook", EWB_attr)
        self.filename.start("WindowHeight")
        self.filename.data("9000")
        self.filename.end("WindowHeight")
        self.filename.start("WindowWidth")
        self.filename.data("13860")
        self.filename.end("WindowWidth")
        self.filename.start("WindowTopX")
        self.filename.data("240")
        self.filename.end("WindowTopX")
        self.filename.start("WindowTopY")
        self.filename.data("75")
        self.filename.end("WindowTopY")
        self.filename.start("ProtectStructure")
        self.filename.data("False")
        self.filename.end("ProtectStructure")
        self.filename.start("ProtectWindows")
        self.filename.data("False")
        self.filename.end("ProtectWindows")
        self.filename.end("ExcelWorkBook")
        self.filename.start("Styles")
        self.filename.start("Style", Style_attr)
        self.filename.end("Style")
        self.filename.start("Style", Style_attr1)
        self.filename.start("Font", Font_attr)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr2)
        self.filename.start("Font", Font_attr)
        self.filename.end("Font")
        self.filename.start("NumberFormat", NF_attr)
        self.filename.end("NumberFormat")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr3)
        self.filename.start("Alignment", Align_attr)
        self.filename.end("Alignment")
        self.filename.start("Font", Font_attr1)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr4)
        self.filename.start("Alignment", Align_attr)
        self.filename.end("Alignment")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr5)
        self.filename.end("Style")
        self.filename.start("Style", Style_attr6)
        self.filename.end("Style")
        self.filename.start("Style", Style_attr7)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_left_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.start("Interior", Interior_attributes)
        self.filename.end("Interior")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr8)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.start("Interior", Interior_attributes)
        self.filename.end("Interior")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr9)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.start("Interior", Interior_attributes)
        self.filename.end("Interior")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr10)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_left_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr11)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr12)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_left_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr13)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_right_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr14)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_right_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr15)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_left_attr)
        self.filename.end("Alignment")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr16)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_left_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_cent_attr)
        self.filename.end("Alignment")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.start("Interior", Interior_attributes1)
        self.filename.end("Interior")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr17)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_left_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_right_attr)
        self.filename.end("Alignment")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.start("Interior", Interior_attributes1)
        self.filename.end("Interior")
        self.filename.end("Style")
        self.filename.start("Style", Style_attr18)
        self.filename.start("Borders")
        self.filename.start("Border", Bord_bott_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_right_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_left_attr)
        self.filename.end("Border")
        self.filename.start("Border", Bord_top_attr)
        self.filename.end("Border")
        self.filename.end("Borders")
        self.filename.start("Alignment", Align_right_attr)
        self.filename.end("Alignment")
        self.filename.start("Font", Font_attr2)
        self.filename.end("Font")
        self.filename.start("Interior", Interior_attributes1)
        self.filename.end("Interior")
        self.filename.end("Style")
        self.filename.end("Styles")

    # writes up data in the xml document from a sql cursor
    # the same function writes II, III and more spreadsheet by specifying the sheet number "sn"
    # making a function call for each sheet you need to create.
    def XlsXmlsheet(self, wtot):
        """writes the concrete data you need to be in the spreadsheet

        if more than one data sheet is needed to be written, just do multiple calls to this function
        before you close the document. Making successive calls to this function, the 'sn' ("Sheet Number")
        attribute is required to be increased each time by one."""
        # This way seems to work good enough,
        # But for the future, consider to make some method that
        # try to 'append' another list of data to the generated document as separated worksheet"""
        sn = str(self.sn)
        work_attr = {"ss:Name": "tabella" + sn}
        tab_attr = {"ss:StyleID": "ta1"}
        row_attr = {"ss:Height": "15.6425"}
        ce = [{"ss:StyleID": "ce1"}, {"ss:StyleID": "ce2"}, {"ss:StyleID": "ce3"}]
        da = [{"ss:Type": "String"}, {"ss:Type": "Number"}]

        # let's define the columns styles for the table we are generating
        cols = self.cols
        col_num = range(len(cols))
        col = []
        for n in col_num:
            if n == 0:  # first field has always centered text-style
                single_col = {"ss:StyleID": "ce4", "ss:Width": cols[n][0]}
            elif 1 <= n < col_num[-1]:
                if cols[n][1] == "l":  # As left
                    single_col = {"ss:StyleID": "ce6", "ss:Width": cols[n][0]}
                elif cols[n][1] == "r":  # As right
                    single_col = {"ss:StyleID": "ce7", "ss:Width": cols[n][0]}
                elif cols[n][1] == "c":  # As center
                    single_col = {"ss:StyleID": "ce5", "ss:Width": cols[n][0]}
                else:
                    raise Exception("Unknown style!")
            elif n == col_num[-1]:
                if cols[n][1] == "r":
                    single_col = {"ss:StyleID": "ce8", "ss:Width": cols[n][0]}
                elif cols[n][1] == "l":
                    single_col = {"ss:StyleID": "ce9", "ss:Width": cols[n][0]}
            else:
                print "WARNING!! unknown column style! Is this normal??"
                single_col = {}
            col.append(single_col)

        self.filename.start("ss:Worksheet", work_attr)
        self.filename.start("Table", tab_attr)

        head = self.head
        li = range(len(cols))
        for i in li:
            self.filename.start("Column", col[i])
            self.filename.end("Column")
        self.filename.start("Row", row_attr)
        for i in li:
            if i == 0:
                self.filename.start("Cell", ce[0])
                self.filename.start("Data", da[0])
                self.filename.data(head[i])
                self.filename.end("Data")
                self.filename.end("Cell")
            elif 1 <= i < li[-1]:
                self.filename.start("Cell", ce[1])
                self.filename.start("Data", da[0])
                self.filename.data(head[i])
                self.filename.end("Data")
                self.filename.end("Cell")
            elif i == li[-1]:
                self.filename.start("Cell", ce[2])
                self.filename.start("Data", da[0])
                self.filename.data(head[i])
                self.filename.end("Data")
                self.filename.end("Cell")

        self.filename.end("Row")

        # Now let's play. the real data inserting starts here
        flag = 0
        values = self.values
        self.sum0 = 0
        self.sum1 = 0
        self.sum2 = 0
        self.num_rows = 1
        for row in values:
            self.num_rows = self.num_rows + 1
            self.filename.start("Row", row_attr)
            for r in row:
                self.filename.start("Cell")
                if isinstance(r, str):
                    self.filename.start("Data", da[0])
                    self.filename.data(r)
                    self.filename.end("Data")
                elif isinstance(r, float):
                    __r = str(("%.2f") % r)
                    self.filename.start("Data", da[1])
                    self.filename.data(__r)
                    self.filename.end("Data")
                    # flag is needed to know how many numerical fields are in the table
                    # to permit the sum of each value without miss the order of the data
                    if wtot:
                        if flag == 0:
                            self.sum0 += r
                            flag = 1
                        elif flag == 1:
                            self.sum1 += r
                            flag = 2
                        elif flag == 2:
                            self.sum2 += r
                elif isinstance(r, Decimal):
                    __r = str(r)
                    self.filename.start("Data", da[1])
                    self.filename.data(__r)
                    self.filename.end("Data")
                    # flag is needed to know how many numerical fields are in the table
                    # to permit the sum of each value without miss the order of the data
                    if wtot:
                        if flag == 0:
                            self.sum0 += r
                            flag = 1
                        elif flag == 1:
                            self.sum1 += r
                            flag = 2
                        elif flag == 2:
                            self.sum2 += r
                else:
                    self.filename.start("Data", da[0])
                    self.filename.data(str(r) or "")
                    self.filename.end("Data")
                self.filename.end("Cell")

            flag = 0
            self.filename.end("Row")
        if wtot:
            self.setTotalColumns()
            self.closeSheet()
        else:
            self.closeSheet()

    def closeSheet(self):
        self.filename.end("Table")
        self.filename.start("x:WorksheetOptions")
        self.filename.end("x:WorksheetOptions")
        self.filename.end("ss:Worksheet")

    def setTotalColumns(self):
        """Writes up the code needed to create sum of values indicated by "columns"

        columns should be a list, and each value is paired with a table field (in the order) and can be 0, 1 or 2.
        0 is for an empty cell,
        1 is for the "Totale" word,
        2 is to tell the function to format the cell with the value of the sum"""
        columns = self.totColumns
        rowStyle = {"ss:Height": "15.6425"}
        ce = {"ss:StyleID": "ce10"}
        da = [{"ss:Type": "String"}, {"ss:Type": "Number"}]
        rows = self.num_rows
        self.filename.start("Row", rowStyle)
        for o in columns:
            if o == 0:
                self.filename.start("Cell")
                self.filename.start("Data", da[0])
                self.filename.data("")
                self.filename.end("Data")
                self.filename.end("Cell")
            elif o == 1:
                self.filename.start("Cell", ce)
                self.filename.start("Data", da[0])
                self.filename.data("Totale:")
                self.filename.end("Data")
                self.filename.end("Cell")
            else:
                sum0 = str(("%.2f") % self.sum0)
                sum1 = str(("%.2f") % self.sum1)
                sum2 = str(("%.2f") % self.sum2)
                flag = 0
                rr = str(rows - 1)
                formula_str = "=DOLLAR(SUM(R[-" + rr + "]C:R[-1]C);2)"
                cel_formula = {"ss:StyleID": "ce12", "ss:Formula": formula_str}
                self.filename.start("Cell", cel_formula)
                self.filename.start("Data", da[0])
                if flag == 0:
                    self.filename.data("�     " + sum0)
                    flag = 1
                elif flag == 1:
                    self.filename.data("�     " + sum1)
                    flag = 2
                elif flag == 2:
                    self.filename.data("�     " + sum2)
                self.filename.end("Data")
                self.filename.end("Cell")

        self.filename.end("Row")

    def createFile(self, wtot=False):
        self.XlsXmlHeader()
        self.XlsXmlsheet(wtot)
        self.XlsXmlFooter()

    def XlsXmlFooter(self):
        """Simply closes the Worksheet tags at the end of the file"""
        self.filename.close(self._id)
示例#10
0
def generateRegion(region):
    #fisrt lets see if the gemf is there
    
    print "generating data for " + region
    filter = Regions.getRegionFilterList(region)
    bo = BsbOutlines.BsbOutlines(Env.bsbDir, filter)
    
    xmlFname = region+".xml"
    xmlPath = Env.gemfDir+"/"+xmlFname
    zxmlPath = Env.gemfDir+"/"+region+".zxml"
    xml = XMLWriter(codecs.open(xmlPath, "w", "utf-8"))
    zxml = zipfile.ZipFile(zxmlPath, "w", zipfile.ZIP_DEFLATED)
    gemfFile = Env.gemfDir+region+".gemf"
    
    xml.start("rml", version='1.0')
    
    xml.start("region", description=Regions.getRegionDescription(region), bytes = str(os.path.getsize(gemfFile)))
    
    
    
    
    for kapfile in bo.getkeys():
        xml.start("chart", file=kapfile, name=bo.getname(kapfile), scale=str(bo.getscale(kapfile)), depths=bo.getdepthunits(kapfile), zoom=str(bo.getzoom(kapfile)));
        xml.data(bo.getoutline(kapfile))
        xml.end("chart")
    
    xml.end("region")
    
    xml.end("rml")
    xml.close(1)
    cmd = "tidy -xml -imq " + xmlPath
    os.popen(cmd)
    zxml.write(xmlPath, xmlFname)
    os.remove(xmlPath)
    zxml.close()     
示例#11
0
print "Segment join operations: " + str(segmentJoinCount)
print "Lines: " + str(lineCount)
print "Areas: " + str(areaCount)

# print nodeRefs
# print segmentNodes
# print lineSegments
# print areaRings
# print segmentRefs

print
print "Generating OSM XML..."
print "Generating nodes."

# w = XMLWriter(sys.stdout)
w = XMLWriter(open(options.outputFile, "w"))

w.start("osm", version="0.6", generator="ogr2osm")

# First, the nodes
for (nodeID, (x, y)) in nodeCoords.items():
    w.start("node", visible="true", id=str(nodeID), lat=str(y), lon=str(x))
    for (tagKey, tagValue) in nodeTags[nodeID].items():
        if tagValue:
            w.element("tag", k=tagKey, v=tagValue)
    w.end("node")
    if showProgress:
        sys.stdout.write(".")


# print "Generated nodes. On to shared segments."