GeoMesa Acumulo快速入门

本教程是使用Acumulo开始使用GeoMesa的最快、最简单的方法。它是通向其他教程的一个很好的垫脚石,这些教程提供了如何使用GeoMesa的越来越复杂的示例。

关于本教程

本着简单的精神,本教程中的代码只做了几件小事:

  1. 建立新的(静态)SimpleFeatureType

  2. 准备Acumulo表以存储此类型的数据

  3. 创建数千个SimpleFeature示例

  4. 将这些SimpleFeature写入Acumulo表

  5. 查询给定的地理矩形、时间范围和属性过滤器,写出结果集中的条目

  6. 使用Geoserver可视化数据(可选)

先决条件

在开始之前,您必须具备以下条件:

  • Java JDK 1.8

  • Apache Maven 3.6 or later

  • GitHub客户端

  • 一场积雨 2.0 or 2.1 实例

  • 同时具有CREATE-TABLE和WRITE权限的Acumulo用户

  • 为您的实例安装的GeoMesa分布式运行时(见下文)

安装GeoMesa分布式运行时

按照下面的说明进行操作 安装Acumulo分布式运行时库 在您的Acumulo实例中安装GeoMesa。

下载并构建教程

在您的计算机上选择一个合理的目录,然后运行:

$ git clone https://github.com/geomesa/geomesa-tutorials.git
$ cd geomesa-tutorials

警告

确保下载或检出与您的GeoMesa版本对应的教程项目版本。看见 关于教程版本 了解更多详细信息。

若要确保快速入门适用于您的环境,请修改 pom.xml 为Acumulo、Hadoop等设置适当的版本。

为了便于使用,该项目构建了一个捆绑的构件,该构件在单个JAR中包含所有必需的依赖项。要构建,请运行:

$ mvn clean install -pl geomesa-tutorials-accumulo/geomesa-tutorials-accumulo-quickstart -am

运行教程

在命令行上,运行:

$ java -cp geomesa-tutorials-accumulo/geomesa-tutorials-accumulo-quickstart/target/geomesa-tutorials-accumulo-quickstart-${geomesa.version}.jar \
    org.geomesa.example.accumulo.AccumuloQuickStart \
    --accumulo.instance.name <instance>             \
    --accumulo.zookeepers <zookeepers>              \
    --accumulo.user <user>                          \
    --accumulo.password <password>                  \
    --accumulo.catalog <table>

其中,您可以提供以下参数:

  • <instance> 您的Acumulo实例的名称

  • <zookeepers> 您的ZooKeeper节点,用逗号分隔

  • <user> 有权创建、读取和写入表的Acumulo用户的名称

  • <password> 前面提到的Acumulo用户的密码

  • <table> 将接受这些测试记录的目标表的名称。此表不应存在或应为空

警告

如果已将GeoMesa Acumulo分布式运行时设置为在命名空间内隔离(请参见 命名空间安装 )的价值 <table> 应包括命名空间(例如 myNamespace.geomesa )。

或者,您也可以指定快速入门在完成时删除其数据。使用 --cleanup 标志,当您运行以启用此行为时。

运行后,您应该会看到以下输出:

Loading datastore

Creating schema: GLOBALEVENTID:String,Actor1Name:String,Actor1CountryCode:String,Actor2Name:String,Actor2CountryCode:String,EventCode:String,NumMentions:Integer,NumSources:Integer,NumArticles:Integer,ActionGeo_Type:Integer,ActionGeo_FullName:String,ActionGeo_CountryCode:String,dtg:Date,geom:Point

Generating test data

Writing test data
Wrote 2356 features

Running test queries
Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
01 719026369=719026369|MEXICO|MEX|AMERICAN|USA|193|6|1|6|4|Playas De Tijuana, Baja California, Mexico|MX|2018-01-01T00:00:00.000Z|POINT (-117.133 32.55)
02 719025074=719025074|||RUSSIA|RUS|042|2|1|2|3|Irvine, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-117.823 33.6695)
03 719025082=719025082|||UNITED STATES|USA|014|2|1|2|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
04 719025084=719025084|||UNITED STATES|USA|031|4|1|4|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
05 719026868=719026868|UNITED STATES|USA|||010|5|1|4|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
06 719026879=719026879|TEXAS|USA|||013|10|2|10|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
07 719026987=719026987|UNITED STATES|USA|||110|4|1|4|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
08 719027257=719027257|UNITED STATES|USA|||036|10|2|10|2|Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
09 719026878=719026878|UNITED STATES|USA|||013|4|2|4|3|Dallas, Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-96.8067 32.7831)
10 719027238=719027238|UNITED STATES|USA|INDUSTRY||081|1|1|1|3|Central Valley, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-119.682 34.0186)

