MicroStrategy ONE

正在渲染自定义形状

您可以将自定义形状与 MicroStrategy 数据并将其呈现在基于云的 ESRI 地图上。将自定义形状与以下提供的开箱即用形状集成 MicroStrategy,您可以在插件中修改地理形状配置文件并添加 KML 格式的自定义形状文件,如下所述:

  1. 创建或获取定义地图自定义形状的 KML 文件

  2. 修改地理形状配置文件,以便 ESRI 地图可视化可以使用您的自定义形状 

  3. 确认您可以使用自定义形状

下载为您提供的 ESRI 地图可视化插件并按照以下步骤操作。

  1. 创建或获取定义地图自定义形状的 KML 文件

    您可以使用已有的 KML 文件,也可以创建一个新文件。KML 是一种用于在二维地图和三维地球浏览器中显示地理数据的文件格式。示例 KML 文件的代码片段如下所示:

    复制
    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2">
        <Document>
            <Placemark>
                <name>attribute value</name>
                <ExtendedData>
                    <Data name="attribute key">
                        <DisplayName>attribute display value</DisplayName>
                        <Value>attribute value</Value>
                    </Data>
                </ExtendedData>
    ...
                <Polygon>
                    <outerBoundaryIs>
                        <LinearRing>
                            <coordinates>set of custom shape coordinates</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
    ...
        </Document>
    </kml>

    每个 <Placemark> 元素包含自定义形状之一的形状定义数据。它还包含将每个形状与其相应的数据进行匹配所需的信息。

    • 默认情况下, <name> 元素用于将数据与形状匹配它的值必须对应于 MicroStrategy 地图使用的属性元素数据。例如,如果您的自定义形状是状态,则 <name> 元素可能是“马里兰州”或“加利福尼亚州”。

    • 可以通过添加 < 来覆盖默认匹配行为ExtendedData> 元素作为子元素 <Placemark>。这允许您将自定义形状与以多种方式识别的数据相匹配,从而提供了灵活性。例如,如果您想要将 KML 文件中的形状与除州名称外还由州名称或对象 ID 缩写标识的州数据进行匹配,则可以执行此操作。

    • <coordinates> 元素(的子元素 <Polygon><outerBoundaryIs><LinearRing>)包含每个自定义形状的定义。该定义是由经度、纬度和可选海拔高度描述的一组点,这些点确定了形状的轮廓。

    ESRI 形状文件和 KML 形状文件的形状类型仅支持多边形。

    坐标系必须是 全基因组测序84

    执行以下操作:

    • 为定义自定义形状的 KML 文件指定一个有意义的名称,例如 CustomCountyShapesFile.kml,并将其保存在您的 ESRI 地图可视化插件文件夹中。
    • 将 KML 文件直接保存在插件中,或者在插件中创建一个 kml 文件夹并将自定义形状文件保存在该 kml 文件夹下。
  2. 修改地理形状配置文件,以便 ESRI 地图可视化可以使用您的自定义形状

    导航 mstrGeoShapesConfig.xml,位于 xml/config 放在插件文件夹中,然后在文本编辑器中打开它。该文件应包含如下所示示例的代码。

    复制
    <layers>
        <layer id="900" title="Custom County Map Layer" ml="CustomCountyShapesFile.kml">
            <shapeKeys>
                <shapeKey key="name" path="/ExtendedData/Data[@name='name']/value"/>
                <shapeKey key="abbr" path="/ExtendedData/Data[@name='abbreviatedName']/value"/>
                <shapeKey key="id" path="/ExtendedData/Data[@name='object_id']/value"/>
            </shapeKeys>
        </layer>
    </layers>
    <shapes>
        <shape id="901"
            custom="true"
            plugin="ConnectorForMap"
            desc="Custom Counties by Name"
            descWeb="mstrweb.7777n"
            descFlash="mstr.6666n"
            descDesktop="5555n"
            roleId="9"
            type="Polygon"
            default="false"
            shapeCat="1004"
            shapeKey="name"
            layerId="900"
            sf="name"
            sfr="2"
        />
        <shape id="902"
        custom="true"
        plugin="ConnectorForMap"
        desc="Custom Counties by Abbreviation"
        descWeb="mstrweb.7777a"
        descFlash="mstr.6666a"
        descDesktop="5555a"
        roleId="9"
        type="Polygon"
        default="false"
        shapeCat="1004"
        shapeKey="abbr"
        layerId="900"
        sf="name"
        sfr="2"
        />
        <shape id="903"
            custom="true"
            plugin="ConnectorForMap"
        desc="Custom Counties by ID"
        descWeb="mstrweb.7777i"
        descFlash="mstr.6666i"
        descDesktop="5555i"
        roleId="9"
        type="Polygon"
        default="false"
        shapeCat="1004"
        shapeKey="id"
        layerId="900"
        sf="name"
        sfr="2"
        />
    </shapes>

    进行以下更改以自定义适合您的环境的地理形状配置文件。您需要更改的值在上面的代码示例中以粗体显示。

    为了孩子 <layer> 父元素下的元素 <layers> 元素,执行以下操作:
    • 为了 id 属性,将“900”替换为唯一的值(未被使用过的值) MicroStrategy 对于地图层)。该值唯一标识使用您的自定义形状的地图图层。它被引用于 layerID 属性中的 <shape> 元素。

      多个 <shape> 元素可以使用相同的地图图层(即相同的 KML 文件),但使用不同的键来匹配形状和数据,例如名称、缩写或 ID。用于匹配的密钥由 shapeKey 不同的属性 <shape> 元素。每个自定义形状的匹配如下:

      • 每一个的价值 shapeKey 属性用于查找与中的关键属性的匹配项 <shapeKey> 元素。

        shapeKey 值区分大小写。

      • 配套的 <shapeKey> 元素包含一个 path 属性,它指向一个特定的 <Data> KML 文件中的元素(由 name 属性中的 <Data> 元素)。

      • 配套的 <Data> 元素有一个子元素 <Value> 元素,其值用于获取 MicroStrategy 与此自定义形状关联的数据。

    • 为了 title 属性,将“自定义县地图图层”替换为描述此使用自定义形状的地图图层的值。

    • 为了 ml 属性,替换“CustomCountyShapesFile.kml" 替换为插件文件夹内 KML 文件的名称,包括相对路径。例如,使用 ml="CustomCountyShapesFile.kml" 对于直接保存在插件文件夹下的文件,或使用 ml="kml/CustomCountyShapesFile.kml" 对于保存在插件文件夹下名为 kml 的文件夹中的文件。

    为了孩子 <shapeKey> 父元素下的元素 <shapeKeys> 元素,执行以下操作:
    • 删除任何子项 <shapeKey> 您的环境不需要的元素。在为您提供的插件中,包含其中三个元素。一个通过名称来标识形状,另一个通过缩写来标识形状,第三个通过 ID 来标识形状。

      • 如果您不想使用其中一个或多个元素,请删除相应的元素。

      • 如果您确实想使用其中一个或多个元素,请保留适当的元素。

      • 如果您想通过不同的值来标识形状,请更改 key 属性之一 <shapeKey> 元素。例如,如果您想使用名为 SMSA 的值来标识您的形状,您的代码可能如下所示:
        <shapeKey key="SMSA" path="/ExtendedData/Data[@name='SMSA']/value"/>

        shapeKey 值区分大小写。

    • 对于每个孩子 <shapeKey> 您的环境所需的元素:

      • 设置 key 属性值将用于标识 <shape> 与自定义形状文件关联的元素。该值与 shapeKey 对应的属性 <shape> 元素。

      • 如果您希望用于将数据与形状匹配的数据字段与形状的值不同<name>每个元素 <Placemark> 在 KML 文件中,设置 path 属性到您要使用的数据字段的位置,使用格式 /ExtendedData/Data[@name='>MyCustomShapes']/value

        例如,假设您想要使用州缩写来将自定义形状与数据相匹配,并且 KML 文件中的代码如下所示:

        复制
        <?xml version="1.0" encoding="UTF-8"?>
        <kml xmlns="http://www.opengis.net/kml/2.2">
            <Document>
                <Placemark>
                    <name>custom shape name</name>
                    <ExtendedData>
                        <Data name="abbreviatedName">
                            <DisplayName>Pennsylvania</DisplayName>
                            <Value>PA</Value>
                        </Data>
                    </ExtendedData>
                    <Polygon>
                        <outerBoundaryIs>
                            <LinearRing>
                                <coordinates>set of custom shape coordinates</coordinates>
                            </LinearRing>
                        </outerBoundaryIs>
                    </Polygon>
                </Placemark>
        ...
            </Document>
        </kml>

        你的代码中的 mstrGeoShapesConfig.xml 文件看起来像这样:

        复制
        <layers>
            <layer id="900" title="My Custom Map Layer" ml="MyCustomShapesFile.kml">
                <shapeKeys>
                    <shapeKey key="abbr" path="/ExtendedData/Data[@name='abbreviatedName']/value"/>
                </shapeKeys>
            </layer>
        </layers>
    为了孩子<shape>父元素下的元素 <shapes> 元素,执行以下操作:
    • 删除任何子项 <shape> 您的环境不需要的元素。在为您提供的插件中,包含其中三个元素。一个通过名称来标识形状,另一个通过缩写来标识形状,第三个通过 ID 来标识形状。这些值由 shapeKey 属性。

      • 如果您不想使用其中的一个或多个,请删除相应的元素。

      • 如果您确实想使用其中的一个或多个,请保留适当的元素。

      • 如果您想通过不同的值来标识形状,请更改 shapeKey 属性之一 <shape> 元素。例如,如果您想使用名为 SMSA 的值来标识您的形状,您的代码可能如下所示:

        shapeKey 值区分大小写。

        复制
        <shape
        ...
            shapeKey="SMSA"
        ...
        />
    • 对于每个孩子 <shape> 您的环境所需的元素:

      • 为了 id 属性,将当前值替换为唯一的值(不是已被使用的值) MicroStrategy 对于形状)。该值唯一标识此自定义形状定义。

      • 为了 custom 属性,保留当前值“true”。

      • 为了 plugin 属性,如果您使用的是为您提供的默认插件,请保留当前值 ConnectorForMap,或者如果您使用其他名称创建了插件,则将其设置为不同的名称。

      • 为了 desc 属性,将当前值更改为有意义的描述。当您选择显示包含区域的地图时,这是在 ESRI 地图可视化属性面板的边界下拉列表中显示的值。例如,如果这些是 SMSA 标识的区域,则该值可能是 desc="Regions by SMSA"。或者,如果这些是由州缩写标识的州,则该值可能是 desc="Custom States by Abbr"。如果要本地化描述,则需要添加以下附加属性的值:

        • descWeb

        • descFlash

        • descDesktop

      • 为了 roleId 属性,使用以下值之一将当前值更改为自定义形状的地理角色:

        角色ID 描述

        1

        城市

        2

        状态

        3

        国家/地区

        4

        位置

        5

        纬度

        6

        经度

        7

        其他

        8

        邮政编码

        9

        • 为了 type 属性,保留“Polygon”的当前值。

          ESRI 形状文件和 KML 形状文件的形状类型仅支持多边形。

        • 为了 default 属性,如果您不希望这是默认形状文件,请保留当前值“false”;否则,将其设置为“true”。

        • 使用 shapeCat 如果您需要更精细地识别形状,请使用属性。形状类别是一个整数,例如国家/地区为 1002,美国各州为 1003,美国县为 1004。例如,假设您选择“7”(其他)作为 roleId 属性的值,并且您希望使用 SMSA 来定义您的形状。您可以将 shapeCat 属性设置为一个不被使用的值 MicroStrategy。此外,要在移动设备上显示自定义形状,需要唯一的 shapeCat 值。

        • 为了 shapeKey 属性,将其设置为将用于将形状与数据进行匹配的值。例如,在上面的代码中,值是 name、id 和 desc。这就是它的价值 key 对应的属性 <shapeKey> 中的元素 <layers> 等级制度。

        • 为了 layerid 属性,将其设置为 id 您用于的属性 <layer> 中的元素 <layers> 引用与此地图图层关联的 KML 文件的层次结构。例如, layerid="900"

        • 使用 sfsfr 属性(如果您需要额外的地理信息来使位置唯一)。不同的位置可能具有相同的主要位置名称,并且需要辅助位置名称来使其唯一。例如,美国许多县的名称为“华盛顿”。该县名称在一个州内是唯一的,但在州外则不是唯一的,因为主要位置名称存在于多个州中。要唯一标识这样一个县,您需要使用州名称对其进行限定。当您这样做时,阿拉巴马州华盛顿州将变得与佐治亚州华盛顿州或宾夕法尼亚州华盛顿州截然不同。

          • 设置 sf 属性到将用于将形状与数据进行匹配的辅助位置字段。这类似于 shapeKey 主字段的属性。

          • 设置 sfr 属性将用于将形状与数据进行匹配的辅助位置的角色。这类似于 roleId 主字段的属性。例如,如果您的主要字段角色是县,则可以将此值设置为州。

    保存更改。
  3. 确认您可以使用自定义形状。

    1. 重新开始 MicroStrategy Web。

    2. 在 VI 仪表板中使用 ESRI 地图可视化并选择区域地图作为 Map Type 在属性面板上。

    3. 展开 ESRI 属性面板中的边界下拉列表。确保它包含自定义形状的描述作为选项。

    4. 选择适合您的自定义形状的选项。地图可视化读取在ml属性中指定的KML文件 <layer> 节点在 mstrGeoShapesConfig.xml 并渲染适当的自定义形状。

    5. 如果您遇到问题,请查看以下故障排除提示:

      • 确保您要应用可视化的报表网格具有与 <name> 元素为 <Placemark> KML 文件中的元素。

      • 确保 KML 中使用的值和 mstrGeoShapesConfig.xml 插件中的文件是正确的情况。所有这些值都区分大小写。

      • 确保每个元素都有结束标记。

      • 默认情况下, MicroStrategy Cloud 客户无法使用基于云的自定义 ESRI 地图;他们使用 ESRI 公共服务器。如果他们想使用 ESRI 公共服务器,则必须 启用客户端身份验证