自定义地图(3)使用边界框放大地图

什么是边界框?

现在是时候调整您创建的令人敬畏的邮政编码地图,以获得更好的可视化效果。理想情况下,您可以放大您拥有数据的区域。我们需要一个基于该几何体子集的地图,而不是包含GeoJSON中编码的所有几何体的地图。

边界框通过使用坐标分隔新区域的边界来重新定义要显示的地图区域。诀窍是弄清楚正确的坐标。

对于邮政编码区域的地理地图,GeoJSON中编码的每个形状的坐标都只是经度和纬度坐标。查找仅包含地图相关区域的地图区域的经度和纬度需要一个可以在地图上显示这些坐标的工具。

Internet上有许多工具可以为您完成此任务。但是我们已经找到了使用数据放大邮政编码所需的坐标。

创建新地图

您可以从已上载的同一GeoJSON文件创建新地图。

  • 如果您还没有打开它,请通过邮政编码仪表板打开洛杉矶税务数据并切换到编辑模式。
  • 选择地图图表以查看窗口小部件属性。
  • 展开“地图”部分,然后单击“地图类型”属性旁边的。
  • 在New Map页面的左侧窗格中,选择 custom_map_project_geojson,即您之前上传的GeoJSON。
选择新地图的geoJSON文件,边界,标签和投影类型。
  • 在“地图标签”字段中,输入Central L.A. Zipcodes。
  • 在“投影类型”字段中,选择“ Equirectangular”
  • 在中心窗格中,拖动地图的手柄以更改顶部,底部,左侧和右侧边界。尽可能接近顶部至34.2,底部至33.85,左侧至-118.65,右侧至-117.65。
在地图中拖动手柄时,边界会更新。
  • 单击“完成”
地图放大洛杉矶市中心,显示县数据。
  • 保存仪表板。

边界框有什么不同!在您创建之前,此有用的地图在Analytics中从未存在过。由于网络上可以免费获得如此多的GeoJSON地图定义,因此您可以使用Analytics可视化的地理数据没有限制。

自定义地图(2)使用GeoJSON并创建地图

获取GeoJSON文件

接下来,我们需要一个GeoJSON文件,其邮政编码与CSV文件中的邮政编码匹配(或至少重叠)。有一个准备好了,你可以在这里下载。

重新格式化GeoJSON

GeoJSON以标准格式提供给我们:

{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "properties": {
            "kind": "ZIP Code Tabulation Area (2012)",
            "external_id": "90001",
            "name": "90001",
            "slug": "90001-zip-code-tabulation-area-2012",
            "set": "/1.0/boundary-set/zip-code-tabulation-areas-2012/",
            "metadata": {
                "AWATER10": 0,
                "CLASSFP10": "B5",
                "ALAND10": 9071359,
                "INTPTLAT10": "+33.9740268",
                "FUNCSTAT10": "S",
                "ZCTA5CE10": "90001",
                "MTFCC10": "G6350",
                "GEOID10": "90001",
                "INTPTLON10": "-118.2495088"
            },
            "resource_uri": "/1.0/boundary/90001-zip-code-tabulation-area-2012/"
        },
        "geometry": {
            "type": "MultiPolygon",
            "coordinates": [
                [
                    [
                        [-118.265151, 33.970249],
                        [-118.265166, 33.974735],
                        [-118.262969, 33.974746],
                        [-118.262981, 33.981836],
                        [-118.265174, 33.981828],
                        [-118.265185, 33.989227],
                        [-118.256436, 33.989317],
                        [-118.256436, 33.989498],
                        [-118.241159, 33.989422],
                        [-118.241126, 33.988174],
                        [-118.240505, 33.988158],
                        [-118.240502, 33.98867],
                        [-118.23899, 33.988664],
                        [-118.239021, 33.989403],
                        [-118.237918, 33.989393],
                        [-118.235685, 33.979486],
                        [-118.235352, 33.979534],
                        [-118.235105, 33.978705],
                        [-118.234324, 33.974732],
                        [-118.234685, 33.974731],
                        [-118.234432, 33.972967],
                        [-118.233915, 33.970674],
                        [-118.233561, 33.970731],
                        [-118.232835, 33.967469],
                        [-118.232995, 33.967467],
                        [-118.232405, 33.965314],
                        [-118.231371, 33.963268],
                        [-118.230013, 33.961768],
                        [-118.231885, 33.961565],
                        [-118.231599, 33.960146],
                        [-118.237366, 33.960152],
                        [-118.23737, 33.958521],
                        [-118.237943, 33.958518],
                        [-118.237949, 33.96015],
                        [-118.24499, 33.960148],
                        [-118.244994, 33.959648],
                        [-118.246648, 33.959637],
                        [-118.246653, 33.959177],
                        [-118.247237, 33.959175],
                        [-118.247225, 33.9597],
                        [-118.253962, 33.959701],
                        [-118.253959, 33.960162],
                        [-118.258573, 33.96016],
                        [-118.258575, 33.959577],
                        [-118.260754, 33.959772],
                        [-118.260753, 33.960149],
                        [-118.265118, 33.96013],
                        [-118.265139, 33.966482],
                        [-118.264629, 33.966483],
                        [-118.264607, 33.967438],
                        [-118.265142, 33.967395],
                        [-118.265151, 33.970249]
                    ]
                ]
            ]
        }
    }, ...]
}