Returned 669 total features

Running query BBOX(geom, -120.0,30.0,-75.0,55.0) AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719025742=719025742|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
02 719025915=719025915|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
03 719025400=719025400|2018-01-01T00:00:00.000Z|POINT (-117.393 33.2103)
04 719025135=719025135|2018-01-01T00:00:00.000Z|POINT (-117.823 33.6695)
05 719026216=719026216|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
06 719026312=719026312|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
07 719026320=719026320|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
08 719026992=719026992|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
09 719027120=719027120|2018-01-01T00:00:00.000Z|POINT (-97.6475 31.106)
10 719026984=719026984|2018-01-01T00:00:00.000Z|POINT (-91.8749 31.1801)

Returned 669 total features

Running query EventCode = '051'
01 719025634=719025634|FIJI|FJI|||051|2|1|2|1|Fiji|FJ|<null>|POINT (178 -18)
02 719027116=719027116|UNITED STATES|USA|KING||051|8|1|8|3|San Diego, California, United States|US|<null>|POINT (-117.157 32.7153)
03 719027117=719027117|LOS ANGELES|USA|KING||051|26|3|26|2|California, United States|US|<null>|POINT (-119.746 36.17)
04 719025036=719025036|||SENATE||051|5|1|5|2|Alabama, United States|US|<null>|POINT (-86.8073 32.799)
05 719026318=719026318|SENATE||UNITED STATES|USA|051|2|1|2|2|Alabama, United States|US|<null>|POINT (-86.8073 32.799)
06 719026296=719026296|CHAMBER||||051|20|1|20|3|Springfield, South Carolina, United States|US|<null>|POINT (-81.2793 33.4968)
07 719025744=719025744|CIVIL SERVANT||||051|20|1|10|3|White House, District of Columbia, United States|US|<null>|POINT (-77.0364 38.8951)
08 719026946=719026946|INDIANA|USA|||051|12|1|12|2|Indiana, United States|US|<null>|POINT (-86.2604 39.8647)
09 719025279=719025279|EDMONTON|CAN|||051|5|1|5|4|Dufferin County, Ontario, Canada|CA|<null>|POINT (-80.1667 44.0833)
10 719027252=719027252|AMERICAN CIVIL LIBERTIES UNION|USA|||051|2|1|2|2|Pennsylvania, United States|US|<null>|POINT (-77.264 40.5773)

Returned 276 total features

Running query EventCode = '051' AND dtg DURING 2017-12-31T00:00:00+00:00/2018-01-02T00:00:00+00:00
Returning attributes [GLOBALEVENTID, dtg, geom]
01 719025634=719025634|2018-01-01T00:00:00.000Z|POINT (178 -18)
02 719027116=719027116|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
03 719027117=719027117|2018-01-01T00:00:00.000Z|POINT (-119.746 36.17)
04 719025036=719025036|2018-01-01T00:00:00.000Z|POINT (-86.8073 32.799)
05 719026318=719026318|2018-01-01T00:00:00.000Z|POINT (-86.8073 32.799)
06 719026296=719026296|2018-01-01T00:00:00.000Z|POINT (-81.2793 33.4968)
07 719025744=719025744|2018-01-01T00:00:00.000Z|POINT (-77.0364 38.8951)
08 719026946=719026946|2018-01-01T00:00:00.000Z|POINT (-86.2604 39.8647)
09 719025279=719025279|2018-01-01T00:00:00.000Z|POINT (-80.1667 44.0833)
10 719027252=719027252|2018-01-01T00:00:00.000Z|POINT (-77.264 40.5773)

Returned 138 total features

快速启动代码也可以通过Maven使用 live-test 配置文件并将连接参数指定为系统属性:

$ mvn -Plive-test exec:exec             \
    -Daccumulo.instance.name <instance> \
    -Daccumulo.zookeepers <zookeepers>  \
    -Daccumulo.user <user>              \
    -Daccumulo.password <password>      \
    -Daccumulo.catalog <table>

看《守则》

源代码对于本教程来说是可以访问的。主要逻辑包含在泛型 org.geomesa.example.quickstart.GeoMesaQuickStartgeomesa-tutorials-common 模块,它与数据存储区无关。一些相关的方法包括:

  • createDataStore 从输入配置中获取数据存储实例

  • createSchema 在数据存储中创建架构,作为写入数据的前提条件

  • writeFeatures 使用 FeatureWriter 将要素写入数据存储区

  • queryFeatures 对数据存储区运行多个查询

  • cleanup 删除示例数据并处置数据存储实例

