GeoMesa Cassandra快速入门¶
本教程是使用Cassandra开始使用GeoMesa的最快、最简单的方法。它是通向其他教程的一个很好的垫脚石,这些教程提供了如何使用GeoMesa的越来越复杂的示例。
关于本教程¶
本着简单的精神,本教程中的代码只做了几件小事:
建立新的(静态)SimpleFeatureType
准备Cassandra表以存储此类数据
创建数千个SimpleFeature示例
将这些SimpleFeature写入Cassandra
查询给定的地理矩形、时间范围和属性过滤器,写出结果集中的条目
使用Geoserver可视化数据(可选)
先决条件¶
在开始之前,您必须安装并配置以下软件:
创建Cassandra命名空间¶
您需要在Cassandra中有一个名称空间来包含教程表格。执行此操作的最简单方法是使用 cqlsh
随Cassandra发行版提供的工具。开始 cqlsh
,然后键入:
cqlsh> CREATE KEYSPACE geomesa WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor' : 3};
这将创建一个名为“geomesa”的密钥空间。这是Cassandra内部的顶级名称空间,它将为GeoMesa提供一个放置其所有数据的地方,包括空间要素数据和相关元数据。
下载并构建教程¶
在您的计算机上选择一个合理的目录,然后运行:
$ git clone https://github.com/geomesa/geomesa-tutorials.git
$ cd geomesa-tutorials
警告
确保下载或检出与您的GeoMesa版本对应的教程项目版本。看见 关于教程版本 了解更多详细信息。
若要确保快速入门适用于您的环境,请修改 pom.xml
为Cassandra等设置适当的版本。
为了便于使用,该项目构建了一个捆绑的构件,该构件在单个JAR中包含所有必需的依赖项。要构建,请运行:
$ mvn clean install -pl geomesa-tutorials-cassandra/geomesa-tutorials-cassandra-quickstart -am
运行教程¶
在命令行上,运行:
$ java -cp geomesa-tutorials-cassandra/geomesa-tutorials-cassandra-quickstart/target/geomesa-tutorials-cassandra-quickstart-$VERSION.jar \
org.geomesa.example.cassandra.CassandraQuickStart \
--cassandra.contact.point <host:port> \
--cassandra.keyspace <keyspace> \
--cassandra.catalog <table> \
--cassandra.username <user> \
--cassandra.password <password>
其中,您可以提供以下参数:
<host:port>
the hostname and port your Cassandra instance is running on. For Cassandra standalone this will belocalhost:9042
. More information on how to find your connection is available here 。<keyspace>
keyspace your table will be put into. If you followed the instructions above, this will begeomesa
. More information on how to setup keyspaces is available here 。<table>
将接受这些测试记录的目标表的名称。此表不应存在或应为空<user>
有权创建、读取和写入表的Cassandra用户的名称<password>
(可选)前述Cassandra用户的密码
或者,您也可以指定快速入门在完成时删除其数据。使用 --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 719024896=719024896|UNITED STATES|USA|SENATE||042|2|1|2|2|Texas, United States|US|2017-12-31T00:00:00.000Z|POINT (-97.6475 31.106)
02 719024888=719024888|SENATE||UNITED STATES|USA|043|2|1|2|2|Texas, United States|US|2017-12-31T00:00:00.000Z|POINT (-97.6475 31.106)
03 719024892=719024892|UNITED STATES|USA|DEPUTY||010|4|1|4|3|Abbeville, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.379 34.1782)
04 719024891=719024891|UNITED STATES|USA|||010|2|1|2|3|Ninety Six, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.024 34.1751)
05 719024894=719024894|UNITED STATES|USA|DEPUTY||010|2|1|2|3|Abbeville County, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.4665 34.2334)
06 719024887=719024887|DEPUTY||||010|4|1|4|3|Abbeville County, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.4665 34.2334)
07 719024893=719024893|UNITED STATES|USA|DEPUTY||010|6|1|6|3|Abbeville County, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.4665 34.2334)
08 719024895=719024895|UNITED STATES|USA|EMPLOYEE||010|2|1|2|3|Ninety Six, South Carolina, United States|US|2017-12-31T00:00:00.000Z|POINT (-82.024 34.1751)
09 719024889=719024889|SENATE||UNITED STATES|USA|043|2|1|2|3|Washington, District of Columbia, United States|US|2017-12-31T00:00:00.000Z|POINT (-77.0364 38.8951)
10 719024897=719024897|UNITED STATES|USA|SENATE||042|2|1|2|3|Washington, District of Columbia, United States|US|2017-12-31T00:00:00.000Z|POINT (-77.0364 38.8951)
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 719024888=719024888|2017-12-31T00:00:00.000Z|POINT (-97.6475 31.106)
02 719024896=719024896|2017-12-31T00:00:00.000Z|POINT (-97.6475 31.106)
03 719024892=719024892|2017-12-31T00:00:00.000Z|POINT (-82.379 34.1782)
04 719024891=719024891|2017-12-31T00:00:00.000Z|POINT (-82.024 34.1751)
05 719024887=719024887|2017-12-31T00:00:00.000Z|POINT (-82.4665 34.2334)
06 719024893=719024893|2017-12-31T00:00:00.000Z|POINT (-82.4665 34.2334)
07 719024895=719024895|2017-12-31T00:00:00.000Z|POINT (-82.024 34.1751)
08 719024889=719024889|2017-12-31T00:00:00.000Z|POINT (-77.0364 38.8951)
09 719024897=719024897|2017-12-31T00:00:00.000Z|POINT (-77.0364 38.8951)
10 719024884=719024884|2017-12-31T00:00:00.000Z|POINT (-77.0364 38.8951)
Returned 669 total features
Running query EventCode = '051'
01 719024909=719024909|||MELBOURNE|AUS|051|10|1|10|4|Melbourne, Victoria, Australia|AS|2018-01-01T00:00:00.000Z|POINT (144.967 -37.8167)
02 719024963=719024963|||CITIZEN||051|6|2|6|4|City Of Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
03 719025168=719025168|AUSTRALIAN|AUS|||051|18|1|10|4|Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
04 719025178=719025178|AUSTRALIA|AUS|COMMUNITY||051|20|2|20|4|Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
05 719025965=719025965|MIDWIFE||||051|10|1|10|4|Sydney, New South Wales, Australia|AS|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
06 719025248=719025248|BUSINESS||||051|10|1|10|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
07 719025509=719025509|COMMUNITY||AUSTRALIA|AUS|051|2|1|2|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
08 719025555=719025555|DENMARK|DNK|||051|2|1|2|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
09 719025634=719025634|FIJI|FJI|||051|2|1|2|1|Fiji|FJ|2018-01-01T00:00:00.000Z|POINT (178 -18)
10 719025742=719025742|KING||||051|22|3|22|3|San Diego, California, United States|US|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
Returned 138 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 719024909=719024909|2018-01-01T00:00:00.000Z|POINT (144.967 -37.8167)
02 719024963=719024963|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
03 719025168=719025168|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
04 719025178=719025178|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
05 719025965=719025965|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
06 719025248=719025248|2018-01-01T00:00:00.000Z|POINT (135 -25)
07 719025509=719025509|2018-01-01T00:00:00.000Z|POINT (135 -25)
08 719025555=719025555|2018-01-01T00:00:00.000Z|POINT (135 -25)
09 719025634=719025634|2018-01-01T00:00:00.000Z|POINT (178 -18)
10 719025742=719025742|2018-01-01T00:00:00.000Z|POINT (-117.157 32.7153)
Returned 138 total features
Done
看《守则》¶
源代码对于本教程来说是可以访问的。主要逻辑包含在泛型 org.geomesa.example.quickstart.GeoMesaQuickStart
在 geomesa-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 Cassandra工具分发。对于更适合生产的示例,您也可以竖起一个Geoserver并将其连接到您的Cassandra实例。
使用宣传单可视化数据¶
警告
要成功运行此命令,您必须有一台连接到Internet的计算机,以便访问外部传单资源。
这个 export
命令是GeoMesa Cassandra命令行工具的一部分。要使用该命令,请确保已按照中所述安装了命令行工具 设置Cassandra命令行工具 。这个 export
命令提供了 leaflet
格式,该格式将要素导出到您可以在Web浏览器中打开的单张地图。要生成地图,请从GeoMesa Cassandra工具分发目录运行以下命令:
bin/geomesa-cassandra export \
--output-format leaflet \
--contact-point <host:port> \
--key-space <keyspace> \
--catalog <table> \
-f gdelt-quickstart \
-o <filename>.html \
--user <user> \
--password <password>
其中的连接参数与您在快速入门过程中上面使用的参数相同。要查看地图,只需在Web浏览器中打开该命令提供的URL即可。如果您点击地图右上角的菜单,您可以启用和禁用热图和要素层以及提供的两个基本层。

