当前位置: 首页 > 知识库问答 >
问题:

如何提高函数st_worldtorastercoordx(rast,geom)的速度

微生弘
2023-03-14

1背景

 As the wireless communication technology is developing faster and faster, the Long Term Evolution networks are widely installed all over the word.  Since the Long Term Evolution network is based on wide-band radio access technology, there is only one radio carrier available for most of the operator.   Since the frequency resource is limited, many telecom operators use same frequency TD-LTE networks. In the same frequency TD-LTE networks, overlapping coverage seriously impact download speed. RF optimization is a conventional method of controlling overlapping coverage. However, the network optimization resources are always limited, we must evaluate the wireless network coverage and quality as a whole, and identify the problems in priority. 
 Drive test data is widely used to evaluate the wireless network coverage and quality. And we will future associate the Drive test data with the map. Traditionally, we use a desktop software MapInfo to analysis the Drive test data point with the street and road, which is a very heavy labor task.   Recently, we find a new approach the PostGIS middleware, we could transfer the city maps into Raster data, we can we could future associate the Drive test data point with the city map raster data , just like we associate the Drive test data point with the polygon object.

在本文中,我们将描述如何将地图点与光栅相关联。我的问题是,如果函数st_worldtorastercoordx(rast,geom)在光栅对象中有超过10000*10000个像素,我们如何提高速度。此问题与中间件PostGIS光栅对象相关。

2 创建路测数据点对象

2.1 创建点对象字段

在前面的对象中,我们使用水壶中间件将驱动测试数据文件上传到Postgres-SQL数据库中。在数据库中,目标表atu_sample,现在我们将更新表以添加几何对象“点”。命令来了:

更改表atu_sample添加列几何图形(点,4326)

2.2 为点赋值

在路测数据文件中,我们用经度和纬度来表示空间位置,现在我们将它们转换成一个几何对象“点”。下面是命令:

更新atu _ sample set geom = ST _ geomfromtext(' POINT(' | | long titude | | ' ' | | latitude | | ')',4326);

3创建光栅数据

为了将点对象与栅格数据相关联,我们必须首先设置一个栅格数据。在本文中,我们将把作为矢量数据的城市地图转换为栅格数据。

3.1导入武汉城市边界多边形

3.1.1创建形状文件在这个项目中,我们将把武汉市的边界多边形导入到PostGIS数据库中,武汉市是中国湖北省的省会城市。它依赖于MAPinfo格式传递函数,GUI入口可以在下图中看到:从图中我们可以看到,目标文件的格式是ESRI形状文件,这是PostGIS可以支持的默认格式。

3.1.2创建PG脚本然后我们将ESRI形状文件中的武汉城市地图转换为PostGIS脚本。它依赖于工具shp2pgsql,它是PostGIS的插件组件。下面是命令:

shp2pgsql–W“GBK”-s 4326 wh_region.shp

3.1.3脚本执行现在,我们将打开PGADMIN,并将脚本传输到PostGIS数据库中,最后我们得到一个名为wuhan的talbe。当脚本执行时,我们在postGIS中拥有空间数据表。

3.2测量武汉边界的高度和宽度

3.2.1绘制武汉市的凸包图在此输入图像描述图2-4:武汉市的凸包图在图2-4中,我们绘制了武汉市的凸包图,它将包围武汉市边界。

3.2.2用直尺测量高度和宽度使用尺子工具< br >在Mapinfo中,我们有一个名为尺子的工具,可以用来测量武汉市凸包的高度和宽度。在此输入图像描述图2-5测量高度和宽度最后我们得到数据:132.7KM和155.5KM

3.3创建武汉光栅数据在我们的项目中,我们将创建100*100米的像素。因此,我们将首先计算参数,以划分武汉市凸包的高度和宽度。根据我们之前测量的数据,高度为132.7KM,宽度为155.5KM,因此我们可以计算出等分参数为1327和1555。