QuickStart使用GDELT数据的一小部分。将数据解析为GeoTools SimpleFeature的代码包含在 org.geomesa.example.data.GDELTData

  • getSimpleFeatureType 创建 SimpleFeatureType 表示数据

  • getTestData 解析嵌入的TSV文件以创建 SimpleFeature 对象

  • getTestQueries 说明了使用CQL(GeoTools的上下文查询语言)的几种不同的查询类型

可视化数据(可选)

有两个选项可以查看此快速入门获取的数据。最简单的选择是使用 export GeoMesa Acumulo工具分发的命令。对于更适合生产的示例,您也可以竖起一个Geoserver并将其连接到您的Acumulo实例。

使用宣传单可视化数据

警告

要成功运行此命令,您必须有一台连接到Internet的计算机,以便访问外部传单资源。

这个 export 命令是GeoMesa Acumulo命令行工具的一部分。要使用该命令,请确保已按照中所述安装了命令行工具 设置Acumulo命令行工具 。这个 export 命令提供了 leaflet 格式,该格式将要素导出到您可以在Web浏览器中打开的单张地图。要生成地图,请从GeoMesa Acumulo工具分发目录运行以下命令:

bin/geomesa-accumulo export   \
    --output-format leaflet   \
    --instance <instance>     \
    --zookeepers <zookeepers> \
    --user <user>             \
    --password <password>     \
    --catalog <table>

其中的连接参数与您在快速入门过程中上面使用的参数相同。要查看地图,只需在Web浏览器中打开该命令提供的URL即可。如果您点击地图右上角的菜单,您可以启用和禁用热图和要素层以及提供的两个基本层。

使用宣传单可视化快速入门数据

使用宣传单可视化快速入门数据

使用Geoserver可视化数据

您可以使用Geoserver访问和可视化存储在GeoMesa中的数据。要使用Geoserver,请下载并安装版本 2.22.2 。然后按照中的说明操作 在Geoserver中安装GeoMesa Acumulo 以启用GeoMesa。

向Geoserver注册GeoMesa商店

使用您的用户和密码凭据登录到Geoserver。点击“商店”和“添加新商店”。选择 Accumulo (GeoMesa) 矢量数据源,并填写所需参数。

基本店铺信息:

  • workspace 这取决于您的Geoserver安装

  • data source name pick a sensible name, such as geomesa_quick_start

  • description this is strictly decorative; GeoMesa quick start

连接参数:

  • 这些参数值与您在运行本教程时在命令行上提供的参数值相同;它们描述了如何连接到数据所在的Acumulo实例

点击“保存”,Geoserver将在您的累积表中搜索任何GeoMesa管理的要素类型。

发布该层

Geoserver应该识别 gdelt-quickstart 要素类型,并应将其显示为可发布的图层。点击“发布”链接。

您将被带到“编辑层”屏幕。您需要为数据边框输入值。在这种情况下,您可以单击链接以根据数据计算这些值。

完成后,请单击“保存”按钮。

瞧一瞧

点击左手边沟中的“层预览”链接。如果在结果的第一页上看不到快速启动图层,请在搜索框中输入刚创建的图层的名称,然后按 <Enter>

一旦你看到你的层,点击“OpenLayers”链接,这将打开一个新的标签。您应该会看到类似于下图的红点集合:

使用Geoserver可视化快速入门数据

使用Geoserver可视化快速入门数据

调整显示

以下是你可以使用可视化效果的几种简单方法:

  • 点击显示屏中的一个红点,Geoserver将报告地图区域下方的详细记录。

  • 按住Shift键并单击以高亮显示地图中要放大到的区域。

  • 点击预览窗口左上角的“切换选项工具栏”图标。屏幕的右侧将包括一个“Filter”文本框。请输入 EventCode = '051', and press on the "play" icon. The display will now show only those points matching your filter criterion. This is a CQL filter, which can be constructed in various ways to query your data. You can find more information about CQL from GeoServer's CQL tutorial

正在生成热图

  • 要尝试服务器端处理,可以从 MAP-减少GDELT的摄取 教程。

  • 配置SLD后,在URL中更改 styles= 成为 styles=heatmap 。一旦你按下 <Enter> ,则显示将变为密度热图。

备注

要执行此操作,您必须首先安装Geoserver的WPS模块,如中所述 Geoserver插件