在 MapForce 中,使用通配符进行 XML 数据映射和转换
MapForce 2014 现在支持映射 XML 通配符,从而为 XML 模式提供一种内置的扩展机制,该机制以 xs:any 或 xs:anyAttribute 的形式实现。
请考虑以下 XML 片段,该片段在 XMLSpy 软件中显示如下:

这段代码片段展示了来自 Garmin GPS 设备记录的两次轨迹点,这些数据来自一个非常长的文件。XML 数据遵循 GPX XML 模式,同时 Garmin 增加了扩展功能,用于记录速度和航向信息。通过 XML 通配符映射,您可以在 MapForce 中将这些扩展功能映射到其他元素,就像映射 XML 模式中明确定义的元素一样。
假设我们想要读取一个 .gpx 文件,并从中提取出一次旅行过程中记录到的最高速度

我们可以通过导入一个 .gpx 文件作为输入组件,来开始一个新的 MapForce 映射设计。MapForce 会显示与该 XML 模式中定义的所有元素,这些元素都可以用于映射。下图显示了 XML 模式中与轨迹点相关的部分:

经度、纬度、海拔高度和时间紧随“trkpt”元素之后,它们定义了XML片段中包含的数据。以下各项,从磁偏角“magvar”到DGPS站的ID“dgpsid”,都是可选的,并且不会出现在Garmin的数据文件中。
该 XML 模式中并未定义速度和路线相关的信息。相反,速度和路线的定义是通过 xs:any 元素实现的,该元素位于图像的底部。点击 xs:any 元素旁边的图标会打开一个对话框,允许我们导入另一个 XML 模式,该模式定义了扩展内容,并创建一个包装器,用于将原始 XML 模式和扩展内容结合起来。导入完成后,新的元素将显示在源组件中,并且可以进行映射

在地图中对数据进行排序
与 MapForce 一起安装的示例文件中,包含一个名为 FindHighestTemperatures.mfd 的映射文件,我们可以将其用作示例,利用排序函数从我们的文件中提取最高速度

这个函数会按照从高到低的顺序对所有速度值进行排序,然后只将排序后的第一个值作为输出。显示的“Z-A”排序方式会自动将数值数据从最高到最低进行排序。
在映射中转换数值
最后,我们需要将速度从米/秒转换为英里/小时,将结果四舍五入到小数点后两位,并添加一些描述性文字

上面展示的字符串连接函数的结果将被写入文本文件中,作为输出

请注意,在函数之间转换时,我们无需显式地将速度(speed)从数值类型转换为字符串类型,MapForce 会自动处理数据类型的转换。以下是完整映射的简化视图,其中标注了主要的操作:

点击图片或点击此处以查看完整尺寸的图片。
Altova的网站提供免费的在线产品培训,内容涵盖MapForce。您甚至可以下载MapForce的免费试用版,立即开始提升您自身的数据映射和转换技能!