复制

标准GeoJSON在大多数应用程序中运行良好,但对于Analytics中的自定义地图存在问题。问题不在于显示地图; 当您尝试使用地图图表显示数据时会发生这种情况。这是因为Analytics要查找与此相同级别的ID“type”:“功能”与数据中的ID匹配的节点。这就是它如何知道将CSV文件中的行与地图上的特定邮政编码区域相匹配。实际上,必须命名该ID属性“ID”!

在此示例中,要使用的明显ID是邮政编码值本身。解决方法是将键移动一级,或者通过移动所有内容来“展平”GeoJSON“属性”上一级。让我们使用我们的编码技巧来看看我们如何实现这一目标!

  1. 对于洛杉矶邮政编码,创建一个脚本或使用花哨的正则表达式公式来移动 “EXTERNAL_ID” 上升一级,所以它是一个孩子 “特征”。
  2. 请务必重命名新的键值节点 “ID”。每个人的价值 “ID” 将是一个邮政编码,以匹配数据集的Zipcode列中的邮政编码。
  3. 如果脚本输出具有新名称的文件,请记下该文件的名称及其位置。将GeoJSON上传到Analytics时需要它们。

例如,这是一个快速而肮脏的Python脚本,可以创建 “ID” 与…相同级别的节点 “类型”。

                #!/usr/bin/python
                
                import json
                 
                f = open('Downloads/test_la_zip_code_areas_2012.json', 'r')
                 
                json_contents = json.loads(f.read())
                
                features = json_contents["features"]
                
                for i in features:
                    i["id"] = i["properties"]["external_id"]
                 
                # If shrinking the size of the file is important, 
                # the properties node could be deleted afterwards:
                # del i["properties"]
                 
                out_file = open("out_la_zip_code_areas_2012.json", "w")
                out_file.write(json.dumps(features))
                 
                # out_file will not be sorted, which shouldn't affect anything,
                # but to have it be sorted, use sort_keys=True in json.dumps
                
                out_file.close()

复制

注意

注意

上面显示的快速和脏脚本剥离了要素对象周围的包装,因此如果您使用它,请恢复以下内容:

{    
    "type": "FeatureCollection",
    "features": {[
        "comment" : "stuff that was output by the script goes here"
    ]}
}

复制

现在GeoJSON看起来像这样:

{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "properties": {
            "kind": "ZIP Code Tabulation Area (2012)",
            "external_id": "90001",
            ...
            },
            "resource_uri": "/1.0/boundary/90001-zip-code-tabulation-area-2012/"
        },
        "id": "90001",
        "geometry": {
            "type": "MultiPolygon",
            "coordinates": [
                [
                    
                        [-118.265151, 33.970249],
                        ...
                    ]
                ]
            ]
        }
    }, ...]
}

复制

每个id都具有其所属的要素对象中的实际邮政编码的值。不要试图使用这个GeoJSON片段 – 它只是你得到的输出的一小部分!

在自定义地图中显示数据

创建洛杉矶邮政编码数据集时,将Zipcode列的数据类型设置为维度。此操作可以在您浏览数据时按邮政编码进行分组。按邮政编码对数据进行分组后,您可以在显示LA邮政编码的自定义地图中将其可视化。您必须基于geoJSON文件创建自定义地图。

让我们探索镜头中的邮政编码数据,并在自定义地图上查看。

  • 在Analytics主页中,单击 Datasets选项卡。
  • 找到您创建的la_zip_codes数据集,然后单击它以在镜头中探索它。
洛杉矶邮政编码税数据的初始镜头视图
  • 在镜头中,单击Count of Rows度量,然后 单击Sum,然后 单击TotalWages将度量更改为TotalWages的总和。确保在“条形长度”字段中单击要更改的度量名称“行数”。
  • 单击Bars字段中的加号按钮,然后选择 Zipcode以按邮政编码分组。
