GeoProcessing扩展教程


有一个新的分机叫地理处理在RapidMiner市场。为了让你知道你可以用这个扩展做什么,这里有一个使用一些操作符的教程。
我们虚构的场景是:我们正在与奥地利的维也纳市合作,庆祝维也纳和多瑙河的悠久历史。在庆祝活动中,我们想为孩子们组织一场划船比赛和跑步比赛。我们正在处理来自维也纳开放数据服务器的地理数据。
20世纪70年代,维也纳在多瑙河内建造了一座人工岛,名为Donauinsel(多瑙河岛)。从那以后,就有了多瑙河(照片上的左臂)和新多瑙河(右边)。这里有一张地图给你一个概念:
我们只对流经维也纳的多瑙河和新多瑙河的部分地区感兴趣。这些在下一张地图中突出显示:
赛艇比赛应该在多瑙河(或新多瑙河)穿过维也纳的最长的一段进行,所以我们要确定河流部分的长度。
对于儿童跑步项目,我们希望选择两座桥之间距离最短的桥。维也纳的所有桥梁当然也可以在开放数据服务器上使用:
我们显然只对多瑙河上的桥梁感兴趣,而不是维也纳的每一座桥。因此,我们将相应地过滤数据:
然后我们将计算每个桥之间的距离,并选择最短的一个(忽略多部分桥的非常短的距离)。
为了使RapidMiner能够做到这一切,从市场中安装GeoProcessing扩展。确保在Operators面板的Extensions中看到Geoprocessing文件夹。
我们用纬度和经度来表示全球坐标(从赤道和格林威治的国际子午线0开始计算)。这些是角度,所以坐标之间的距离取决于地理位置。我们不能用这些坐标来计算我们最喜欢的测量系统(米、码、英里等)中的绝对尺寸。
将坐标转换为新的坐标系(CRS,坐标参考系)的过程称为投影或重投影。你可以把它想象成从飞机或卫星上拍一张照片,把三维的地球表面变成二维的图片。投影坐标可以用米或其他单位来测量,几何函数会给我们期望的测量值。
坐标系统由EPSG代码指代。你可以检查一下epsg.io为你正在研究的领域找到一个合适的坐标系。
并不总是需要重新投影坐标。如果我们只想知道一个几何图形是否包含或触及另一个几何图形,我们可以在原始坐标系中计算(如果我们忽略跨越经度-180°和180°之间的线的问题)。
此进程仅包含标准的RapidMiner操作符,扩展尚未使用。Read CSV操作符设置时使用逗号作为分隔符,使用UTF-8编码,否则使用默认设置。属性名来自第一行,数据格式是自动确定的。
我们只保留一些属性(几何形状和对象名称),并重新命名它们以供以后使用。例如,河流几何被重命名为riverGeom。
以文本形式表示几何形状的标准称为WKT,即众所周知的文本。开放数据服务器以这种格式交付几何图形,这也是GeoProcessing操作符使用的格式。如果数据库中有GIS数据,可以使用ST_AsText在SQL中以这种格式获取它们。
读取数据后,我们首先提取维也纳边界内的多瑙河部分。我们使用了计算几何关系(计算过程中维也纳内部的多瑙河)。它有一个输入,所以我们需要在一个示例集中同时使用维也纳和多瑙河坐标。实现这一点的最简单方法是笛卡尔连接(它将第一个示例集的每一行与第二个示例集的每一行结合起来)。我们使用十字路口计算几何关系函数,以获得结果。它返回两个几何图形(一个多边形和一条线)的公共部分作为另一个几何图形,在我们的例子中是一条较短的线(维也纳多边形内的多瑙河部分)。
然后,我们为桥梁过滤掉新多瑙河,但保留这两个部分用于河流部分长度的计算。
我们想要得到长度的单位是米,而不是椭球度。所以我们把原始坐标重新投影成奥地利常用的投影,ETRS89/奥地利(EPSG代码:3416)。这个投影在这里是合适的。如果你在一个不同的地理区域工作,一定要选择一个合适的投影。(选择错误的预测将导致计算出的指标出现严重扭曲。)
在重新投影到EPSG:3416之后,我们可以使用几何图形上的计算测量(这里称为计算河流长度)来计算河臂的长度。
现在来看看桥。
首先我们要找到横跨多瑙河的桥梁。如果我们将其应用于两个示例集,这是一个地理连接操作。
我们选择函数十字架在这里。其他功能包括包含/containedBy,相交,重叠,触摸等。函数参数在这里保持空,它只被isWithinDistance。
现在我们可以为所有选定的桥创建一个距离“矩阵”(没有格式化为矩阵)。这发生在子进程中。
为了计算距离,我们当然会将桥梁坐标重新投影到基于奥地利米的坐标系中。我们使用笛卡尔连接将桥表与自身连接起来,因此我们为每个桥的组合获得一行,但如果将桥与自身进行比较,则删除该行。
然后我们使用计算几何关系与距离投影几何上的函数。
然后,我们过滤掉距离小于100米的所有内容,以避免返回不相关的组合(桥梁的一些较小部分是数据中的单独条目)。
现在我们可以按距离对数据进行排序并返回第一行。根据我们的数据,“Steg and der nordbahnbr cke”和“Floridsdorfer br cke”是最近的,距离为481米。
就这样,我们完成了分析。我们从Web上导入地理数据,转换坐标,用不同的方法组合不同的示例集,并计算几何图形上的实际度量。
从那里你可以去一些方向:
-使用操作符几何到坐标为了可视化数据(它最适合点几何图形,或者如果您有大量几何图形)
-尝试不同的方式来地理连接示例集
-尝试不同的功能在计算几何关系和计算几何上的度量
我期待着您对GeoProcessing扩展和本教程的问题和评论。
我们虚构的场景是:我们正在与奥地利的维也纳市合作,庆祝维也纳和多瑙河的悠久历史。在庆祝活动中,我们想为孩子们组织一场划船比赛和跑步比赛。我们正在处理来自维也纳开放数据服务器的地理数据。
20世纪70年代,维也纳在多瑙河内建造了一座人工岛,名为Donauinsel(多瑙河岛)。从那以后,就有了多瑙河(照片上的左臂)和新多瑙河(右边)。这里有一张地图给你一个概念:

