GeoMesa文件系统快速入门¶
本教程是使用文件系统数据存储(FSD)开始使用GeoMesa的最快、最简单的方法。FSD允许您使用平面文件在没有任何数据库实例的情况下存储和查询数据。这些文件可以存储在HDFS、AWS甚至您的本地磁盘中。
它是通向其他教程的一个很好的垫脚石,这些教程提供了如何使用GeoMesa的越来越复杂的示例。
关于本教程¶
本着简单的精神,本教程中的代码只做了几件小事:
建立新的(静态)SimpleFeatureType
使文件系统做好存储此类数据的准备
创建数千个SimpleFeature示例
将这些SimpleFeature写入文件系统
查询给定的地理矩形、时间范围和属性过滤器,写出结果集中的条目
使用Geoserver可视化数据(可选)
先决条件¶
在开始之前,您必须安装并配置以下软件:
下载并构建教程¶
在您的计算机上选择一个合理的目录,然后运行:
$ git clone https://github.com/geomesa/geomesa-tutorials.git
$ cd geomesa-tutorials
警告
确保下载或检出与您的GeoMesa版本对应的教程项目版本。看见 关于教程版本 了解更多详细信息。
若要确保快速入门适用于您的环境,请修改 pom.xml
为Hadoop设置适当的版本,等等。
为了便于使用,该项目构建了一个捆绑的构件,该构件在单个JAR中包含所有必需的依赖项。要构建,请运行:
$ mvn clean install -pl geomesa-tutorials-fsds/geomesa-tutorials-fsds-quickstart -am
运行教程¶
在命令行上,运行:
$ java -cp geomesa-tutorials-fsds/geomesa-tutorials-fsds-quickstart/target/geomesa-tutorials-fsds-quickstart-$VERSION.jar \
org.geomesa.example.fsds.FileSystemQuickStart \
--fs.path /tmp/fsds/ \
--fs.encoding parquet
上述论据显示:
fs.path
FSD存储路径。每个简单的功能类型都将在这里生成子目录。fs.encoding
文件存储编码。快速入门是预先配置的,使用的是阿帕奇的Parquet编码。
运行后,您应该会看到以下输出:
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:srid=4326
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 719024913=719024913|||VICTORIA|AUS|173|2|1|2|4|Victoria Harbour, Ontario, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-79.7667 44.75)
02 719024918=719024918|||EMPLOYER||020|10|1|10|3|Brooklyn, New York, United States|US|2018-01-01T00:00:00.000Z|POINT (-75.1704 42.3442)
03 719024923=719024923|||INDUSTRY||084|3|1|3|2|Pennsylvania, United States|US|2018-01-01T00:00:00.000Z|POINT (-77.264 40.5773)
04 719024924=719024924|||CORPORATION||115|2|1|2|4|Saskatoon, Saskatchewan, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
05 719024925=719024925|||CORPORATION||172|2|1|2|4|Saskatoon, Saskatchewan, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
06 719024927=719024927|||CANADIAN|CAN|100|24|2|14|4|Ottawa, Ontario, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-75.7 45.4167)
07 719024928=719024928|||CANADIAN|CAN|100|6|1|6|1|United States|US|2018-01-01T00:00:00.000Z|POINT (-98.5795 39.828175)
08 719024929=719024929|||CANADA|CAN|190|4|1|4|4|Okanagan, British Columbia, Canada|CA|2018-01-01T00:00:00.000Z|POINT (-119.35 50.3667)
09 719024933=719024933|||POLICE||020|48|12|24|3|Wichita, Kansas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.3375 37.6922)
10 719024934=719024934|||POLICE||036|10|1|10|3|Bosque County, Texas, United States|US|2018-01-01T00:00:00.000Z|POINT (-97.6503 31.9002)
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 719024913=719024913|2018-01-01T00:00:00.000Z|POINT (-79.7667 44.75)
02 719024918=719024918|2018-01-01T00:00:00.000Z|POINT (-75.1704 42.3442)
03 719024923=719024923|2018-01-01T00:00:00.000Z|POINT (-77.264 40.5773)
04 719024924=719024924|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
05 719024925=719024925|2018-01-01T00:00:00.000Z|POINT (-106.667 52.1333)
06 719024927=719024927|2018-01-01T00:00:00.000Z|POINT (-75.7 45.4167)
07 719024928=719024928|2018-01-01T00:00:00.000Z|POINT (-98.5795 39.828175)
08 719024929=719024929|2018-01-01T00:00:00.000Z|POINT (-119.35 50.3667)
09 719024933=719024933|2018-01-01T00:00:00.000Z|POINT (-97.3375 37.6922)
10 719024934=719024934|2018-01-01T00:00:00.000Z|POINT (-97.6503 31.9002)
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 719025248=719025248|BUSINESS||||051|10|1|10|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
06 719025509=719025509|COMMUNITY||AUSTRALIA|AUS|051|2|1|2|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
07 719025555=719025555|DENMARK|DNK|||051|2|1|2|1|Australia|AS|2018-01-01T00:00:00.000Z|POINT (135 -25)
08 719025634=719025634|FIJI|FJI|||051|2|1|2|1|Fiji|FJ|2018-01-01T00:00:00.000Z|POINT (178 -18)
09 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)
10 719025036=719025036|||SENATE||051|5|1|5|2|Alabama, United States|US|2018-01-01T00:00:00.000Z|POINT (-86.8073 32.799)
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 719025248=719025248|2018-01-01T00:00:00.000Z|POINT (135 -25)
06 719025509=719025509|2018-01-01T00:00:00.000Z|POINT (135 -25)
07 719025555=719025555|2018-01-01T00:00:00.000Z|POINT (135 -25)
08 719025634=719025634|2018-01-01T00:00:00.000Z|POINT (178 -18)
09 719025965=719025965|2018-01-01T00:00:00.000Z|POINT (151.217 -33.8833)
10 719024994=719024994|2018-01-01T00:00:00.000Z|POINT (79.25 30.25)
Returned 138 total features
Cleaning up test data
Done
看《守则》¶
源代码对于本教程来说是可以访问的。主要逻辑包含在泛型 org.geomesa.example.quickstart.GeoMesaQuickStart
在 geomesa-tutorials-common
模块,它与数据存储区无关。一些相关的方法包括:
createDataStore
从输入配置中获取数据存储实例createSchema
在数据存储中创建架构,作为写入数据的前提条件writeFeatures
使用FeatureWriter
将要素写入数据存储区queryFeatures
对数据存储区运行多个查询cleanup
删除数据存储区目录并处置数据存储区实例。
快速入门使用GDELT数据的一小部分。将数据解析为GeoTools SimpleFeature的代码包含在 org.geomesa.example.data.GDELTData
:
getSimpleFeatureType
创建SimpleFeatureType
表示数据getTestData
解析嵌入的TSV文件以创建SimpleFeature
对象getTestQueries
说明了使用CQL(GeoTools的上下文查询语言)的几种不同的查询类型
可视化数据(可选)¶
有两个选项可以查看此快速入门获取的数据。最简单的选择是使用 export
GeoMesa FSD工具分发的命令。对于更适合生产的示例,您也可以竖起一个Geoserver并将其连接到您的FSD实例。
使用宣传单可视化数据¶
警告
要成功运行此命令,您必须有一台连接到Internet的计算机,以便访问外部传单资源。
这个 export
命令是GeoMesa FSD命令行工具的一部分。要使用该命令,请确保已按照中所述安装了命令行工具 设置文件系统命令行工具 。这个 export
命令提供了 leaflet
格式,该格式将要素导出到您可以在Web浏览器中打开的单张地图。要生成地图,请从GeoMesa FSD工具分发目录运行以下命令:
bin/geomesa-fs export \
--feature-name gdelt-quickstart \
--output-format leaflet \
--path /tmp/fsds/
其中的连接参数与您在快速入门过程中上面使用的参数相同。要查看地图,只需在Web浏览器中打开该命令提供的URL即可。如果您点击地图右上角的菜单,您可以启用和禁用热图和要素层以及提供的两个基本层。

使用宣传单可视化快速入门数据¶
使用Geoserver可视化数据¶
您可以使用Geoserver访问和可视化存储在GeoMesa中的数据。要使用Geoserver,请下载并安装版本 2.22.2 。然后按照中的说明操作 在Geoserver中安装GeoMesa文件系统 以启用GeoMesa。
向Geoserver注册GeoMesa商店¶
使用您的用户和密码凭据登录到Geoserver。点击“商店”和“添加新商店”。选择 FileSystem (GeoMesa)
矢量数据源,并填写所需参数。
基本店铺信息:
workspace
这取决于您的Geoserver安装data source name
pick a sensible name, such asgeomesa_quick_start
description
this is strictly decorative;GeoMesa quick start
连接参数:
这些参数值与您在运行本教程时在命令行上提供的参数值相同;它们描述了如何连接到数据所在的FSD位置
点击“保存”,Geoserver将在您的FSD目录中搜索任何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 。