注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
通过Pipeline Builder,您可以加载、变换和运用地理空间数据。如果您的地理空间工作流尚未被Pipeline Builder的当前功能支持,请参考Foundry的传统地理空间文档在代码库中变换您的数据。
Pipeline Builder使用逻辑类型的概念在内部建模地理空间数据,这是一种基础类型(字符串、整数、布尔值、数组、结构)加上对表示数据的额外约束。例如,Geometry类型被定义为一个必须是有效GeoJSON的字符串,而GeoPoint必须是一个包含经度在-180
到180
之间和纬度在-90
到90
之间的结构体,且两者都包含在内。支持类型的完整列表可以在下方找到。
Pipeline Builder中的所有逻辑类型都是其基础类型的继承者;例如,几何体可以作为一个期望输入类型为字符串的表达式的输入,但反之则不行。要从基础类型转换为扩展该基础类型的特定逻辑类型,您可以使用“逻辑类型转换”表达式,它将对数据应用与该逻辑类型相关的约束,并将无法通过此验证的值设为null。表达式指定逻辑类型作为输入和输出的能力确保了当一个地理空间特定表达式需要一个GeoJSON字符串时,将会接收到一个GeoJSON字符串。
Pipeline Builder当前支持以下地理空间类型:
longitude
和latitude
组成的结构,其中longitude
是-180
到180
之间的双精度数,latitude
是-90
到90
之间的双精度数,两者都包含在内。GeoPoint必须是符合WGS:84或EPSG:4326坐标参考系统(CRS)的有效(x, y)坐标。minLat
,minLon
,maxLat
,maxLon
组成的结构表示的边界框,其中每个条目都是一个有效的GeoPoint,并且maxLat > minLat
且maxLon > minLon
。{lat},{lon}
,其中-90 <= lat <= 90
且-180 <= lon <= 180
。Pipeline Builder支持多种不同的地理空间数据变换和表达式。
lat,lon
对,验证上述界限,并将其转换为GeoPoint表示。x,y
对和一个坐标参考系统,将该(x,y)
投影到WGS:84,然后构建一个GeoPoint表示。支持从EPSG数据库中的大多数坐标系统转换,包括所有UTM区域。还有其他表达式可以在上述两种类型之间进行转换,并将它们转换为H3索引、MGRS、边界框和Ontology GeoPoint格式。
在关于坐标参考系统和投影的文档中了解更多关于地理空间数据格式的信息。
一旦您填充了Pipeline Builder的地理空间类型列,您就可以利用专门针对地理空间数据的变换。大多数变换(除了地理合并)目前在流式和批处理工作流中都支持。下面列出了一些亮点。
Pipeline Builder支持以下地理空间合并:
Pipeline Builder的几何交集合并需要两个数据集,每个数据集必须有一个几何类型的列。几何交集合并不接受Ontology GeoPoint或GeoPoint作为输入类型。在应用合并之前,我们建议标准化几何列并明确筛选出不需要在输出中的null
值。如果管道中有不确定性或其他合并,我们建议在地理合并之前添加一个检查点。
Pipeline Builder可以合并中等大小几何的数据集(大约最多34个点),假设输出行数增加两倍,支持每侧最多100万行。对于偏斜数据,合并可以支持一侧最多2.5亿行,另一侧最多1.6千行。随着几何大小的增加,稳定性可能会下降。合并可以始终支持将一个巨大的几何(大约40k点)与最多50万行的数据集合并。更大规模可能会间歇性成功,但不被正式支持。
输出行数与交叉合并相当的几何交集合并可能导致合并中的稳定性下降。
作为几何交集合并的替代方案,配置为“几何相交”的交叉合并筛选可能提供更稳定的内存使用。然而,这种方法可能导致搭建时间急剧增加。另一个替代方案是在代码库中使用geospatial-tools
PySpark库。请联系您的Palantir代表以获取更多信息。
Pipeline Builder的几何距离合并需要两个数据集,每个数据集必须有一个几何类型的列,一个大于零的距离值,以及一个将决定提供的距离单位的坐标参考系统字符串。例如,如果为坐标参考系统提供“epsg:4326”,则假定距离以度为单位。与交集合并类似,我们建议标准化几何列,并明确筛选出不需要在输出中的null
值。如果管道中有其他合并或不确定性,请在合并前添加一个检查点。
Pipeline Builder可以合并小几何的数据集(每个大约最多8个点),假设合并结果行数增加两倍,支持每侧最多100万行。当输出行数与交叉合并相当时,稳定性可能会下降。
作为几何距离合并的替代方案,配置了几何缓冲区和“几何相交”筛选的交叉合并可能在行数增加较大的情况下提供更稳定的内存使用。然而,这种方法可能在大多数情况下导致搭建时间急剧增加。
Pipeline Builder的几何最近邻合并需要两个数据集:一个几何的base
数据集和一个点的neighbors
数据集。k
整数参数配置为每个基础几何查找的最近邻数量。需要一个坐标参考系统来确定如何计算和比较基础几何和邻居点之间的距离。结果将是组合的行集,其中每一行包含一个GeoPoint,该GeoPoint是离基础几何最近的k
个点之一。平局被任意打破,结果无特定顺序返回。
请注意,这个合并有两个要求:
neighbors
数据集中的所有GeoPoints必须能够适应执行器和驱动程序的内存。这目前是一个硬性要求,限制了合并的可扩展性。如果您的应用案例需要分发neighbors
数据集,请联系您的Palantir代表。
Foundry目前仅接受neighbors
数据集中的GeoPoint逻辑类型,以限制内存消耗。如果在合并的neighbors
一侧需要非点几何,请联系您的Palantir代表。
实际上,Pipeline Builder支持k
值适中(< 5),neighbors
数据集中有多达数十万行,基础数据集中有100万几何。当两个数据集都有数十万行时,Pipeline Builder可以支持更大的k
值。在这种情况下,查找多达几百个最近邻应该会很快完成。增加输入规模超出此点可能会间歇性成功,但目前不在一般支持范围内。
如果您的合并遇到稳定性问题,请使用以下步骤进行补救:
完成在Pipeline Builder中的数据变换后,您可以在地图上直观地验证这些变换的结果。在常规预览窗格中,选择您希望在地图上预览的单元格(单元格必须来自上述地理空间类型之一的列)。右键单击并选择打开地理预览。
一个新的预览选项卡将会出现,显示在地图上绘制的选定单元格。
Pipeline Builder的地理空间功能旨在与平台上的下游数据无缝集成。