Method/tool 用于确定位置之间的距离
Method/tool for determining the distance between locations
我在一家医疗保健公司工作,并且了解有关患者位置(地址、城市、州、邮政编码)的信息。我正在尝试确定距离 5 个特定位置最近的患者百分比。我正在寻找的答案类似于“25% 的患者住在距离#1 最近的地方,10% 的患者住在距离#2 最近的地方,等等。”我希望有人能为我指明正确的方向(应用 use/approach 采取)。
数据存储在 Tableau 数据提取中,但使用 Excel 中的数据。
我可以随意使用的应用程序是:
- 画面
- Excel
- Alteryx
- Python
- R
我认为您可以在 Alteryx、Python 和可能的 R 中编写此内容。然后在 Tableau 中可视化。我使用 Alteryx 对英国学校做了类似的事情。查看此博客 post,了解有关我使用的 Alteryx 工具及其工作原理的详细信息。 https://tarsolutions.co.uk/blog/alteryx-tableau-display-uk-schools-data/
有多项任务可以解决这个问题。您可能希望在不同阶段的不同工具之间划分职责,比如使用 Python 或 R 预先做一些数据准备和丰富工作,然后 Tableau 在此过程中进一步做一些交互式可视化。
除了您提到的工具之外,我还建议您花一些时间熟悉空间数据库,例如开源 PostGIS。甲骨文和微软也对其数据库进行了空间扩展。使用空间数据库,您可以存储点、多边形和路径等空间数据以及关系数据,并且它们还具有内置的空间功能。
要考虑的主要任务:
地理编码 - 将地址转换为空间坐标。您将要为此使用地理编码 Web 服务,可能从 Python 或 R 调用它。这是您在准备新数据进行分析然后存储结果时想要预先做的事情供后期重用。
计算 voronoi 多边形。该算法用多边形平铺平面,使多边形内的所有点都最接近特定点。因此,如果您想知道哪些区域距离 5 家医院中的每家最近,则 voronoi 图会将地图划分为不重叠的区域,每家医院都有一个多边形,其中包含距离该医院比其他医院更近的区域。因此,如果您的医院不动,您应该计算一次 voronoi 多边形并存储结果以供重复使用。 Python 和 R 中的库可以执行此操作。 PostGIS 也有计算 voronoi 多边形的功能。
命中测试。此步骤测试一个点是否落在多边形内。您可以通过调用专用 R 或 Python 函数来执行命中测试,但我建议改用像 PostGIS 这样的空间数据库。然后,您可以通过调用函数或使用 INTERSECTS 空间连接运算符来执行命中测试。在将多边形加载到数据库后,您可以通过为多边形构建空间索引来优化性能。
演示、总结。这就是 Tableau 的用武之地。您可以直接从空间数据库中显示点和多边形等空间数据(如果您正在使用空间数据库),还可以轻松计算汇总统计数据,例如您提到的百分比。
较新版本的 Tableau 对空间数据的支持更多,并且可以计算距离和缓冲区,尽管将这些工作推入空间数据库可能仍然更快。
这一点对很多人来说可能是显而易见的,但需要明确的是...当您要测量的点(例如医院)具有静态位置时,上述方法表现良好,因此值得花时间预先计算 Voronoi 多边形并创建任何空间索引 - 以及当您有许多要测试的点时。在这些情况下,预先计算的多边形和空间索引可以带来性能提升。
对于较小的数据集,您当然可以只计算每个可能的来源和每个可能的目的地之间的距离,然后选择距离最小的连接。随着数据点数量的增加,这种简单但蛮力的方法变得越来越不可行,在这种情况下,完成上述步骤更值得付出努力。
您可以通过多种方式在 Alteryx 中使用其空间工具执行此操作。您可以考虑的一些通用方法是使用距离工具计算每个 "address" 与每个 "location" 的距离,对每个 "address" 与每个 "location" 的距离进行排序,然后使用汇总工具,您可以按等级对它们进行分组,然后 "location" 并查看各种统计信息。
根据该数据集,您可以在 Tableau 中以多种方式将其可视化,发挥创意!
您可以在 Excel 中更麻烦地计算这些距离。如果你有纬度和经度,两点之间的距离公式是:
=ACOS(COS(RADIANS(90-Lat1)) *COS(RADIANS(90-Lat2)) +SIN(RADIANS(90-Lat1)) *SIN(RADIANS(90-Lat2)) *COS(RADIANS(Long1-Long2))) *6371
我在一家医疗保健公司工作,并且了解有关患者位置(地址、城市、州、邮政编码)的信息。我正在尝试确定距离 5 个特定位置最近的患者百分比。我正在寻找的答案类似于“25% 的患者住在距离#1 最近的地方,10% 的患者住在距离#2 最近的地方,等等。”我希望有人能为我指明正确的方向(应用 use/approach 采取)。
数据存储在 Tableau 数据提取中,但使用 Excel 中的数据。
我可以随意使用的应用程序是: - 画面 - Excel - Alteryx - Python - R
我认为您可以在 Alteryx、Python 和可能的 R 中编写此内容。然后在 Tableau 中可视化。我使用 Alteryx 对英国学校做了类似的事情。查看此博客 post,了解有关我使用的 Alteryx 工具及其工作原理的详细信息。 https://tarsolutions.co.uk/blog/alteryx-tableau-display-uk-schools-data/
有多项任务可以解决这个问题。您可能希望在不同阶段的不同工具之间划分职责,比如使用 Python 或 R 预先做一些数据准备和丰富工作,然后 Tableau 在此过程中进一步做一些交互式可视化。
除了您提到的工具之外,我还建议您花一些时间熟悉空间数据库,例如开源 PostGIS。甲骨文和微软也对其数据库进行了空间扩展。使用空间数据库,您可以存储点、多边形和路径等空间数据以及关系数据,并且它们还具有内置的空间功能。
要考虑的主要任务:
地理编码 - 将地址转换为空间坐标。您将要为此使用地理编码 Web 服务,可能从 Python 或 R 调用它。这是您在准备新数据进行分析然后存储结果时想要预先做的事情供后期重用。
计算 voronoi 多边形。该算法用多边形平铺平面,使多边形内的所有点都最接近特定点。因此,如果您想知道哪些区域距离 5 家医院中的每家最近,则 voronoi 图会将地图划分为不重叠的区域,每家医院都有一个多边形,其中包含距离该医院比其他医院更近的区域。因此,如果您的医院不动,您应该计算一次 voronoi 多边形并存储结果以供重复使用。 Python 和 R 中的库可以执行此操作。 PostGIS 也有计算 voronoi 多边形的功能。
命中测试。此步骤测试一个点是否落在多边形内。您可以通过调用专用 R 或 Python 函数来执行命中测试,但我建议改用像 PostGIS 这样的空间数据库。然后,您可以通过调用函数或使用 INTERSECTS 空间连接运算符来执行命中测试。在将多边形加载到数据库后,您可以通过为多边形构建空间索引来优化性能。
演示、总结。这就是 Tableau 的用武之地。您可以直接从空间数据库中显示点和多边形等空间数据(如果您正在使用空间数据库),还可以轻松计算汇总统计数据,例如您提到的百分比。
较新版本的 Tableau 对空间数据的支持更多,并且可以计算距离和缓冲区,尽管将这些工作推入空间数据库可能仍然更快。
这一点对很多人来说可能是显而易见的,但需要明确的是...当您要测量的点(例如医院)具有静态位置时,上述方法表现良好,因此值得花时间预先计算 Voronoi 多边形并创建任何空间索引 - 以及当您有许多要测试的点时。在这些情况下,预先计算的多边形和空间索引可以带来性能提升。
对于较小的数据集,您当然可以只计算每个可能的来源和每个可能的目的地之间的距离,然后选择距离最小的连接。随着数据点数量的增加,这种简单但蛮力的方法变得越来越不可行,在这种情况下,完成上述步骤更值得付出努力。
您可以通过多种方式在 Alteryx 中使用其空间工具执行此操作。您可以考虑的一些通用方法是使用距离工具计算每个 "address" 与每个 "location" 的距离,对每个 "address" 与每个 "location" 的距离进行排序,然后使用汇总工具,您可以按等级对它们进行分组,然后 "location" 并查看各种统计信息。
根据该数据集,您可以在 Tableau 中以多种方式将其可视化,发挥创意!
您可以在 Excel 中更麻烦地计算这些距离。如果你有纬度和经度,两点之间的距离公式是:
=ACOS(COS(RADIANS(90-Lat1)) *COS(RADIANS(90-Lat2)) +SIN(RADIANS(90-Lat1)) *SIN(RADIANS(90-Lat2)) *COS(RADIANS(Long1-Long2))) *6371