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

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

resolving conflicts

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.TimeSeries()
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
57#create a profile series feature
58psf=csml.parser.ProfileSeriesFeature()
59psf.id='profilef'
60psf.description=csml.parser.csString('sample profile series feature')
61cvg = csml.parser.ProfileSeriesCoverage()
62psd=csml.parser.ProfileSeriesDomain()
63rs=csml.parser.RangeSet()
64gcT=csml.parser.GridCoordinatesTable()
65psd.coordTransformTable=gcT
66cvg.profileSeriesDomain=psd
67psf.value=cvg
68fms.append(psf)
69           
70           
71#instantiate a FeatureCollection object (and add all featureMembers)
72fc=csml.parser.CSMLFeatureCollection(featureMembers=fms)
73
74
75########### The Dataset  ##############
76#Create an Empty Dataset
77ds = csml.parser.Dataset()
78#set the xml attribute 'id'
79ds.id='Test001'
80
81#set the description element
82ds.description=csml.parser.csString('This is a test Water level.Period 26/04/06 06h -> 29/04/06 12h')
83
84#set the metaDataProperty(s)
85#if there is only one metaDataProperty you can just do:
86#ds.metaDataProperty=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
87
88#but if there are several you need to put them in a list:
89mdplist=[]
90mdp1=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
91mdp2=csml.parser.csString('Another CCLRC MetaDataProperty')
92mdplist.append(mdp1)
93mdplist.append(mdp2)
94ds.metaDataProperty=mdplist
95
96#now add the featureCollection to the dataset
97ds.featureCollection=fc
98
99#finished creating all the python objects!
100########################################
101
102####### Generating XML #################
103           
104#call the toXML method of the Dataset object:
105csmldoc = ds.toXML()
106#parse and pretty print the result
107strCSML=csml.parser_extra.PrettyPrint(csmldoc)
108strCSML=csml.parser_extra.removeInlineNS(strCSML)
109print strCSML
110
111#(you could save strCSML to a file at this point)
Note: See TracBrowser for help on using the repository browser.