使用宣传单可视化快速入门数据¶
使用Geoserver可视化数据¶
您可以使用Geoserver访问和可视化存储在GeoMesa中的数据。要使用Geoserver,请下载并安装版本 2.22.2 。然后按照中的说明操作 在Geoserver中安装GeoMesa Cassandra 以启用GeoMesa。
向Geoserver注册GeoMesa商店¶
使用您的用户和密码凭据登录到Geoserver。点击“商店”和“添加新商店”。选择 Cassandra (GeoMesa)
矢量数据源,并填写所需参数。
基本店铺信息:
workspace
这取决于您的Geoserver安装data source name
pick a sensible name, such asgeomesa_quick_start
description
this is strictly decorative;GeoMesa quick start
连接参数:
这些参数值与您在运行本教程时在命令行上提供的参数值相同;它们描述了如何连接到数据所在的Cassandra实例
点击“保存”,Geoserver将在您的Cassandra表中搜索任何由GeoMesa管理的要素类型。
发布该层¶
Geoserver应该识别 gdelt-quickstart
要素类型,并应将其显示为可发布的图层。点击“发布”链接。
您将被带到“编辑层”屏幕。您需要为数据边框输入值。在这种情况下,您可以单击链接以根据数据计算这些值。
完成后,请单击“保存”按钮。
瞧一瞧¶
点击左手边沟中的“层预览”链接。如果在结果的第一页上看不到快速启动图层,请在搜索框中输入刚创建的图层的名称,然后按 <Enter>
。
一旦你看到你的层,点击“OpenLayers”链接,这将打开一个新的标签。您应该会看到类似于下图的红点集合:

使用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 。