Version 2021
解决位置名称的差异
要使用地图可视化显示 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 地图可视化之前,插件中的规则会与开箱即用的配置文件中的规则合并。如果两个地方都存在相同的规则,插件中的规则会覆盖开箱配置文件中的规则;否则,插件中的新规则将添加到开箱即用规则中。
Flash 地图支持 sfv 和 ShapeId 属性,但 DHTML 不支持。
-
合并规则后,可视化首先在任何规则中查找范围属性。如果它在规则中找到范围属性,则可视化会检查范围是否匹配。例如,如果范围 = 1 并且在 MicroStrategy 桌面或 MicroStrategy Web 中查看 ESRI 地图可视化,则匹配将存在,ESRI 作为地图形状服务器。如果范围 = 2 并且正在移动设备上查看 ESRI 地图可视化,则也将存在匹配项。如果规则没有范围属性,则该规则适用于任何地图形状服务器。如果范围与查看可视化的环境不匹配,则忽略该规则。可视化过滤规则以仅包含范围匹配或没有范围属性的规则。
-
然后,可视化查看每一行数据,检查任何规则(<elem> 节点)中的 MicroStrategy 数据(n 属性的值)中的主要位置名称是否匹配。如果未找到匹配项,它会移动到下一行数据并再次检查主要位置名称上的规则匹配项。如果确实找到匹配项,它会过滤规则以仅包含与当前数据行中的主要位置名称匹配的规则。
-
如果只有一个匹配的名称转换规则,则可视化应用它。它将作为 <elem> 节点的值提供的位置名称替换为 MicroStrategy 数据中的主要位置名称(n 属性的值)。如果有多个规则,地图可视化会首先尝试应用最严格的规则。用于限制规则应用的属性按限制降序排列如下。
- 形状ID
- 角色
- sfv
如果它在 shapeID 属性上找到匹配的规则,则可视化立即应用它;否则,它会查找具有角色属性的规则。它继续沿着属性列表向下,直到找到匹配项。它应用规则并移动到下一行数据。
示例规则
示例规则如下所示:
<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:<code><elem id="1" n="Russia">Democratic Russia</elem> </code>
意义:每当任何地图可视化看到名称“俄罗斯”(在 MicroStrategy 数据中)时,它都应使用名称“民主俄罗斯”从形状服务器获取数据。
这称为通用规则,因为它适用于任何地图可视化,而与形状服务器无关。没有范围属性。
规则 2:<elem id="2" n="Russia" scope="1">Russian Federation</elem>
意义:每当 ESRI 地图可视化看到名称“俄罗斯”(在 MicroStrategy 数据中)时,它应该使用名称“俄罗斯联邦”从 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 数据中)时,它应该使用名称“俄罗斯联邦”从 ESRI 形状服务器获取数据。
此规则具有三个属性——范围、shapeId 和角色——它们限制了规则的应用。scope 属性将规则限制为以 ESRI 作为形状服务器的地图可视化,shapeId 属性将规则限制为具有世界国家边界的地图,角色属性将规则限制为以 Country 作为主要地理属性的地图。
规则 5: <elem id="4" n="Fairfax" sfv="Virginia" role="9">Fairfax County</elem>
意义:每当以 County 作为主要地理属性的任何地图可视化将名称“Fairfax”视为县值并将“Virginia”视为州值(在 MicroStrategy 数据中)时,它都应使用名称“Fairfax County”而不是“Fairfax”从形状服务器获取数据。
该规则有两个属性——sfv 和角色——限制规则的应用。sfv 属性将规则限制为来自弗吉尼亚州的数据,而角色属性将规则限制为以县为主要地理属性的地图。它可以从任何形状服务器获取数据,因为它没有范围属性。
规则 6:<elem id="5" n="Fairfax" sfv="Virginia" shapeId="600">Fairfax County</elem>
意义:每当任何以美国邮政编码作为边界的地图可视化将名称“费尔法克斯”视为县,将“弗吉尼亚”视为州(在 MicroStrategy 数据中)时,它应该使用名称“费尔法克斯县”而不是“费尔法克斯”来获取数据从形状服务器。
此规则有两个属性 — sfv 和 shapeId — 限制规则的应用。sfv 属性将规则限制为来自弗吉尼亚州的数据,而 shapeId 属性将规则限制为具有美国县边界的地图。
规则 7:<elem id="6" n="Fairfax" sfv="VA" shapeId="600">Fairfax County</elem>
意义:每当以美国县为边界的任何地图可视化将名称“费尔法克斯”视为县,将“VA”视为州(在 MicroStrategy 数据中)时,它应使用名称“费尔法克斯县”而不是“费尔法克斯”来获取数据形状服务器。
此规则有两个属性 — sfv 和 shapeId — 限制规则的应用。sfv 属性将规则限制为来自具有缩写 VA(弗吉尼亚)的州的数据,而 shapeId 属性将规则限制为具有美国县边界的地图。
规则 8:<elem id="7" n="St. Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
意义:每当以 Country 作为主要地理属性的任何地图可视化看到名称“St.Thomas' 作为城市,'USA' 作为国家(在 MicroStrategy 数据中),它应该使用名称'St。Thomas, Virgin Islands' 而不是 St. Thomas' 从形状服务器获取数据。
该规则有两个属性——sfv 和角色——限制规则的应用。sfv 属性将规则限制为国家 USA,并且角色属性将规则限制为以 Country 作为主要地理属性的地图。
规则 9:<elem id="8" n="Saint Thomas" sfv="USA" role="3">St. Thomas, Virgin Island</elem>
意义:每当任何以 Country 作为主要地理属性的地图可视化将名称“Saint Thomas”视为城市,将“USA”视为国家(在 MicroStrategy 数据中)时,它都应使用名称“St. Thomas”。Thomas, Virgin Islands' 而不是 St. Thomas' 从形状服务器获取数据。
该规则有两个属性——sfv 和角色——限制规则的应用。sfv 属性将规则限制为国家 USA,并且角色属性将规则限制为以 Country 作为主要地理属性的地图。
规则 10:<elem id="9" n="Delhi" sfv="India">New Delhi</elem>
意义:每当任何地图可视化将字符串“Delhi”视为城市,将“India”视为国家/地区(在 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。插件中的 Rule1 将应用于以俄罗斯为位置名称的任何数据行,因为它是适用于任何地图可视化的通用规则。
-
如果插件中同时包含规则 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。
