技术标签: database GeoSpatial oracle Oracle数据库管理 Spatial 数据库 Oracle数据库开发
本实验介绍了适用于 Oracle Spatial Studio。他既可以在云上,也可以在本地作为Java应用部署。介绍详见这里。
此实验申请地址在这里,时间为120分钟。
此实验的帮助见这里。
本实验使用的地图为OpenStreetMap,即免费的维基世界地图。
此实验会自动创建一个ADW,需要通过OCI Console完成初始化配置,然后可以通过网页访问Spatial Studio
在本次研讨会中,您将探索 Spatial Studio 用于自助式空间分析和可视化的功能。 使用交通事故、警察局和警察局服务区的数据集,您将加载和可视化空间数据,并分析它们的空间关系,如下所示。
Oracle Spatial Studio (Spatial Studio) 提供对 Oracle 数据库空间功能的无代码访问。 虽然这些功能过去需要编码和/或使用 第三方工具,但 Spatial Studio 允许业务用户使用自助式 GUI 创建和共享空间分析和交互式 Web 地图。
Spatial Studio 对 Oracle 数据库中的空间数据进行操作,这意味着包含 Oracle 几何数据类型的表和视图。 这些数据可以是预先存在的空间数据或使用 Spatial Studio 准备的非空间数据,以添加基于属性的几何图形。 Spatial Studio 的最终用户功能可总结如下:
访问和准备空间数据:
分析和可视化空间数据:
Spatial Studio 还为开发人员提供了集成功能,并为应用程序管理员提供了配置选项,这超出了本介绍研讨会的范围。
有关更多信息,请访问 https://oracle.com/goto/spatialstudio
本实验的目标为了解 Spatial Studio 的功能:
本实验需要访问 Spatial Studio 和 Oracle 数据库。
本实验介绍了从 Oracle LiveLabs Reservation 访问 Oracle Spatial Studio (Spatial Studio) 的过程。 您的环境包括 Spatial Studio 和自治数据库。 首次登录 Spatial Studio 时,您将提供自治数据库的连接信息。
位置为:OCI Console>ADW主页>Database Connection>Download client credentials (Wallet)
Spatial Studio 对存储在 Oracle 数据库中的数据进行操作。 在 Spatial Studio 中,您使用“数据集”,它们是通过数据库连接访问的数据库表和视图。 数据集是指向数据库表和视图的指针,并且可以被赋予友好的名称,以便比基础数据库表或视图名称更具自我描述性。
用户通常需要合并从各种来源获取的数据。 为了支持这一点,Spatial Studio 提供了将数据从标准格式加载到 Oracle 数据库的功能。 这包括加载 2 种最常见的空间数据交换格式:Shapefile 和 GeoJSON 文件。 本实验将引导您完成使用 Spatial Studio 以这些格式加载空间数据的步骤。
除了加载空间格式,Spatial Studio 还支持加载电子表格。 在这种情况下,需要进行额外的准备以从空间属性(例如地址(“地址地理编码”)和纬度/经度坐标(“坐标索引”)导出几何图形。 这些案例不包含在本实验室中,未来将成为单独实验主题。
本节实验约15分钟,目标为:
您首先从 GeoJSON 文件加载一组交通事故数据。 这些数据是虚构的,是为南非道路沿线的随机位置生成的。
将 GeoJSON 文件下载到方便的位置:accidents.geojson
在 Spatial Studio 中,从左侧面板菜单导航到数据集页面,单击创建数据集,然后拖放文件。
将显示 GeoJSON 数据的预览。 选择此上传的目标连接。 在本次研讨会中,我们将使用 SPATIAL_STUDIO 连接(Spatial Studio 元数据存储库),但在生产场景中,您将拥有与元数据存储库分开的此类业务数据的其他连接。 单击Submit以启动上传。
上传的 ACCIDENTS 数据集将列出一个小的警告图标,表示需要一个准备步骤。 在这种情况下,我们需要添加一个 Dataset 键。 虽然这对于基本映射不是必需的,但我们现在将添加密钥,因为我们将需要它来进行后续研讨会部分的分析。 单击警告图标,然后单击链接Go to Dataset Columns
如果我们的 ACCIDENTS 数据有一个唯一标识符列,我们可以将其分配为键。 但是这个虚构的数据没有这样的列,所以我们将让 Spatial Studio 创建一个。 单击 Create Key Column,将名称设置为 ACCIDENT_ID,然后单击 Apply。
观察现在列出的没有警告的 ACCIDENTS 数据集,这意味着它已准备好用于制图和空间分析。
接下来,您从存储在单个 zip 文件中的 Shapefile 加载南非警察局 (SAPS) 和警局边界。这一个ZIP文件包含了2个数据集。
将包含 Shapefile 的 zip 文件下载到方便的位置:SAPS_police.zip
导航到 Datasets 页面,单击 Create Dataset,然后拖放 SAPS_police.zip文件。 Spatial Studio 将从 zip 文件中提取 Shapefile 并单独处理它们。
提取的第一个 Shapefile 将是警察局边界,即警局巡逻的地理区域。 选择目标连接,并将表和数据集名称设置为 POLICE_BOUNDS。
提取的第二个 Shapefile 将是警察局。 选择目标连接,并将表和数据集名称设置为 POLICE_POINTS。
由于需要定义键,现在列出的 POLICE_BOUNDS 和 POLICE_POINTS 数据集均带有警告。 单击 POLICE_BOUNDS 的警告图标,然后单击链接Go to Dataset Columns。
本例我们有一个现有的唯一列用作键。 对于列 COMPNT_NAME选择Use as Key,单击Validate key,然后单击Apply;重复步骤 5 和 6 以设置数据集 POLICE_POINTS 的键。
现在所有数据集都已准备好进行制图和空间分析
在 Spatial Studio 中,项目是您可视化和分析数据的地方。 可以保存项目,以便您可以继续工作,也可以发布它们,以便您可以与他人分享您的结果。 在本实验中,您将创建并保存您的第一个项目。
预计实验室时间:30 分钟
目标
最终效果如下,注意图层顺序。本节大部分的工作都在设置演示,透明度等。
Spatial Studio 允许您自定义地图图层的“外观”和交互性。 为地图图层设置样式包括颜色、透明度等选项,如果是点,还包括标记。 样式也可以由数据值自动控制(“数据驱动样式”),使得颜色和/或标记大小基于数据值。 例如,这允许您根据收入使用颜色呈现销售区域。 交互性是指当用户单击或悬停在地图图层中的项目上时发生的情况。 这包括显示工具提示和/或打开带有项目数据值的弹出窗口。 在本实验中,您将探索其中一些样式和交互功能。
目标
要专注于 ACCIDENTS 图层,请通过单击可见性控件(即蓝色眼球图标)关闭地图中的 2 个警察图层。
可以使用各种渲染样式渲染点图层,例如 ACCIDENTS。 每种渲染样式都有自己的设置。 将渲染样式从 Circle(默认)更改为 Cluster。
地图现在使用圆圈显示事故,以表示聚集在区域中的许多点。 聚类圆的大小基于每个区域中聚类的点数。 您可以试验代表每个集群中点数的文本标签的颜色和样式。
请注意,当您放大(旋转鼠标滚轮)时,集群会爆炸成更小的集群,而当您缩小时,反之亦然。
将渲染样式从集群更改为热图。 现在,地图会根据点的集中度以连续颜色呈现 ACCIDENTS。 热色代表点集中,冷色代表点稀少。 热图样式的一个关键参数是半径,它控制每个点周围的距离以定义浓度。 默认半径太大,以至于初始热图仅显示道路沿线的点对比,这不是很有帮助。
要将我们的热图集中在更局部的收缩上,请将半径从默认值减小到 10,并观察点集中度的更局部视图。
将渲染样式从热图更改为圆形。 使用圆形渲染样式时,半径和颜色都可以由数据值控制。 下拉颜色菜单并选择“基于数据”。
您现在选择用于控制样式的列。 选择 NR_VEHICLES 列(即事故中涉及的车辆数量)并观察 ACCIDENTS 变成颜色编码。 您可以接受其他默认值,然后单击样式详细信息面板顶部的返回链接。
现在您已经根据数据值分配了颜色,通过将半径设置为 3 并将不透明度设置为 90% 来完成样式。 此外,更新描边(即轮廓)值:将宽度设置为 0.5,颜色设置为灰色,不透明度设置为 90%。 如果您愿意,您当然可以为这些选择您自己的值。 然后单击返回链接返回到图层列表。
接下来,您将对 POLICE_POINTS 图层使用剩余的点样式选项 Symbol。 打开 POLICE_POINTS 图层并通过单击可见性控件(即蓝色眼球图标)关闭地图中的其他 2 个图层。然后单击 POLICE_POINTS 的汉堡包图标并选择设置。
将渲染样式更改为符号,然后在图像文本框内单击以打开符号选择对话框。 选择 marker-11 并将不透明度更新为 90%,将大小因子更新为 0.6。 如果您愿意,您当然可以为这些选择您自己的值。 然后单击返回链接返回到图层列表。
然后单击图层 POLICE_BOUNDS 的汉堡图标,然后选择设置。 然后单击交互选项卡。 我们为层配置的第一种交互类型是选择项目的能力。 选择用于分析,例如我们想要识别选定区域中包含的项目。 默认情况下,可选选项是关闭的。 单击 POLICE_BOUNDS 区域并观察未选择任何内容。 然后打开允许选择,在 POLICE_BOUNDS 区域内单击并观察突出显示的选择。
接下来,您配置工具提示,即,将鼠标悬停在项目上时显示的弹出窗口。 默认情况下,工具提示被禁用。 将鼠标悬停在 POLICE_BOUNDS 区域上并观察到没有任何反应。 然后打开显示工具提示,选择一个工具提示栏,将鼠标悬停在一个区域上,然后观察工具提示。
最后,您配置信息窗口,即单击项目时显示的弹出窗口。 默认情况下,此选项处于关闭状态。 单击 POLICE_BOUNDS 区域并观察未显示任何信息窗口。 然后打开显示信息窗口,选择要显示的列,在 POLICE_BOUNDS 区域内单击并观察显示的信息窗口。
单击 Back 链接,然后单击 Save 按钮以保存我们的项目以及样式更改。
Spatial Studio 无需编写代码即可访问 Oracle 数据库的空间分析功能。 为空间分析提供了简单的用户界面,所有底层数据库语法都在后台自动处理。 Spatial Studio 中的空间分析操作分为几类:
筛选
包含:“我的哪些资产位于危险区域内?”
邻近性:“我们的哪些站点位于预计风暴路径的 5 英里范围内?”
…
结合
按位置加入:“根据遏制将销售线索与销售区域相关联。”
合并项目:“将多个县合并为 1 个销售区域”
…
转换
缓冲区:“创建围绕火场 10 英里的形状。”
质心:“在每个火区的中间创建点。”
…
测量
面积:“以平方公里为单位的风暴潮区域的面积是多少?”
距离; “从我们的每个资产到预计的风暴路径的最小距离是多少?”
…
分析
按区域总结:“每个规划区域内建筑物的平均年龄是多少?”
每个项目最近:“离每个分店最近的仓库是什么,距离多远?”
…
在本实验中,您将探索其中的几种空间分析。
预计实验室时间:45 分钟
目标
在此步骤中,您将使用空间过滤器来识别所选警察局指定距离内的事故。
首先点击警察局。 在下图中,我点击了红框中的警察局。 这将选择警察局用于邻近分析。 如果在进行选择时出现任何问题,请确认已为 POLICE_POINTS 图层启用了允许选择,如实验 3 步骤 6 中所述。
单击 ACCIDENTS 图层的汉堡菜单并选择空间分析
单击 Filter 选项卡,选择Return shapes within a specific distance of another。然后,输入参数:
分析结果只是 Spatial Studio 中的另一种数据集。 正如您将在后面的实验中看到的那样,分析结果可以添加到其他地图/表格中,用于其他项目,通过 REST 或 SQL 以编程方式访问,或导出为文件。
分析结果列在“数据元素”面板的“分析”下。 将分析结果拖放到地图上。 这将创建一个新的地图图层,仅显示所选警察局指定距离内的事故。
您不再需要地图中的此分析结果。 因此,为避免混乱,您接下来将其从地图中删除。 右键单击 Layers List 中的分析结果,然后选择 Remove
在此步骤中,您将使用空间过滤器来识别选定警察区域内的事故。
首先单击 POLICE_BOUNDS 图层中的一个区域。 所选区域将用于过滤事故。 在下图中,红色框中的区域被选中。
正如您在第 1 步中对先前分析所做的那样,单击 ACCIDENTS 图层的汉堡菜单并选择空间分析。 这一次,我们按“包含”过滤。 所以选择Return shapes that are inside another
把数据集加入地图,放大后显示如下:
在这里,您根据空间关系Join数据集。 您将根据包含ACCIDENTS 和 POLICE_BOUNDS进行Join。 您可以认为这是用包含它的警察区域来丰富或标记每个事故。
与之前的分析一样,单击图层列表中 ACCIDENTS 图层的汉堡菜单,然后选择空间分析。 选择组合选项卡,然后选择 Spatial Join。
在 Spatial Join 对话框中,为结果输入名称 ACCIDENTS_JOIN_POLICE_BOUNDS。 对于其他条目,您将根据内部空间关系将 ACCIDENTS 中的项目连接到 POLICE_BOUNDS 中的项目。 此操作将生成一个包含 ACCIDENTS 的新数据集,其中包含每个项目的 POLICE_BOUNDS 区域的唯一 ID。 POLICE_BOUNDS 的唯一 ID(即键列)是 COMPNT_NM,因此我们希望在结果中看到该列。 单击运行。
结果列在“数据元素”面板的“分析”下。 展开结果以查看其列; ACCIDENTS 中的所有原始列,以及预期的 COMPNT_NM(即警察区域名称)。
您现在已使用每个项目的警察区域名称来扩充事故数据。 结果可用于 Spatial Studio 的进一步分析,或由其他工具和应用程序(如 Oracle Analytics Cloud)访问以进行更广泛的分析。
在上一步中,您使用警察区域增加了事故项目。 在此步骤中,您执行相反的操作:您使用事故信息摘要来扩充警察区域。
单击图层列表中 POLICE_BOUNDS 图层的汉堡菜单,然后选择空间分析。 选择分析选项卡,然后选择Summarize by Region
在按区域汇总对话框中,您可以保留默认结果数据集名称 POLICE_BOUNDS SUMMARIZE。 在对话框中输入其他项目:对于 POLICE_BOUNDS 中的每个项目,您正在根据 Count 汇总 ACCIDENTS。 输入 NUM_ACCIDENTS 作为要添加事故计数的列。 单击运行。
将结果 POLICE_BOUNDS SUMMARIZE 拖到地图上。 然后在图层列表中单击 POLICE_BOUNDS SUMMARIZE 的汉堡菜单并选择设置。 在样式下,将颜色更改为基于数据。
对于列,选择 NUM_ACCIDENTS。 用 1、5、10、15、20 更新值。在任何单元格中输入每个值,因为它们将在值列表中自动排序。 输入值后,单击编辑图标以设置调色板并选择一个调色板。 观察地图显示的警察区域,根据您的值和调色板条目按事故数量进行颜色编码。
单击或悬停在警察区域上时,您可以自行添加带有事故计数的信息窗口或工具提示。 正如您在实验 2/步骤 3 中所做的那样,您还可以添加一个表格视图并拖动 POLICE_BOUNDS SUMMARIZE 以查看表格形式的信息。
在本例中,最近的项目表示只显示一个。
在此步骤中,您确定离每个警察局最近的事故。 结果包含每个警察局,并增加了 id 和与最近事故的距离。 该分析还提供了一个选项,包括最近项目的所有列,而不仅仅是 id 和距离。
单击图层列表中 POLICE_POINTS 图层的汉堡菜单,然后选择空间分析。 选择Analytics选项卡,然后单击Nearest per item。
将结果命名为 POLICE_POINTS WITH NEAREST ACCIDENT(或您选择的名称)。 对于 POLICE_POINTS 中的每个项目,您都在 ACCIDENTS 中找到最近的项目。 展开高级部分。 启用在结果中包含距离的选项。 对于距离列名称,输入 DISTANCE_TO_ACCIDENT(或您选择的名称)。 将距离单位更改为公里(或您选择的其他单位)。
在图层列表中,关闭 POLICE_POINTS 图层。 将 POLICE_POINTS WITH NEAREST ACCIDENT 分析拖到地图上。
转到 POLICE_POINTS WITH NEAREST ACCIDENT 图层的设置并设置您选择的样式。 然后转到交互选项卡并启用信息窗口。 选择您选择的列,包括此分析添加的列:ACCIDENT_ID 和 DISTANCE_TO_ACCIDENT。 单击 POLICE_POINTS 项目并观察信息窗口显示 ID 和到最近项目的距离 ACCIDENTS。
现在,您可以自行根据与最近事故的距离、颜色或大小随意设置警察局的样式。
最后,保存您的项目以保留您的更改。
此可选步骤适用于对以编程方式访问结果感兴趣的开发人员。 Spatial Studio 允许您查看用于空间分析的 SQL 代码,并提供一个以 GeoJSON 形式返回结果的 Web 端点。 此信息在数据集属性中可用,可在项目中或从数据集页面访问。 您将从您的项目中访问信息。
在 Data Elements 面板中,单击其中一项分析的汉堡菜单,例如 ACCIDENTS INSIDE 并选择 Properties
观察带有 SQL 代码和 GeoJSON 端点的部分。
其中GeoJSON端点:
https://130.61.147.125:4040/spatialstudio/api/v1/jsonstream/207424dbd9ae56055e138f720602b998
SQL为:
SELECT
"t4"."SEVERITY" AS "SEVERITY",
"t4"."NR_VEHICLES" AS "NR_VEHICLES",
"t4"."DATE_TIME" AS "DATE_TIME",
"t4"."GEOM" AS "GEOM",
"t4"."ACCIDENT_ID" AS "ACCIDENT_ID"
FROM
"ACCIDENTS" "t4"
WHERE
"t4"."ACCIDENT_ID" IN (
SELECT
"t2"."ACCIDENT_ID" AS "key"
FROM
"ACCIDENTS" "t2", (
SELECT
"t1".*
FROM
"POLICE_BOUNDS" "t1"
WHERE
"t1"."COMPNT_NM" IN ( 'BELMONT' )
) "t3"
WHERE
sdo_inside("t2"."GEOM", "t3"."GEOM") = 'TRUE'
)
自行将 GeoJSON 端点粘贴到浏览器中并观察以 GeoJSON 形式返回的结果。 同样,您可以将 SQL 代码复制并粘贴到 SQL Developer Web 中以直接运行分析。
Oracle Spatial Studio 简介研讨会到此结束。
本实验的作者为David Lapp,数据库产品经理。
文章浏览阅读1.5k次,点赞3次,收藏16次。要求:将滑块与编辑框、进度条相连接。调整滑块位置同时显示滑块当前对应数值,达到设定要求时改变进度条的进度。一、界面设计滑块是slider control,进度条是progress control对于三个滑块,修改属性:对于三个示例编辑框,修改属性:二、添加变量三、初始化滑块和进度条在Dlg.cpp中找到初始化函数BOOL COOPEx3Dlg::OnI..._setticfreq
文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏
文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。
文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计
文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高
文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏
文章浏览阅读7.8k次。自定义一个下拉列表框,当这个功能有效时,点击可弹出下拉框,选中某个选项后,在左边功能名称下面显示选项值,右边的箭头替换成自定义图标,例如手法功能;当功能无效时,置灰,如力度功能;具体示例如下:代码如下:index.hml<!--手法无效时--><div class="fun-grid-item" if="{{manualInvalid}}"> <div class="grid-item-parent-ver._harmonyos 下拉列表
文章浏览阅读1k次。第44集 图片与图形处理198、 Shape对象的类型和属性该对象代表工作表或图形工作表上的所有图形,它是sheets和chart的子对象(属性)。Sheet1.ShapesSub t2()On Error Resume NextDim ms As Shapek = 1For Each ms In Sheet1.Shapesk = k + 1Cells(k, 1) = ms.Na..._msofalse
文章浏览阅读1.2k次。公司个人年终工作总结1 20__年即将过去,在公司领导的悉心关怀下和同事们的帮助指导下,结合我自身的努力,在工作、学习等各方面都取得了长足的进步,尤其是在保险理赔专业知识和技能培养方面的成熟,使我成为一名合格的车险查勘定损员。随着工作岗位的调整,我已经成长为为一名能够独立工作、业务熟练的前台工作人员。现将一年来的工作情况向公司领导总结汇报如下: 一、加强理论学习,注重个人素质提高 加强自身业务学习,争做理赔标兵。在日常的工作学习中,我坚持学习更多的保险知识和业务技能,在老同志的“传帮带”下,不断加强个_csdn 公司 年终终结
文章浏览阅读1.6k次。_bitcoin 调试环境搭建
文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成
文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181