3.3.1创建光栅持久性表现在我们将创建一个可以存储光栅数据的表。下面是SQL命令:CREATE TABLE myasters(rid integer NOT NULL,rast raster,CONSTRAINT myasters_pkey PRIMARY KEY(rid));

3.3.2插入栅格记录在前面的步骤中,我们有了表wh_region的geomtry对象和qually divide参数,我们可以用函数ST_AsRaster创建栅格实例。命令来了:insert into myrasters SELECT gid,ST_AsRaster( geom,1327,1555,' 8 bui ')from wh _ region;

4将点与光栅4.1添加驱动器测试点RASTER坐标数据栏我们将找出点与光栅的关系,也就是说我们应该找出某个点位于哪个像素。为了记录这种关系,我们首先在表atu_sample中添加两个数据栏x整数和y整数。命令来了:更改表atu_sample添加列x整数;更改表atu_sample添加列y整数;

4.2 栅格映射

使用函数st_worldtorastercoordx(rast,geom)和st_worldtorastercoordy(rast,geom),我们可以很容易地找出某个点位于哪个像素并获取像素坐标数据。然后我们将更新 tabe 命令来了:

从Myrasters更新atu_sample设置X =st_worldtorastercoordx(Rast,Geom);

从Myrasters更新atu_sample集合Y =st_worldtorastercoordy(Rast,Geom);

几何:

4.3栅格制图的性能问题在上面的例子中,我们有12000个点和一个1327* 1555的栅格数据。完成任务需要160多秒。在未来的项目中,我们将有超过1200000个点,我们如何修复性能问题?

共有1个答案

淳于新
2023-03-14

对于3.3,请参考本文。您不必测量区域的尺寸来将其转换为光栅。确保您使用相当小的瓷砖生成平铺光栅覆盖。

对于 4:您不必计算点在栅格中的位置。使用坐标表中的 ST_MakePoint() 创建点,并确保它们位于正确的坐标系中。然后创建一个新表,其中的点投影到与栅格表相同的坐标系中,并使用 ST_Transform() 为该表编制索引。然后使用如下所示的查询查询像素值:

SELECT ST_Value(rast, geom) val
FROM rastertable, geomtable
WHERE ST_Intersects(rast, geom)
 类似资料:
  • 本文向大家介绍如何提高javascript加载速度,包括了如何提高javascript加载速度的使用技巧和注意事项,需要的朋友参考一下 方法如下: 1、将所有<script>标签放在尽可能接近<body>标签底部的位置,以保证页面在脚本运行之前完成解析尽量减少对整个页面下载的影响 2、限制页面的<script>总数也可以改善性能。每当页面解析碰到一个<script>标签时, 紧接着有一段时间用于代

  • 我是Apache Hbase的新手,我使用的是hbase-0.98.13,并且我已经创建了一个表示例,其列族为sample_family。并且我已经将pig脚本的输出加载到hbase表中。当我尝试基于列族中的一个列扫描表时,它需要超过2分钟。 是否为此进行任何配置更改?有人能帮我吗?

  • 嗨,有没有什么方法可以提高滚动速度。我找到了一些解决方案,但都不适合我。这就是我尝试的: 或者使用css: 还有别的办法吗?编辑:上面的解决方案都不起作用,我试图使用大得离谱的数字,但滚动速度还是一样

  • 我正在项目的中添加。 所有工作都很好,但在JPanel中使用鼠标滚轮滚动鼠标存在一个问题。滚动时速度很慢。如何让它更快? 我的代码是:

  • 小弟对io流很陌生,请问大佬下面的代码怎么优化?图片5Mb的时候要等8sm,怎么提高加载速度?

  • 问题内容: 我有一个从java.awt.Component扩展的JPictureBox,请参见此处的代码http://pastebin.com/SAJc6Sht。但是,只有在没有图像拉伸的情况下,它才能很好地工作。特别是对于大局而言,它会极大地减慢程序速度。如何提高JPictureBox的大图绘制速度? 问题答案: 基本上,您希望将图像的缩放卸载到后台线程,缩放很耗时,并且您不想在事件调度线程的上