source: TI02-CSML/trunk/csml/Examples/Parsing/demoCreateV2.py @ 2052

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/csml/Examples/Parsing/demoCreateV2.py@2052
Revision 2052, 3.5 KB checked in by domlowe, 13 years ago (diff)

Demo code to show creation of PointSeries? feature using CSML V2 parser. Also various small fixes to parser

Line 
1import csml.parser
2import csml.parser_extra
3
4
5  #########################################
6##  construction of CSML objects ##
7  #########################################
8
9
10# create an empty list to hold featureMembers
11fms =[]
12
13
14#### create a PointSeriesFeature: #####
15ptsf=csml.parser.PointSeriesFeature()
16
17#set the id attribute
18ptsf.id='testbed270401'
19
20#set the description
21#note, as description is an xml element not an attribute it is of type csString:
22ptsf.description=csml.parser.csString('Station BLUEBIRD')
23
24#create a PointSeriesCoverage
25ptscvg=csml.parser.PointSeriesCoverage()
26
27#create a TimeSeriesDomain (appropriate domain for a PointSeriesFeature
28ptsd=csml.parser.TimeSeriesDomain()
29#create (and populate) a TimePositionList. Using keyword arguements for conciseness.
30ptsd.time=csml.parser.TimePositionList(frame='#pred20060427001',CONTENT='-18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60')
31   
32#create a RangeSet
33rs=csml.parser.RangeSet()
34#set the quantityList attribute of the RangeSet to be a MeasureOrNullList containing the values for the rangeSet
35rs.quantityList=csml.parser.MeasureOrNullList(uom='MLUnits.xml#m',CONTENT='0.27 0.25 0.25 0.23 0.22 0.22 0.21 0.17 0.17 0.14 0.14 0.12 0.10 0.08 0.08 0.08 0.11 0.13 0.11 0.11 0.13 0.10 0.06 0.06 0.06 0.01 -0.03 -0.06 -0.09 -0.11 -0.11 -0.13 -0.16 -0.18 -0.17 -0.16 -0.18 -0.16 -0.12 -0.09 -0.08 -0.07 -0.06 -0.05 -0.04 -0.03 -0.03 -0.04 -0.02 -0.01 -0.02 -0.02 -0.02 -0.03 -0.03 -0.02 -0.01 -0.01 -0.02 -0.02 -0.03 -0.04 -0.04 -0.05 -0.04 -0.05 -0.08 -0.09 -0.11 -0.12 -0.12 -0.12 -0.12 -0.12 -0.13 -0.14 -0.15')
36
37
38#Add the domain and rangeSet as attributes of the coverage
39ptscvg.pointSeriesDomain=ptsd
40ptscvg.rangeSet=rs
41
42#set the coverage to be the 'value' of the feature
43ptsf.value=ptscvg
44
45
46#the parameter of the feature is of type Phenomenon, here href creates "xlink:href=..."
47param=csml.parser.Phenomenon(href='CFStandardNames.xml#temperature')
48
49#set the parameter of the feature to be the parameter just defined
50ptsf.parameter=param
51
52#append the feature to the list of featureMembers
53fms.append(ptsf)
54
55
56#instantiate a FeatureCollection object (and add all featureMembers)
57fc=csml.parser.CSMLFeatureCollection(featureMembers=fms)
58
59
60########### The Dataset  ##############
61#Create an Empty Dataset
62ds = csml.parser.Dataset()
63#set the xml attribute 'id'
64ds.id='Test001'
65
66#set the description element
67ds.description=csml.parser.csString('This is a test Water level.Period 26/04/06 06h -> 29/04/06 12h')
68
69#set the metaDataProperty(s)
70#if there is only one metaDataProperty you can just do:
71#ds.metaDataProperty=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
72
73#but if there are several you need to put them in a list:
74mdplist=[]
75mdp1=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
76mdp2=csml.parser.csString('Another CCLRC MetaDataProperty')
77mdplist.append(mdp1)
78mdplist.append(mdp2)
79ds.metaDataProperty=mdplist
80
81#now add the featureCollection to the dataset
82ds.featureCollection=fc
83
84#finished creating all the python objects!
85########################################
86
87####### Generating XML #################
88           
89#call the toXML method of the Dataset object:
90csmldoc = ds.toXML()
91#parse and pretty print the result
92strCSML=csml.parser_extra.PrettyPrint(csmldoc)
93strCSML=csml.parser_extra.removeInlineNS(strCSML)
94print strCSML
95
96#(you could save strCSML to a file at this point)
Note: See TracBrowser for help on using the repository browser.