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

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

more on profile features

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='profileseriesf'
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.rangeSet=rs
67cvg.profileSeriesDomain=psd
68psf.value=cvg
69psf.parameter=param #defined earlier
70fms.append(psf)
71           
72                       
73#create a profile feature
74pf=csml.parser.ProfileFeature()           
75pf.id='profilef'                       
76pf.description=csml.parser.csString('sample profile feature')           
77cvg = csml.parser.ProfileCoverage()
78cvg.profileDomain=csml.parser.csString('1000, 950, 850, 700, 600, 500, 400, 300, 250, 200, 150, 100, 50, 30, 10')
79rs=csml.parser.RangeSet()
80rs.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')
81cvg.rangeSet=rs
82pf.value=cvg
83pf.parameter=param
84pf.location=csml.parser.csString('75 35')
85pf.time=csml.parser.csString('2003-02-02T0:0:0.0')
86fms.append(pf)           
87                       
88                       
89#instantiate a FeatureCollection object (and add all featureMembers)
90fc=csml.parser.CSMLFeatureCollection(featureMembers=fms)
91
92
93########### The Dataset  ##############
94#Create an Empty Dataset
95ds = csml.parser.Dataset()
96#set the xml attribute 'id'
97ds.id='Test001'
98
99#set the description element
100ds.description=csml.parser.csString('This is a test Water level.Period 26/04/06 06h -> 29/04/06 12h')
101
102#set the metaDataProperty(s)
103#if there is only one metaDataProperty you can just do:
104#ds.metaDataProperty=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
105
106#but if there are several you need to put them in a list:
107mdplist=[]
108mdp1=csml.parser.csString('Data (c) 2007 CCLRC // www.cclrc.ac.uk')
109mdp2=csml.parser.csString('Another CCLRC MetaDataProperty')
110mdplist.append(mdp1)
111mdplist.append(mdp2)
112ds.metaDataProperty=mdplist
113
114#now add the featureCollection to the dataset
115ds.featureCollection=fc
116
117#finished creating all the python objects!
118########################################
119
120####### Generating XML #################
121           
122#call the toXML method of the Dataset object:
123csmldoc = ds.toXML()
124#parse and pretty print the result
125strCSML=csml.parser_extra.PrettyPrint(csmldoc)
126strCSML=csml.parser_extra.removeInlineNS(strCSML)
127print strCSML
128
129#(you could save strCSML to a file at this point)
Note: See TracBrowser for help on using the repository browser.