Questions tagged «postgresql»

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

2
在一个查询中使用PgRouting获得多个最短路径?
我想一次在多个源和目标对上运行最短路径算法,并获得结果表,然后对其进行处理。 我该怎么做呢?该查询不起作用: SELECT a.source, a.target, paths.* FROM all_to_all a, shortest_path_astar('...', a.source, a.target, false, false) paths; ERROR: function expression in FROM cannot refer to other relations of same query level (顺便说一句,all_to_all并不是字面意思,:)只是一些随机对。 这也不起作用: SELECT * FROM all_to_all a, ( SELECT * FROM shortest_path_astar('...', a.source, a.target, false, false) yyy ) AS t2;

5
加快OpenStreetMap PostGIS查询
我使用渗透模式将荷兰的OpenStreetMap数据加载到PostGIS数据库(PostgreSQL 8.3 / PostGIS 1.3.3)中。这意味着所有标签都存储在hstore字段中。除了渗透在几何字段上创建的GIST索引之外,我还在标签字段上创建了另一个GIST索引。 尝试同时使用空间约束和标签字段约束进行查询时,我发现它比我想要的要慢。这样的查询: SELECT n.geom,n.tags,n.tstamp,u.name FROM nodes AS n INNER JOIN users AS u ON n.user_id = u.id WHERE tags->'man_made'='surveillance' AND ST_Within(geom, ST_GeomFromText('POLYGON((4.0 52.0,5.0 52.0,5.0 53.0,4.0 53.0,4.0 52.0))',4326)); 需要22秒才能返回78条记录。 该表中有大约5300万条记录。 有没有办法大大加快这一步?我听说hstore在PostgreSQL 9中的实现明显更好,升级是否有帮助?

4
对于PostGIS数据库,什么是合适的全局/通用唯一标识符?
我已经读到,在Ogres作为PostgreSQL / PostGIS数据库中的主键是不好的做法,因为在某些情况下可以重置OID。听起来合乎逻辑,但是什么是合适的选择?我相信可以使用“ Universal Unique Identifer” UUID,但是随即出现的大文本和数字值太可怕了。 我的情况仅需更多背景知识。我用一个名为“ gid”的字段创建了所有空间表,这是该表的主键,并且仅对该表唯一。我现在遇到一个问题,因为我想将我的空间表(所有以“ gid”字段从1开始并递增)关联到一个包含相关信息的大表。显然,要使我的关系正常工作,我所有的空间特征都需要一个唯一的标识符,以将它们彼此区分开。 编辑根据彼得斯的评论添加了这张图片。彼得,这就是我的想法,这可能不是解决问题的最佳方法,甚至可能不是好的数据库设计。我对您的想法感兴趣。 有小费吗?

4
我在postgis安装中找不到shp2pgsql
我已经按照本指南安装了postgis 。一切都OK。 SELECT postgis_full_version(); "POSTGIS="2.1.7 r13414" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.9.1" LIBJSON="UNKNOWN" TOPOLOGY RASTER" 但是我没有看到shp2pgsql,/usr/lib/postgresql/9.4/bin如您所见: foo@bar:/usr/lib/postgresql/9.4/bin$ ls clusterdb initdb pg_dump pg_standby psql createdb oid2name pg_dumpall pg_test_fsync reindexdb createlang pg_archivecleanup pg_isready pg_test_timing vacuumdb createuser pg_basebackup pg_receivexlog pg_upgrade vacuumlo dropdb pgbench pg_recvlogical pg_xlogdump droplang pg_controldata …


2
在PostGIS中清洗几何?
我正在尝试在一些非常大的多边形图层上进行一些处理。但是我遇到了各种几何错误,例如: NOTICE: Ring Self-intersection at or near point 470396.52017068537 141300.52235257279 CONTEXT: PL/pgSQL function st_intersection(geometry,raster,integer) line 10 at RETURN QUERY SQL function "st_intersection" statement 1 NOTICE: Ring Self-intersection at or near point 504154.61769969884 140782.04115761846 CONTEXT: PL/pgSQL function st_intersection(geometry,raster,integer) line 10 at RETURN QUERY SQL function "st_intersection" statement 1 NOTICE: Ring Self-intersection …

1
如何在QGIS中加快PostGIS图层的同时工作?
我们同时在一个较大的层上工作(10-20人)。我们中的一些人使用QGIS 2.8.1和其他2.6。使用2.8的用户会发生很多崩溃(QGIS)。2.6用户没有崩溃,但是添加功能真是令人难以置信的缓慢。Postgres 9.4服务器在带有Win7的虚拟机(Hyper V)上运行。也许是网络而不是QGIS?也许有人有一个主意。会很好 :)

1
将多个shapefile批量加载到Postgis
根据shp2pgsql帮助,选项drop,append,create和prepare是互斥的。因此,如果我想从形状创建表,然后附加多个其他shapefile,我将执行以下操作,并保留一个计数器以指示我们处于创建还是附加模式。 cnt=0 for shp in $(ls *.shp); do if [ $cnt -eq 0 ] ; then shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db else shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db fi ((cnt++)) done 这可以按预期工作,但我经常想知道是否有更简单的方法?

