Questions tagged «postgresql»

PostgreSQL是一个开放源代码的对象关系数据库系统。

2
两个或更多轨迹之间的相似性
我有卡车的数据(http://www.chorochronos.org/)。 该数据是雅典卡车的多个轨迹的gps坐标。 我必须计算轨迹之间的相似度,才能删除非常相似的轨迹! 红色和绿色相似,但是蓝色,黑色和(红色或绿色)是不同的轨迹。我要删除相似的红色或绿色之一。 数据以点(几何,纬度和经度,x和y)(坐标gps)为单位,图像是轨迹的示例

2
查找缺少索引的PostGIS表?
最近,我环顾四周pg_stat_user_tables,很惊讶地发现我的一些空间桌子上有大量连续扫描。当然,这些表缺少空间索引。 如何找到带有未索引几何列的所有表?

1
在PostGIS中沿中心线计算平行线
我在PostgreSQL数据库中有街道(道路中心线)和建筑物多边形表。示例场景如下: 问题: 我需要在街道和两侧最近的建筑物多边形周围50米缓冲区的交点处计算沿着街道的平行线。所需的输出方案是: 我尝试过的 我的方法是: 1) Generate 50m buffer around street layer 2) get the intersection of buffer and polygons 3) Compute the distance 4) Draw offset curves (parallel lines) at both sides of street layer 5) Merge both curves to get parallel lines at the intersection 这是我的尝试: WITH street_buffer …

2
用线切割线串吗?
我正在检查按点切割线串的最佳方法。 场景是:很多街道,需要用相交点切开的线段,例如: 我有 线串(完全未切分)表 st_intersection点表 我需要获取由交点表剪切的独立线串段。 我正在使用PostGIS函数,并发现了几种方法,但是每种方法都给我带来了某种问题。 这是我已经测试过的: 1个 折线表:1行,st_memunion 1200行折点表:1700行(点) 不好的是:确实需要大量时间和内存刷新。无法同时创建多个表,导致内存无法处理。结果是脏乱的。而不是给我正确的行号,我需要稍后进行清理(在这里很好地解释了在相交点处分割线) CREATE TABLE lines_with_messy_result AS ( SELECT ((ST_DUMP(ST_SPLIT(a.geom,b.ix))).geom) as geom FROM st_union_lines a INNER JOIN lots_of_points b ON ST_INTERSECTS(a.geom, b.ix) ); --then need to clean this up create table lines_segments_cleaned as ( SELECT DISTINCT ON (ST_AsBinary(geom)) geom FROM lines_with_messy_result …

2
ST_Distance不使用索引进行空间查询
即使对于最简单的查询,我也无法在PostgreSQL 9.3.5上运行PostGIS 2.1来使用空间索引。在整个数据集为800万点(人口数电网从这里)。该表创建为 CREATE TABLE points ( population DOUBLE PRECISION NOT NULL, location GEOGRAPHY(4326, POINT) NOT NULL ) CREATE INDEX points_gix ON points USING GIST(location); 查询很简单 SELECT SUM(population) FROM points WHERE ST_Distance( location, ST_GeographyFromText('SRID=4326; POINT(0 0)') ) < 1000 PostgreSQL总是使用Seq扫描,我尝试了10000点的子集-仍然是Seq扫描。有任何想法吗?

5
根据点将线划分为不重叠的子集
给定一张具有线几何形状的表,并在单独的表中捕捉到该线的一个或多个点,我想在每条线与一个点相交的位置处使用一个或多个相交点来分割每条线。 例如,一条直线L沿直线几何顺序依次具有三个相交点A,B和C。我想将L作为四个不同的几何返回:从L的起点到A,沿着L的从A到B,沿着L的从B到C,以及从C到L的终点。 过去,我经常使用shape来完成此任务,这是一个线性引用问题(http://sgillies.net/blog/1040/shapely-recipes/)。但是,在这种情况下这是不切实际的,因为它有数百万条线和点。相反,我正在寻找使用PostgreSQL / PostGIS的解决方案。 注意,点被限制在一条线上。此外,一个点可以有效地位于一条线的起点或终点,在这种情况下,无需拆分该线(除非存在其他与同一条线的起点或终点不一致的点)。子线需要保留其方向和属性,但是点要素的属性无关紧要。

4
GROUP BY时间戳记间隔10分钟PostgreSQL [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 2年前关闭。 我需要按一段时间划分一组,每组划分10分钟。 我在下面的查询中返回一个结果集: SELECT timestamp FROM table_1, table_2_shape_polygon WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry) AND timestamp BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00' AND type = 0 AND id_polygon = 2 我的结果集是这样的: "2013-04-07 15:30:55" "2013-04-07 15:32:52" "2013-04-07 15:32:52" "2013-04-07 15:34:21" "2013-04-07 15:39:09" "2013-04-07 16:24:25" "2013-04-07 16:29:58" "2013-04-07 16:33:22" "2013-04-07 16:34:30" "2013-04-07 …

2
使用位于多边形内的点更新数据库行
我有一个PostGIS / Postgresql数据库,其中有两个表。一个具有点几何,另一个将国家边界表示为多边形。我想将每个点相交的国家/地区名称添加到我的点表中的每一行。也许是一大更新查询。我认为可以使用直接SQL来做到这一点,但我不知道从哪里开始。任何对此的建议将不胜感激...

1
Postgis 2.0-public.geometry_columns视图不包含视图的正确信息
我们最近将数据库更新为Postgis 2.0。 在我们的系统中,我们曾经为包含几何列的表创建视图。创建视图后,我们还使用必要的信息手动更新了geometry_columns表。这些视图用于创建Geoserver图层,也用于为ogr2ogr馈送数据。 Postgis 2.0中的问题在于,geometry_columns表已替换为从系统目录检索数据的视图。在我们的情况下,对于创建的视图,我们不会在“ coord_dimension”,“ srid”和“ type”列中检索正确的信息。 信息:经过一些研究,我发现geometry_columns视图正在使用pg_constraint表填充这些列,但是对于该视图没有定义约束。 有谁知道我们如何解决这个问题?我们如何强制gemetry_columns视图检索必要的信息?是否有解决方法或其他方法?

5
如何在交叉路口将OS​​M道路分割为单个路段?
我想使用OpenStreetMap数据创建一个用于pgRouting的道路网络。我从GeoFabrik将shapefile加载到Postgres表中(启用了PostGIS)。但是,我遇到的一个问题是道路并不总是在十字路口处终止,因此我决定在每个十字路口或十字路口将其全部拆分。 要找出所有地方的道路交叉或相交我用下面的interesections SQL(类似于以前的问题): CREATE TABLE split_points as SELECT DISTINCT ST_GeometryN(ST_Intersection(a.geom, b.geom),1) as geom FROM roads as a, roads as b WHERE ST_Touches(a.geom, b.geom) OR ST_Crosses(a.geom, b.geom) AND a.gid != b.gid GROUP BY ST_Intersection(a.geom, b.geom); 我现在想利用这些点来分路。我使用以下方法: CREATE TABLE split_roads as SELECT ST_GeomFromEWKB((ST_Dump(ST_Split(g.geom, blade.geom))).geom) As geom, generate_series(1,ST_NumGeometries((ST_Split(g.geom, blade.geom)))) as gid FROM split_points …

3
从PostgreSQL数据库中仅选择空间表?
我的数据库同时包含空间表和非空间表,但是我只想从查询中检索空间表。 任何仅选择空间表的建议。“ the_geom”是空间表中的几何列。 否则,可以从其列名中选择表。 我尝试使用此代码select relname from pg_stat_user_tables WHERE schemaname='public';但是从中我们得到所有的表名。

2
如何在GDAL / OGR Python绑定中捕获PostgreSQL / PostGIS错误?
查询失败后是否可以在OGR中捕获PostgreSQL输出错误消息? 例如 conn.ExecuteSQL('SELECT * FROM non_existing_table;') 在Postgres中,这将返回错误消息: "Error: relation 'non_existing_table' does not exist." 在ogr中,我们获得了标准: "Error: current transaction is aborted, commands ignored until end of transaction block" 如果我们能够捕获/解析Postgres错误消息,那将是一个额外的好处。考虑到我对SWIG / CPL的了解,我怀疑这有点长远,但是值得一问,看看是否有人有想法。理想情况下,这将是在Python中进行,但是我也会接受C / C ++注释! 谢谢。


2
使用Postgis生成建筑物阴影
我目前正在为现有建筑物开发太阳能潜力估算工具。想法是使用建筑物(=多边形)的形状,其高度,并在给定的时间创建最终的阴影。我只会对太阳的几个位置进行测试。我知道草函数r.sun.mask,但是对于我想做的事情来说,它的功能太强大了。 现在,我只想在太阳向南(天空18度)时获得阴影。因此,建筑物应投下约三倍于其高度的阴影。 我想要得到的是: 我已经寻找了一段时间,但在postgis中没有找到任何工具来执行此操作。我当时在考虑缓冲然后切割多边形,但无法使其正常工作。您知道任何工具或有任何想法怎么做吗?

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 …

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.