Questions tagged «optimization»

当指的是改进或优化脚本,应用程序或软件等过程时,请使用此标记。

1
Postgis数据库查询优化
我有一组DTED格式的栅格,可以使用raster2pgsql命令行工具将其加载到PostGIS数据库中。 每个栅格都简单地存储在一行中,并由rid和一个栅格格式的值来描述。 现在,我想创建一个数据库函数,该函数接受点的经度和纬度,并返回与该点相对应的像素值。 我的问题是,由于数据库在Odroid板上工作,因此需要花费很多时间(3-4秒)。 我知道我处理的数据集很大(栅格覆盖了整个英国地区),但是由于我对PostgreSQL和PostGIS不太熟悉,我怀疑它可以更快地完成。 到目前为止,这是我所做的: SELECT ST_Value(rast, ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326)) FROM ( SELECT * FROM rasters WHERE rast && ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326) ) x; $1和$2分别为long和lat。

1
通过GIST索引获得多边形查询中点的性能
我有两个表:locations(id,region_id,the_geom)和regions(id,the_geom)。对于每个定位点,我想确定其位于的区域: UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); 在位置点上建立GIST索引是否有意义?我将在区域多边形上建立索引,但是不确定这些点。会加快查询速度吗?

4
通过空间功能限制行
我正在尝试提高以下查询的性能。无论我如何编写查询(FROM子句中的子查询,WHERE子句中的子查询),postgres都坚持通过昂贵的ST_DWITHIN函数运行所有〜570K行,即使County = 24的行只有60行。在运行postgis函数之前,如何才能使postgres在County = 24上进行过滤,这对我来说似乎更快,更高效?700ms并不是引起太多关注的原因,但是随着该表增长到10M +,我开始关注性能。 还要注意,p.id是主键,p.zipcode是fk索引,z.county是fk索引,p.geom具有GiST索引。 查询: EXPLAIN ANALYZE SELECT count(p.id) FROM point AS p LEFT JOIN zipcode AS z ON p.zipcode = z.zipcode WHERE z.county = 24 AND ST_DWithin( p.geom, ST_SetSRID(ST_Point(-121.479756008715,38.563236291512),4269), 16090.0, false ) 说明分析: Aggregate (cost=250851.91..250851.92 rows=1 width=4) (actual time=724.007..724.007 rows=1 loops=1) -> Hash Join (cost=152.05..250851.34 rows=228 …

4
如何有效地找到20个最接近的点
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 去年关闭。 假设我想在我附近找到20家最接近的商家。 My table structure is like this: BusinessID varchar(250) utf8_unicode_ci No None Browse distinct values Change Drop Primary Unique Index Fulltext Prominent double No None Browse distinct values Change Drop Primary Unique Index Fulltext LatLong point No None Browse distinct values Change Drop Primary Unique Index …

2
如何加快Postgis中的空间划分?
我有一堆重叠的多边形,并且我试图对空间进行分区以避免重叠的多边形。我认为我的问题很简单。我的同事使用一些ESRI产品和http://arcscripts.esri.com/details.asp?dbid=16700进行了48秒钟的计算。 我正在尝试使用http://s3.opengeo.org/postgis-power.pdf#page=24(使用http://trac.osgeo.org/postgis/wiki/UsersWikiSimplifyPreserveTopology来猜测详细信息)作为灵感),但它是如此之慢,以至于我无法使用10个以上的多边形(我已经分解了800个)。最慢的部分是ST_Union,我尝试了各种方法,但是没有成功的地方,这是当前的状态: select geom from (select st_linemerge(st_union(geom)) as geom from (select st_exteriorring((st_dumprings((st_dump(t.geom)).geom)).geom) as geom from (SELECT geometry AS geom, id FROM tt WHERE campaign_id = 204 ORDER BY id limit 200) t) t2) t3 这已经计算了26分钟(linemerge()实际上不是)。如果st_dump困扰您,则多边形是MultiPolygons。 你有小费吗?线条的st_union()是非常慢的部分。 谢谢, 尼科 PS:这是一些数字:852个多边形,导致14880个多边形,导致21467个线串,总计315513个顶点。


4
如何解决PostGIS ST_Intersects中的性能问题?
我是Postgis的新手,查询性能有问题。 这是我的查询: SELECT DISTINCT ON (userid) userid ,ST_AsText(position), timestamp FROM table1 WHERE ST_Intersects ( ST_GeomFromText('a multiypolygon geom goes here',4326),position) ORDER BY userid, timestamp desc 问题是我的multipolygon包含非常大的多边形(word文档中有600页长!),执行时间超过2个小时! 有没有一种方法可以优化我的查询或使用另一种方法? 请您的帮助,万分感谢!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.