洛杉矶邮政编码税数据按邮政编码分组的工资总额
  • 要将图表类型更改为地图,请单击右侧并选择“映射”图表类型()。默认地图不显示LA邮政编码,因此不适合此数据。实际上,预构建的地图类型都不能显示按邮政编码分组的数据。让我们创建一个可以的自定义地图。
  • 要创建自定义地图类型,请单击,展开“地图”部分,然后单击“地图类型”属性旁边的。
自定义地图的“添加”按钮。
  • 如果您没有重新格式化自己的GeoJSON文件,我们会为您重新格式化一个。右键单击此链接,将重新格式化的GeoJSON文件保存到本地计算机。
  • 在New Map页面的左侧窗格中,单击Upload GeoJSON并上载您下载的GeoJSON定义(custom_map_project_geojson.json)。
选择新地图的geoJSON文件,边界,标签和投影类型。
  • 注意如果您上传的GeoJSON文件有问题,则会显示一条错误消息(类似“无效的GeoJSON”)。通常这意味着重新格式化出了问题。
  • 在“地图标签”字段中,输入L.A. Zipcodes。
  • 在“投影类型”字段中,选择“ Equirectangular”作为此地图的默认投影类型。您可以在使用此自定义地图的每个图表窗口小部件的窗口小部件属性中覆盖此设置。Equirectangular适用于简单的几何形状,例如平面图,城市街区或邮政编码区域。墨卡托最适合传统的地理地图。使用AlbersUSA获取美国地图,其中包括美国其他地区附近的夏威夷和阿拉斯加州。
LA地图使用equirectangular投影出现。
  • 注意在中心窗格中,您可以拖动地图的手柄以更改边界,并放大特定区域。边界将显示在右侧窗格中。但是,我们不会改变边界。我们稍后会详细介绍它们。
  • 单击“完成”。恭喜!您已经创建了第一张自定义地图。这不是一个美女!您现在可以在其他图表中使用此自定义地图类型,包括地图,地理地图和气泡地图。
  • 要将此镜头剪辑到设计器中的仪表板,请单击。
  • 在步骤命名对话框中,输入Total Wages by Zip Code“显示标签”字段,然后单击“ 剪辑到设计器”
  • 在仪表板设计器中,将新步骤拖到画布上。根据需要调整窗口小部件的大小,以便能够查看显示的条形图。一张不起眼的地图出现了几个彩色的邮政编码区域,其中发现了洛杉矶(那些飞行大约在可见海岸的中心部分)。
小部件出现。
  • 选择地图以显示窗口小部件属性。
  • 在窗口小部件属性中,展开“ 地图” 部分,注意在“地图类型”菜单中选择了新的LA Zipcodes自定义地图。
洛杉矶邮政编码地图与税务数据
  • 保存仪表板,按邮政编码命名为洛杉矶税务数据。

这张地图的问题在于它包含了整个南加州的邮政编码区域,这意味着洛杉矶地区太小而无法使用。我们可以通过创建一个边界框来解决这个问题。我们接下来就这样做。

自定义地图(1)创建数据集

你将学到什么

该项目向您介绍如何创建自定义地图并调整这些地图以增强可视化效果。在其中,您将学习:

  • 如何重新格式化GeoJSON以便可以在Analytics中使用它。
  • 如何将GeoJSON上传到Analytics以创建自定义地图。
  • 如何使用边界框放大地图中的某个区域。

什么是自定义地图?

Analytics具有各种地理区域的内置地图。您可以像使用任何其他图表一样使用它们来显示数据的可视化。但是如果你找不到你拥有的数据所需的地图怎么办?这就是自定义地图进入场景的地方!

自定义地图基于标准GeoJSON定义文件,该文件包含用于绘制地图的元数据和坐标。Analytics可以读取GeoJSON文件并将编码的地图显示为另一个地图。

首先,设置您的Analytics Developer Edition组织。

注册支持分析的开发人员版组织

对于此项目,您无法使用现有的Developer Edition组织。您必须注册一个特殊的新版本,该版本附带有限的爱因斯坦分析平台许可证。

