GML讲座测量单位值和观测.docx
《GML讲座测量单位值和观测.docx》由会员分享,可在线阅读,更多相关《GML讲座测量单位值和观测.docx(13页珍藏版)》请在冰豆网上搜索。
GML讲座测量单位值和观测
GML测量单位、值和观测
在许多地理空间应用中,要素属性需要指明测量单位和常规测量比例尺的值(即命名、分类顺序、间隔和比例尺)。
例如,一个建筑物的高度用米或英尺(比例尺)来描述,而物种群中一个物种的值可能是一列物种名称(命名尺度)中的一个名字。
观测结果通常是数量形式的;没有单位的数字是没有意义的。
观测结果可能是水质测量结果、岩石样本或者是土壤类型,甚至是兴趣区域的影像。
不是所有的观测结果都产生测量数据,因为某些测量需要使用某种测量仪器(例如,PH传感器或辐射计),而某些观测行为,如土壤分类则不需要。
一、测量单位
1.1测量单位字典
在GML3.0中,dictionary.xsd模式提供了创建各种字典的模型。
在GML中,Dictionary、Definition、DefinitionCollection、DefinitionaryProxy、dictionaryEntry和indirectEntry是为描述字典提供的模式组件。
一个简单的例子:
在一个桥元素中,属性可能包括跨度、高度和材料等,如右图。
例子中说明了桥实例b1中的各个属性。
跨度为400英尺,高度为50英尺,材料为木材。
在上述例子的GML编码中,无法确定span和height值的单位。
虽然可以简单的假设所有距离的测量单位默认为米——因为米是长度的标准单位,但这样假设对于一般的互操作有很大的限制。
为了给任何一种属性值指明测量单位,GML提供了uom(unitofmeasure)【度量单位】属性,它具有一个指向单位定义资源的URI。
下面的模式文档描述了关于该主题的组件:
units.xsd声明了一组定义度量单位的组件;
measures.xsd声明了一组有类型的度量;
valueObjects.xsd描述了用于聚合的结构和度量的列表。
模式文档units.xsd,measures,xsd,和valueObjects,xsd分别定义了描述度量尺度,类型度量和一般(可能是复杂的)值。
一个使用uom属性的例子:
heightuom=”#m”>50
heightuom>
在GML应用模式中,为了将用户定义的属性值与测量单位联系起来,uom属性必须包含在属性类型定义中。
在上面的例子中,uom属性表明height属性的测量单位是用简略的XPointer#m来表达的。
有三种可能的解释:
(1)对于值是m的gml:
id的定义,值(#m)是一个指向包含当前文档(有height属性出现的)中的元素的指针。
(2)#m片段跟着带有xml:
base属性的基本URI相关,和W3CXMLBaseRecommendation中描述的一样。
(3)#m是一个用来表示测量单位的字符串,它的意义假定为已知;例如:
m表示单位为米。
首先需要文档包含测量单位的定义,例如:
UnitDefinationgml:
id=“m”>
name>meter
name>
quantityType>length
quantityType>
catalogSymbol>m<gml:
catalogSymbol>
</gml:
UnitDefination>
如上述定义表示,由m表示单位有以下的性质:
测量单位叫meter,数量是一个长度,默认为m表示。
然而上面的定义即没有声明谁创建这个定义,也没有说明目录的符号m一成不变。
==基本单位字典条目==
基本单位独立于测量单位,用于描述基本的数量、质量和时间。
基本的单位列表有单位关联的系统来定义。
这些基本单位形成了生成器的基础部分,系统中的所有其他测量单位都是有该生成器派生而来。
表一SI基本单位和基础量
基本单位(表示符号)
量
米(m)
长度
千克(kg)
质量
秒(s)
时间
安培(A)
电流
开(K)
绝对温度、开氏温标
摩尔(mol)
物质的量
坎德拉(cd)
亮度
1.2派生单位字典
与基本单位相比,读者可以通过组合其他单位来创建派生单位。
派生单位用于数量,但不符合基本单位。
例如,质量密度是通过组合米和千克(kg/m3)而派生出的。
在GML中,质量密度字典条目可以编码如下:
dictionaryEntry>
DrivedUnitgml:
id=“massDensity”>【浓度、密度】
description>…
description>
namecodeSpace=“http:
//www.bipm.fr/en/3_SI”>
massdensity
name>
quantityType>massdensity
quantityType>
catalogSymbolcodeSpace=“http:
//www.bipm.fr/en/3_SI”>
kg/m3<gml:
catalogSymbol>
unitDerivation>
uniteTermuom=“#kg”exponent=”1”/>
uniteTermuom=“#m”exponent=”-3”/>
unitDerivation>
DrivedUnit>
dictionaryEntry>
在该例子中,派生的单位字典条目是派生单位定义几何的一部分。
DrivedUnit元素有一个massDensity的gml:
id属性。
除了继承自unitDerivationType的属性,DrivedUnit元素还有unitDerivation属性,它包括一套unitTerm元素。
1.3常规单位字典条目
GML提供了第三种元素:
ConventionUnit,用来给那些既不是基本的也不是派生的单位字典条目编码。
许多应用领域使用常规单位。
例如,在美国长度单位通常是feet而不是meter。
常规的单位可以转换为首选的单位。
例,要么是基本的或者派生的单位。
除了派生自UnitDefinitionType,ConventionUnit内容模型有两个属性可供选择——ConventionToPreferredUnit和roughConventionToPreferredUnit,外加一个可选的unitDerivation属性。
前面两个包含用于编码优先单位转换的元素,unitDerivation属性用于说明单位如何派生自其他单位。
这样的转换通过比例因子或者公式来实现。
dictionaryEntry>
ConventionUnitgml:
id=“ft”>
namecodeSpace=“http:
//www.bipm.fr/en/3_SI”>
foot
name>
quantityType>length
quantityType>
catalogSymbolcodeSpace=“http:
//www.bipm.fr/en/3_SI”>
ft<gml:
catalogSymbol>
ConventionToPreferredUnituom=“#m”>
factor>0.3048
factor>
ConventionToPreferredUnit>
ConventionUnit>
dictionaryEntry>
在GML中,ConventionToPreferredUnit属性用来编码转换到具体优先性的单位。
在这个例子中,m由uom属性值表示。
在此情况下,其属性具有factor元素(因子元素),它包含一个比例因子0.3048.通过常规测量单位的值与比例因子相乘,获得优先选择的测量单位的相关值。
具有uom参考的属性height的简单例子,如下所示:
heightuom=“www.ukusa.org/UnitsDictionary.xml#ft”>164
height>
Height属性引用常规的单位ft,而不是m.比例因子0.3048与值164相乘得倒以米为单位的值,大约为50。
一些常规的单位包括转换参数而不是比例因子,如摄氏温度转换为绝对温度的例子:
K=237.15+C。
编码如下:
dictionaryEntry>
ConventionUnitgml:
id=“degC”>
namecodeSpace=“http:
//www.bipm.fr/en/3_SI”>
DegreeCelsius
name>
quantityType>Celsiustemperature
quantityType>
catalogSymbolcodeSpace=“http:
//www.bipm.fr/en/3_SI”>
℃<gml:
catalogSymbol>
ConventionToPreferredUnituom=“#K”>
formula>
a>273.15
a>
b>1
a>
c>1
a>
formula>
ConventionToPreferredUnit>
ConventionUnit>
dictionaryEntry>
Formula元素可以包含四个元素:
a、b、c和d,它们的值提供将常规单位转换为优先选择测量单位的相关值得转换参数。
元素a、b、c和d的值用于公式y=(a+bx)/(c+dx)。
式子中,x表示但前单位的值,y表示对应的优先选择单位的值。
目前GML还不支持其他更多普通转换表达式。
元素a和d是可选的,如果不设定其值,参数被看做零,如上面的d没有设定值。
转换公式便变成K=237.15+C。
二、值
GML提供了一套能应用于表示观测结果的对象,这些对象叫做值对象。
值对象的需求在不断增加,特别是具有地理参考的观测记录。
值对象
类型
替代组
用于记录···
Boolean
boolean
_ScalarValue
来自两个逻辑值的值
Category
CodeType
_ScalarValue
表示分类的一个术语
Count
Integer
_ScalarValue
表示出现几率的一个整数值
Quantity
MeasureType
_ScalarValue
用于比例的一个数值
BooleanList
booleanOrNullList
_ScalarValuelist
来自两个逻辑值的值的值列表
CategoryList
CodeOrNullList
_ScalarValuelist
表示分类术语列表
CountList
IntegerOrNullList
_ScalarValuelist
表述出现概率的整数值列表
QuantityList
MeasureOrNullListType
_ScalarValuelist
用于比例的数值列表
CategoryExtent
CategoryExtentType
_Value
类别的数值范围。
此值只能包含两项
CountExtent
CountExtentType
_Value
计数的数值范围。
此值只包含两个整数
QuantityExtent
QuantityExtentType
_Value
数量的数值范围。
此值只能包含两项
2.1类别
GML类别是表达不同类型非数值的值对象,非数值类型的值反映命名上的或者顺序上的数值范围(如果类别也是有序的)。
例如,土壤可以指定土壤类型列表中的土壤类型,而岩石可以依照英国地质调查局(BGS)或者其他岩石类型模式分类。
在GML中,应用Category元素,这些种类的值可以编码为类别。
在GML中,Category元素是CodeType类型的,可以看作是从XML模式中的枚举类型中选择的。
CodeType是有用的,当枚举列表是:
●目前不能作为XML模式的枚举类型来表现它;
●通过网络服务支持的。
创建一个值是类别的属性,需要应用Category类型和codeSpace属性,需要应用Category类型和CodeType属性,如下的soilType属性的例子所示:
LandParcelgml:
id=”---”>
soilType>
CategorycodeSpace=“urn:
x-ukusa:
soils:
234”>
podzolic
Category>
soilType>
LandParcel>
codeSpace属性指向Category值存储或定义的位置(如字典、列表或者命名空间)。
2.2具有值对象内容的要素创建
若一个要素具有值对象类型,它必须具有包含子对象的属性。
如下用户定义的LandParcel要素的元素声明如下和类型定义如下:
LandParcelType”
substitutionGroup=”gml:
_Feature”/>
AbstractFeatureType”>
…
soilType”minOccurs=”0”/>
LandParcel的复杂类型定义包括soilType属性,它是全局属性,具有如下元素声明:
ValuePropertyType”>
注意到ValuePropertyType是一个包含Value的组和包含来自几何、时态和测量模式的对象的GML属性类型,组是包含所有可以用替代_Value的值的有用组。
用户定义的属性通过元素声明包括ValuePropertyType,不必定义属性内容。
这个方式可用于定义GML应用模式中所有值对象属性。
这就允许soliType具有很广泛围的可能值类型。
2.3具有单一对象的要素创建
GML提供了以下几种限制一个属性只包含一个特定值对象的属性类型:
●BooleanPropertyType
●CategoryPropertyType
●CountPropertyType
●QuantityPropertyType
例如,上述soilType属性可以是CategoryPropertyType类型,如下面元素声明所示:
CategoryPropertyType/>
注意,上面列出的属性类型只适用于可以用来替代_ScalarValue的对象,而不适用于_ScalarValueList对象。
2.4集合值
GML3.0提供了几个组件用于创建集合值,比如岩石类型列表、传感器值列表数组和测量属性值列表。
这些组件包括如下内容:
1QuantityList②CategoryList③CountList
④BooleanList⑤CompositeValue⑥ValueArray
●标量值列表
●组合值
●值数组
三、观测
概念:
GML观测使用仪器,如传感器或照相机模拟观测行为。
例如,城市航拍相片的或得是一种观测。
observation.xsd定义了用于各种观测创建模式的基本组建。
3.1如何编码观测
在GML,观测被构造为具有合法时间和结果的GML要素,如下面的例子:
observationgml:
id=“Vancouver1”>【温哥华】
locationxlink:
href=“http:
//www.ususa.org/weather/GrouseMountain”>
timeStamp>
TimeInstant>
timePosition>2003-06-23T08:
51:
232
timePosition>
TimeInstant>
timeStamp>
usingxlink:
href=“http:
//www.ususa.org/thermometers/thermometers2”>【使用的是温度计或者是体温计】
usingxlink:
href=“http:
//www.ususa.org/weather/GrouseMountain”>
resultOf>
Temperatureuom=”urn:
x-si:
v1999:
uom:
degreesC”>21
Temperature>
resultOf>
observation>
在上述例子中,GML的Observation元素用于编码具有location、timeStamp、using、target和resultOf属性的观测。
timeStamp属性包含观测进行的时间,using属性是指测量过程中用到的仪器,target属性是指观测的目标,resultOf属性包含或指的是一个值对象。
using、target和resultOf属性不是包含内嵌的就是外部的值。
3.2定向观测
定向观测本质上是具有direction属性的观测,direction属性是用来表明进行观测的方向(例如,西北方向)。
定向观测应该只用于特殊的,具有方向定位的观测,如单独进行的可视观测。
DirectedObservation元素可用于编码定向观测。
但是用户自定义的定向观测也可以使用。
DirectedCityPhotogml:
id=“Vancouver1”>【温哥华】
locationxlink:
href=“http:
//www.ususa.org/weather/GrouseMountain”>
timeStamp>
TimeInstant>
timePosition>2003-06-23T08:
51:
232
timePosition>
TimeInstant>
timeStamp>
usingxlink:
href=“http:
//www.ususa.org/cameras/pentaxMZS”>
targetxlink:
href=“http:
//www.ususa.org/tourism/CNTower”>
resultOfxlink:
href=“http:
//www.ususa.org/photos/CNTow-er23.jpg”>
direction>
CompassPoint>NW
CompassPoint>
direction>
DirectedCityPhoto>
在上面的例子中,定向观测得到的是一个面向西北方向拍得的照片,方向是由direction属性值来表示。
direction属性定义在directions.xsd模式中,可以包含或引用下面对象中的一个:
DirectionVector、CompassPiont、DirectionKeyword或DirectionString。
在上面的例子中,方向属性包含CompassPiont属性,它是简单的枚举字符串类型。
3.3观测集合
观测可以在要素集合或者观测集合里编码,它是一组观测。
下面的例子显示了一个用户自定义的观测集合AerialPhotos【航空照片】,它包含一系列的CityPhoto和StatePhoto观测。
AerialPhotogml:
id=“Canada1”>
observationMenbers>
CityPhotogml:
id=“Vancouver1”>
…
CityPhoto>
CityPhotogml:
id=“Toronto1”>
…
CityPhoto>
CityPhotogml:
id=“…”>
…
CityPhoto>
…
observationMenbers>
AerialPhoto>
3.4用户自定义观测元素的创建规则
●用户定义的观测必须是直接或间接地派生自ObservationType。
●用户定义的观测集合应该派生自或仿效AbstractFeatureCollectionType模式。
四、总结
GML3.0提供了许多涉及观测和地理对象测量的模式及。
这些模式包括units.xsd、measure.xsd、directions.xsd和observation.xsd,这些模式都可以通过下面的网址查到: