MicroStrategy ONE
解决位置名称差异
显示 MicroStrategy 使用地图可视化数据时,ESRI 使用的位置名称必须与 MicroStrategy。然而,地理位置使用的名称并不总是唯一的,或者与 ESRI 使用的名称相同。
-
不同的位置可能具有相同的主要位置名称,并且需要次要位置名称来使其唯一。例如,美国的许多县都以“华盛顿”命名。该县名在州内是唯一的,但在州外却不是唯一的,因为主要地点名称在多个州都存在。为了唯一地标识这样的县,您需要用州名来限定它。当您这样做时,华盛顿 AL 就会与华盛顿 GA 或华盛顿 PA 截然不同。
-
ESRI 有时使用的位置名称与 MicroStrategy。例如,ESRI 将俄罗斯称为“俄罗斯联邦”,而 MicroStrategy 将其称为‘俄罗斯’。
为了解决地名差异, MicroStrategy 使用一个名为的配置文件 mapNameConversions.xml
。在此配置文件中,您可以定义允许您映射的规则 MicroStrategy 当位置名称不匹配时,会将位置名称更改为地图供应商使用的位置名称,并在需要时将次要位置名称添加到匹配项中。您可以将规则的应用限制于特定的地图供应商(地图形状服务器)、具有特定类型边界的地图以及使用特定地理属性进行地图绘制的地图。
开箱即用 mapNameConversions.xml
文件如下所示。它有一条规则,由 <elem>
节点。
<?xml version="1.0" encoding="UTF-8"?>
<nameConversions>
<!--
Scope for ESRI - 1
Scope for MSTR - 2
Scope for Mapbox - 4
-->
<elem id="1" n="Russia" scope="1">Russian Federation</elem>
</nameConversions>
要覆盖现成的名称转换配置文件中设置的规则并添加新规则,请创建自定义 mapNameConversions.xml
文件并将其添加到您的插件中,如下所述。
-
创建一个
mapNameConversions.xml
文件内容如下所示,并将其粘贴到WEB-INF/xml/config
在您的插件文件夹中。复制<?xml version="1.0" encoding="UTF-8"?>
<nameConversions>
<!--
Scope for ESRI - 1
Scope for MSTR - 2
Scope for Mapbox - 4
-->
<!--
... add <elem> nodes to define new rules or override existing rules ...
-->
</nameConversions>
-
将您自己的规则添加到文件中。每条规则都将是单独的
<elem>
元素,其中包含定义规则的属性。寻求帮助创建<elem>
元素,请参阅 规则定义 和 规则解析。规则定义描述了可用于定义规则的属性,规则解析解释了如何应用规则。 -
保存更改。
规则定义
每条规则都由一个 <elem>
元素,其中包含定义规则的属性,如下表所述:
父元素
|
节点数 | 描述 |
---|---|---|
|
1 |
<nameConversions>元素是地图名称转换配置文件的根节点。它是定义名称转换规则的<elem>节点的父节点。 |
1 个或以上 |
<elem> 元素定义单个名称转换规则。此元素的值是地图形状服务器使用的位置名称;此值映射到 MicroStrategy 位置名称(由此元素的 n 属性指定)。可以使用以下属性来定义名称转换规则:
1 = ESRI 提供形状(形状存储在 ESRI 服务器上)
|
规则解析
在运行 ESRI Map 可视化之前,插件中的规则会与开箱即用的配置文件中的规则合并。如果两处都存在相同的规则,则插件中的规则覆盖现成配置文件中的规则;否则,插件中的新规则将添加到现成规则中。
Flash 地图支持 sfv 和 ShapeId 属性,但 DHTML 不支持。
-
一旦规则合并,可视化首先会在任何规则中查找范围属性。如果在规则中找到范围属性,则可视化会检查范围是否匹配。例如,如果 scope = 1 并且正在查看 ESRI Map 可视化,则存在匹配 MicroStrategy 桌面或 MicroStrategy Web,以ESRI作为地图形状服务器。如果范围 = 2 并且在移动设备上查看 ESRI 地图可视化,则也会存在匹配。如果规则没有范围属性,则该规则适用于任何地图形状服务器。如果范围与查看可视化的环境不匹配,则会忽略该规则。可视化会过滤规则,使其仅包含那些在范围上匹配或没有范围属性的规则。
-
然后,可视化工具会查看每一行数据,检查主要地点名称是否与 MicroStrategy 任何规则中的数据(n 属性的值)(<elem>节点)。如果没有找到匹配项,它会移动到下一行数据并再次检查主要位置名称是否符合规则。如果确实找到匹配项,它会过滤规则,以仅包含与当前数据行中的主要位置名称匹配的规则。
-
如果只有一个匹配的名称转换规则,则可视化将应用该规则。它将提供的位置名称替换为<elem>中主要位置名称的节点 MicroStrategy 数据(n 属性的值)。如果存在多条规则,地图可视化将首先尝试应用最严格的规则。用于限制规则应用的属性按限制程度递减的顺序列出如下。
- 形状ID
- 角色
- 病毒
如果发现与 shapeID 属性匹配的规则,可视化会立即应用该规则;否则,它会寻找具有 role 属性的规则。它会继续沿着属性列表查找,直到找到匹配项。它应用规则并移动到下一行数据。
示例规则
示例规则如下:
<elem id="1" n="Russia">Democratic Russia</elem>
<elem id="2" n="Russia" scope="1">Russian Federation</elem>
<elem id="3" n="Russia" scope="1" shapeId="400">Democratic Russia</elem>
<elem id="4" n="Russia" scope="1" shapeId="400" role="3">Russian Federation</elem>
<elem id="5" n="Fairfax" sfv="Virginia" role="9">Fairfax County</elem>
<elem id="6" n="Fairfax" sfv="Virginia" shapeId="600">Fairfax County</elem>
<elem id="7" n="Fairfax" sfv="VA" shapeId="600">Fairfax County</elem>
<elem id="8" n="St. Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
<elem id="9" n="Saint Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
<elem id="10" n="Delhi" sfv="India">New Delhi</elem>
下面提供了每个示例规则的解释:
规则1:<elem id="1" n="Russia">Democratic Russia</elem>
意义:每当任何地图可视化看到“俄罗斯”这个名称时(在 MicroStrategy 数据),它应该使用‘民主俄罗斯’这个名称从形状服务器获取数据。
这被称为通用规则,因为它适用于任何地图可视化,无论形状服务器如何。没有范围属性。
规则2:<elem id="2" n="Russia" scope="1">Russian Federation</elem>
意义:每当 ESRI 地图可视化看到名称“俄罗斯”(在 MicroStrategy 数据),则应使用名称“Russian Federation”从 ESRI 形状服务器获取数据。
该规则具有范围属性,该属性限制规则的应用到以 ESRI 作为形状服务器的地图可视化。
规则 3: <elem id="3" n="Russia" scope="1" shapeId="400">Democratic Russia</elem>
意义:每当 ESRI 地图可视化显示世界各国的边界时,看到“俄罗斯”这个名称(在 MicroStrategy 数据),则应使用名称‘民主俄罗斯’从 ESRI 形状服务器获取数据。
该规则有两个属性——scope 和 shapeId——用于限制规则的应用。scope 属性将规则限制为以 ESRI 作为形状服务器的地图可视化,shapeId 属性将规则限制为具有世界国家边界的地图。
规则 4: <elem id="4" n="Russia" scope="1" shapeId="400" role="3">Russian Federation</elem>
意义:每当 ESRI 地图可视化显示世界各国的边界并以国家/地区作为主要地理属性时,看到名称“俄罗斯”(在 MicroStrategy 数据),则应使用名称“Russian Federation”从 ESRI 形状服务器获取数据。
该规则具有三个属性——scope、shapeId和role,用于限制规则的应用。scope 属性将规则限制为以 ESRI 作为形状服务器的地图可视化,shapeId 属性将规则限制为具有世界国家边界的地图,role 属性将规则限制为以国家/地区为主要地理属性的地图。
规则 5: <elem id="4" n="Fairfax" sfv="Virginia" role="9">Fairfax County</elem>
意义:任何以县为主要地理属性的地图可视化都会将名称“Fairfax”视为县值,将“Virginia”视为州值(在 MicroStrategy 数据),应该使用名称 'Fairfax County' 而不是 'Fairfax' 从形状服务器获取数据。
该规则具有两个属性——sfv 和 role——用于限制规则的应用。sfv 属性将规则限制为来自弗吉尼亚州的数据,而 role 属性将规则限制为以县为主要地理属性的地图。由于它没有范围属性,它可以从任何形状的服务器获取数据。
规则 6:<elem id="5" n="Fairfax" sfv="Virginia" shapeId="600">Fairfax County</elem>
意义:任何以美国邮政编码为边界的地图可视化都会将“Fairfax”视为县,将“Virginia”视为州(在 MicroStrategy 数据),应该使用名称 'Fairfax County' 而不是 'Fairfax' 从形状服务器获取数据。
该规则有两个属性——sfv 和 shapeId——用于限制规则的应用。sfv 属性将规则限制为来自弗吉尼亚州的数据,shapeId 属性将规则限制为具有美国县边界的地图。
规则 7:<elem id="6" n="Fairfax" sfv="VA" shapeId="600">Fairfax County</elem>
意义:任何以美国各县为边界的地图可视化都会将“Fairfax”视为县,将“VA”视为州(在 MicroStrategy 数据),应该使用名称 'Fairfax County' 而不是 'Fairfax' 从形状服务器获取数据。
该规则有两个属性——sfv 和 shapeId——用于限制规则的应用。sfv 属性将规则限制为缩写为 VA(弗吉尼亚州)的州的数据,shapeId 属性将规则限制为具有美国县边界的地图。
规则 8:<elem id="7" n="St. Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
意义:每当以国家/地区作为主要地理属性的任何地图可视化看到名称“St.托马斯作为城市,美国作为国家(在 MicroStrategy 数据),则应使用名称“St.托马斯,维尔京群岛'而不是圣托马斯'从形状服务器获取数据。
该规则具有两个属性——sfv 和 role——用于限制规则的应用。sfv 属性将规则限制为国家美国,role 属性将规则限制为以国家为主要地理属性的地图。
规则 9:<elem id="8" n="Saint Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
意义:任何以国家/地区作为主要地理属性的地图可视化都会将名称“圣托马斯”视为城市,将“美国”视为国家/地区(在 MicroStrategy 数据),则应使用名称“St.托马斯,维尔京群岛'而不是圣托马斯'从形状服务器获取数据。
该规则具有两个属性——sfv 和 role——用于限制规则的应用。sfv 属性将规则限制为国家美国,role 属性将规则限制为以国家为主要地理属性的地图。
规则 10:<elem id="9" n="Delhi" sfv="India">New Delhi</elem>
意义:每当任何地图可视化将字符串“德里”视为城市并将“印度”视为国家时(在 MicroStrategy 数据),它应该使用字符串 'New Delhi' 而不是 'Delhi' 从形状服务器获取数据。
此规则具有 sfv 属性,该属性限制该规则的应用范围为印度这个国家。
规则解析示例
地名‘俄罗斯’有多个规则:规则 1、2、3 和 4。
-
规则 1 是一条通用规则,适用于主要地点名称“俄罗斯”,没有其他限制。
-
规则 2 适用于位置名称“俄罗斯”,但限制该规则的应用到以 ESRI 作为地图形状服务器的可视化(范围 =“1”)。
-
规则 3 适用于地名“俄罗斯”,但限制更为严格。它将规则的应用限制到以 ESRI 作为地图形状服务器的可视化(范围 =“1”),但它也将应用限制到以美国州名边界呈现的数据(shapeId =“400”)。
-
规则 4 适用于地点名称“俄罗斯”,但限制最为严格。它将规则的应用限制在以 ESRI 为形状服务器的可视化(范围 = “1”)和以美国州名边界呈现的数据(shapeId = “400”),但它也将应用限制在以国家/地区为主要地理属性的可视化(角色 = “3”)
以下是使用上面描述的示例规则对名称“Russia”进行规则解析的示例:
-
如果插件中只包含规则 1,那么它将用于覆盖现成的名称转换配置文件中的规则 1。插件中的规则 1 将应用于以俄罗斯作为位置名称的任何数据行,因为它是适用于任何地图可视化的通用规则。
-
如果插件中同时包含规则 1 和规则 2,则可视化将首先尝试应用规则 2,因为它比规则 1 更严格。规则2具有范围属性,具有范围的规则总是优先于通用规则。如果 ESRI 是地图可视化的形状服务器(范围匹配),则规则 2 将应用于以“俄罗斯”作为位置名称的任何数据行;否则,将应用插件中的规则 1。
-
如果插件中包含规则 1、规则 2 和规则 3,则可视化将首先尝试应用规则 3,因为它比规则 2 更严格。它具有形状属性,其限制比简单的范围限制更具限制性。如果 ESRI 是地图可视化的形状服务器(范围匹配)且当前形状文件为“世界各国”(shapeId="400"),则规则 3 将应用于任何以“俄罗斯”作为位置名称的数据行;否则,它将尝试应用规则 2。如果规则 2 失败,它将应用插件中的规则 1。
-
如果插件中仅包含规则 3,则可视化将首先尝试应用规则 3,因为它比现成的名称转换配置文件中的规则 1 更具限制性。规则 3 具有 shapeId 属性,其限制比简单的范围限制更为严格。如果 ESRI 是地图可视化的形状服务器(范围匹配)并且当前形状文件为“世界各国”(shapeId="400"),则规则 3 将应用于任何以“俄罗斯”作为位置名称的数据行;否则,它将应用现成的名称转换配置文件中的规则 1。
-
如果插件中包括规则 1、规则 2、规则 3 和规则 4,则可视化将首先尝试应用规则 4,因为它的限制性最强。它具有比形状属性更具限制性的角色属性。如果 ESRI 是地图可视化的形状服务器(范围匹配)且地理属性为“县”(角色=“3”),则规则 4 将应用于任何以“俄罗斯”作为位置名称(主要地理属性的值)的数据行;否则,它将尝试应用规则 3。如果规则 3 失败,它将尝试应用规则 2,如果规则 2 失败,它将应用插件中的规则 1。