首先注册一个支持Analytics的开发人员组织。

  1. 转到developer.salesforce.com/promotions/orgs/wave-de
  2. 使用有效的电子邮件地址填写表单。您的用户名也必须看起来像电子邮件地址并且是唯一的,但它不必是有效的电子邮件客户。例如,您的用户名可以是yourname@waverocks.de或yourname@yourcompany.de。
  3. 填写表单后,单击“ 注册”。系统会显示一条确认消息,告知您检查电子邮件。
  4. 收到激活电子邮件后,将其打开,然后单击该链接。
  5. 完成注册,并设置密码和质询问题。
  6. 单击保存。您现在已登录到Developer Edition组织并重定向到“设置”页面。

要在本页末尾接受挑战时登录启用Analytics的开发人员组织,请从连接菜单中选择登录Developer Edition。要随时登录和播放,请访问login.salesforce.com。

获取数据

为了构建我们的自定义地图,我们从一些有趣的数据开始。我们在洛杉矶地区有各种邮政编码的公共IRS备案统计数据,您可以从这里下载。这些信息已经汇总,所以不,你不能查看富人和名人的纳税申报表。

数据采用以下格式的CSV文件:

 "Zipcode","ZipCodeType","City","State","LocationType","Lat","Long","Location","Decommisioned",
"TaxReturnsFiled","EstimatedPopulation","TotalWages"
"90001","STANDARD","LOS ANGELES","CA","PRIMARY",33.97,-118.24,"NA-US-CA-LOS ANGELES","false",18561,36200,421709138
"90002","STANDARD","LOS ANGELES","CA","PRIMARY",33.94,-118.24,"NA-US-CA-LOS ANGELES","false",16133,30920,352278879
"90003","STANDARD","LOS ANGELES","CA","PRIMARY",33.96,-118.27,"NA-US-CA-LOS ANGELES","false",21982,41878,463744071
"90004","STANDARD","LOS ANGELES","CA","PRIMARY",34.07,-118.31,"NA-US-CA-LOS ANGELES","false",25057,41632,891085777
"90005","STANDARD","LOS ANGELES","CA","PRIMARY",34.05,-118.31,"NA-US-CA-LOS ANGELES","false",13294,22281,369162475
"90006","STANDARD","LOS ANGELES","CA","PRIMARY",34.04,-118.29,"NA-US-CA-LOS ANGELES","false",19691,34995,398768368
"90007","STANDARD","LOS ANGELES","CA","PRIMARY",34.02,-118.28,"NA-US-CA-LOS ANGELES","false",12367,20179,262370773
"90008","STANDARD","LOS ANGELES","CA","PRIMARY",34.00,-118.34,"NA-US-CA-LOS ANGELES","false",13333,21174,426689767
"90009","PO BOX","LOS ANGELES","CA","PRIMARY",33.94,-118.38,"NA-US-CA-LOS ANGELES","false",1137,1715,49947779
"90010","STANDARD","LOS ANGELES","CA","PRIMARY",34.06,-118.31,"NA-US-CA-LOS ANGELES","false",2055,3294,122651252
                       

复制

让我们上传文件以创建数据集。

  1. 登录您的Developer Edition组织。
  2. 在Lightning Experience中,单击,然后单击 Analytics Studio磁贴。小费首次打开Analytics Studio时,将显示“欢迎”屏幕,提供可帮助您入门的资源。您可以立即将其关闭,并随时从“帮助”菜单再次打开它。单击右上角的问号以打开菜单。然后选择 欢迎使用Analytics。注意如果未打开Analytics Studio,请检查您的弹出窗口阻止程序是否已启用。如果是这样,请更改设置以允许您的组织弹出窗口。在Salesforce Classic中,从右上方的应用程序菜单中选择Analytics Studio
  3. 在Analytics Studio中,单击主屏幕右上角的“ 创建”,然后从菜单中选择“ 数据集 ”。
  4. 单击CSV文件作为数据源。
  5. 在“新建数据集”屏幕中,单击“ 选择文件”或在此处拖动文件
  6. 在打开的文件选择窗口中,选择您下载的CSV文件 – 查找名为la_zip_codes.csv的文件。
  7. 单击“ 打开”(或操作系统中的正确按钮以上载文件),然后单击“ 下一步”
  8. 在“数据集名称”字段中,为数据集命名, la_zip_codes然后单击“ 下一步”
  9. 在“编辑字段属性”屏幕中,单击“邮政编码”列标题,然后将其字段类型更改为“ 维度”
  10. 单击上载文件
数据预览屏幕设置zipcode到维度类型

大约一分钟后,检查“数据集”选项卡以查看数据集。

洛杉矶zipcodes数据集准备好了

做得好!您可以在Analytics中查看数据。接下来,您将获得GeoJSON并创建自定义地图。