1
合并相邻的多边形并将所有(相邻和不相邻)返回为Multipolygon?
我有一个带有管理边界及其几何的postgres数据库。这些边界中的每一个都有一个标识号。 我要实现的目标: 首先,我想选择所有以特定邮政编码开头的行。例如: SELECT * FROM "post" WHERE "post"."ident" LIKE '101%' 所有相邻的几何应合并,不合并的几何应返回。 我已经尝试过以下语句: 我从这个答案中得到这一点: 使用PostGIS将许多小多边形连接起来以形成更大的多边形? with t as ( select (st_dump(geom)).geom from "post" where "post"."ident" LIKE '593%' ) select ST_UNION(geom) from t; 但是此语句仅返回那些相邻但不包括在内的多边形 with t as ( select (st_dump(geom)).geom from "post" where "post"."ident" LIKE '593%' ) select ((ST_Dump(ST_UNION(geom)))) from t; …

2
当用Geoserver和PostGIS数据存储发布图层时,日期值为何显示尾随的“ Z”?
我已经使用Geoserver 2.2.x和PostGIS 2.0.1(PostgreSQL 9.1.x)数据存储发布了各个层。仅具有日期值而没有与时间/时间戳相关的值的字段存储为日期。在将我的图层发布为wfs / wms并在浏览器中打开表格后,日期vlu显示为带有尾随的'Z'。 这是geoserver使用的geotools数据存储api的产品吗? 我认为,geotools数据存储区api在数据读取日期,日期时间,时间戳记等方面给与了铺垫,并且显示了zulu时间的“ z”。我可能完全不考虑我的geotools假设,但是在PostgreSQL中,“ z”表示zulu或utc。 如果数据源值存储为日期,并且没有时间成分,为什么在日期字段中尾随“ Z”?

1
是否基于PostGIS / PostGresQL中的最大重叠量进行联接?
我在两个表中有两组多边形。这些集合彼此重叠。对于集合A中的每个多边形,我想获取集合B中重叠最多的多边形的ID。我正在使用带有PostGIS扩展名的PostgreSQL。 我对SQL足够了解,因此只能基于对/错条件进行联接。所以这行不通: SELECT a.id as a_id, b.id as b_id, FROM a JOIN b ON max(ST_Area(ST_Intersection(a.geom, b.geom))) 因为max()不能在ON子句中。 ST_Intersects()是对/错测试,因此我可以参加,但是集合A中的多边形通常会与集合B中的多个多边形重叠,因此我需要知道哪个重叠最多。无论重叠的程度如何,ST_Intersects大概只会返回遇到的第一个重叠ID。 这似乎应该可行,但这超出了我。有什么想法吗?

1
对同一几何表中的两个点进行简单的PostGIS ST_Distance查询?
注意:这个问题在在发表#1 首。 我有一个几何表points_table,里面SRID 4326有几点。 我需要从该表中找到一对点(特征)之间的距离。 我想选择一个点与id = X另一个点,id = Y然后用ST_Distance函数找到它们之间的距离。 我知道如何从数据库中查询这两点: select * from points_table where id = X or id = Y; 但是此查询返回的结果不知道如何传递给ST_Distance,因为ST_Distance它需要2个参数。 我努力了 Select ST_Distance(select the_geom from points_table where id = X or id = Y); 但这显然是错误的。 如何从表格中找到两个几何点(特征)之间的距离? PS到目前为止,我发现的所有示例都显示了ST_Distance用法,这些点已硬编码到ST_Distance函数的参数中。我还没有找到一个示例,其中ST_Distance用于计算同一张表中两个点之间的距离。

2
您如何在QGIS中显示相关记录?
来自esri背景,我一直在gdb中使用关系类来显示与功能有关的记录。例如。将1个调查点与许多文档,照片等相关 有谁知道如何在QGIS中做类似的事情? 安藤 PS我正在使用PostGreSQL 8.4.1和PostGIS 1.4,而我的客户是QGIS。

1
可视化索引构建?
我可以从PostGIS的GiST索引中获得什么样的可视化/统计信息? 如果我们看一下维基百科的R-树条目,也有不同的R树和变化限定每个使用ELKI盒的可视化。GiST索引类似于R-Tree索引。那么,这种可视化是否有某种方法/扩展(也许通过QGIS)? 编辑:在这里它也可视化-这是如何实现的?

1
在QGIS中可视化栅格PostgreSQL表
我已使用以下命令将栅格tif图像导入PostgreSQL: raster2pgsql -s 32643 -I -M filepath.tif -F -t 100x100 public.databassename > filepath.sql 并在运行此命令的PostgreSQL数据库中导入输出SQL文件: psql -U postgres -d databasename -f filepath.sql 在QGIS中连接到此数据库后,由于缺少几何内容,我无法看到tif图像。请帮助我在QGIS中可视化tif栅格图像。

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.