我们只对流经维也纳的多瑙河和新多瑙河的部分地区感兴趣。这些在下一张地图中突出显示:

赛艇比赛应该在多瑙河(或新多瑙河)穿过维也纳的最长的一段进行,所以我们要确定河流部分的长度。
对于儿童跑步项目,我们希望选择两座桥之间距离最短的桥。维也纳的所有桥梁当然也可以在开放数据服务器上使用:

我们显然只对多瑙河上的桥梁感兴趣,而不是维也纳的每一座桥。因此,我们将相应地过滤数据:

然后我们将计算每个桥之间的距离,并选择最短的一个(忽略多部分桥的非常短的距离)。
为了使RapidMiner能够做到这一切,从市场中安装GeoProcessing扩展。确保在Operators面板的Extensions中看到Geoprocessing文件夹。
一些背景知识
地球是一个不规则的椭球体,但我们喜欢看二维的地图,因为它们更适合在电脑屏幕或纸上显示。这种向二维的转换也允许应用几何计算,如距离、长度、面积等。我们用纬度和经度来表示全球坐标(从赤道和格林威治的国际子午线0开始计算)。这些是角度,所以坐标之间的距离取决于地理位置。我们不能用这些坐标来计算我们最喜欢的测量系统(米、码、英里等)中的绝对尺寸。
将坐标转换为新的坐标系(CRS,坐标参考系)的过程称为投影或重投影。你可以把它想象成从飞机或卫星上拍一张照片,把三维的地球表面变成二维的图片。投影坐标可以用米或其他单位来测量,几何函数会给我们期望的测量值。
坐标系统由EPSG代码指代。你可以检查一下epsg.io为你正在研究的领域找到一个合适的坐标系。
并不总是需要重新投影坐标。如果我们只想知道一个几何图形是否包含或触及另一个几何图形,我们可以在原始坐标系中计算(如果我们忽略跨越经度-180°和180°之间的线的问题)。
获取数据
维也纳开放数据服务器包含多种格式的地理数据。我们可以很容易地在RapidMiner中使用CSV版本。该示例进程直接从web加载数据,如果您更经常需要它们,当然可以将它们保存在本地。
此进程仅包含标准的RapidMiner操作符,扩展尚未使用。Read CSV操作符设置时使用逗号作为分隔符,使用UTF-8编码,否则使用默认设置。属性名来自第一行,数据格式是自动确定的。
我们只保留一些属性(几何形状和对象名称),并重新命名它们以供以后使用。例如,河流几何被重命名为riverGeom。
以文本形式表示几何形状的标准称为WKT,即众所周知的文本。开放数据服务器以这种格式交付几何图形,这也是GeoProcessing操作符使用的格式。如果数据库中有GIS数据,可以使用ST_AsText在SQL中以这种格式获取它们。
教程过程

读取数据后,我们首先提取维也纳边界内的多瑙河部分。我们使用了计算几何关系(计算过程中维也纳内部的多瑙河)。它有一个输入,所以我们需要在一个示例集中同时使用维也纳和多瑙河坐标。实现这一点的最简单方法是笛卡尔连接(它将第一个示例集的每一行与第二个示例集的每一行结合起来)。我们使用十字路口计算几何关系函数,以获得结果。它返回两个几何图形(一个多边形和一条线)的公共部分作为另一个几何图形,在我们的例子中是一条较短的线(维也纳多边形内的多瑙河部分)。
然后,我们为桥梁过滤掉新多瑙河,但保留这两个部分用于河流部分长度的计算。
我们想要得到长度的单位是米,而不是椭球度。所以我们把原始坐标重新投影成奥地利常用的投影,ETRS89/奥地利(EPSG代码:3416)。这个投影在这里是合适的。如果你在一个不同的地理区域工作,一定要选择一个合适的投影。(选择错误的预测将导致计算出的指标出现严重扭曲。)
在重新投影到EPSG:3416之后,我们可以使用几何图形上的计算测量(这里称为计算河流长度)来计算河臂的长度。

现在来看看桥。
首先我们要找到横跨多瑙河的桥梁。如果我们将其应用于两个示例集,这是一个地理连接操作。

我们选择函数十字架在这里。其他功能包括包含/containedBy,相交,重叠,触摸等。函数参数在这里保持空,它只被isWithinDistance。
现在我们可以为所有选定的桥创建一个距离“矩阵”(没有格式化为矩阵)。这发生在子进程中。

然后我们使用计算几何关系与距离投影几何上的函数。

然后,我们过滤掉距离小于100米的所有内容,以避免返回不相关的组合(桥梁的一些较小部分是数据中的单独条目)。
现在我们可以按距离对数据进行排序并返回第一行。根据我们的数据,“Steg and der nordbahnbr
就这样,我们完成了分析。我们从Web上导入地理数据,转换坐标,用不同的方法组合不同的示例集,并计算几何图形上的实际度量。
从那里你可以去一些方向:
-使用操作符几何到坐标为了可视化数据(它最适合点几何图形,或者如果您有大量几何图形)
-尝试不同的方式来地理连接示例集
-尝试不同的功能在计算几何关系和计算几何上的度量
我期待着您对GeoProcessing扩展和本教程的问题和评论。
18
评论
获取数据(上面显示的第一个进程)
计算距离(上述第二个过程)
奇怪的是,它还在9.10.001工作室版上运行。然而,当在AI Hub上执行时,在9.10.001版本上有一个连接到sql数据库的问题-在执行期间1小时45分钟后抛出以下错误:java.lang.IllegalAccessError:试图从类com.microsoft.sqlserver.jdbc.SQLServerDriver访问类com.microsoft.sqlserver.jdbc. sqlserverdriverproperty。
Rapidminer支持建议我升级到9.10.008,但是当我添加geoscript jar文件包时,sql连接中断了。任何帮助都将非常感激。请注意,我还开发了使用geohash和插值的脚本,以便更快地进行数据匹配,因此我确实需要继续使用使用geoscript的groovy脚本(除非也有geohash和插值操作符作为扩展)。
很高兴这么久没接到你的电话。
我最近没有更新geotools和geoscript。然而,我正在积极使用GeoProcessing扩展,它应该有更新的库,访问MySQL和PostgreSQL数据库在最新的Studio中不是问题。我没有MS SQL测试。
我想将geo*库jar逐个更新到当前版本是最好的方法。也许一些常见的日志或实用程序库太旧了,它在Studio启动时被加载,然后MSSQL驱动程序崩溃。
问候,
Balazs
我设法在不破坏sql连接器的情况下使geoscript工作—我只在包中的142个jar文件中添加了下面的113个jar文件。sql连接仍然有效(无论是在工作室和AI中心)
是的。越过边界意味着你有一个点在边界之外,然后在传感器的下一次读数中,它在里面。
另一种表达相同的方法是将边界作为线串而不是多边形,并且两点合并为线串。然后你会在这些行串上使用“交叉”操作。但是不规则的形状可能会出现误报,所以我推荐第一种解决方案。
问候,
Balazs
我从列为Lat,Long的数据开始
例如:120.16006113532586 22.98360854837837
我想在WKT中创建一个多边形——假设这允许我使用“计算几何关系”
所以我使用ReadCSV ->坐标到几何。
…希望将上面的latat, Long转换成POLYGON((12022,12022,12022,. ...))
但相反,从坐标到几何的结果是:
整体战略是否正确?如果是,上述部分如何解决?
谢谢