Questions tagged «postgresql»

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

3
在PostGIS中存储大型栅格并在QGIS中进行可视化会降低性能
我的问题是与PostgreSQL,PostGIS,QGIS和GDAL一起使用的几种软件工具的使用和性能有关。 我是ArcGIS,Python和R的长期用户,他对使免费开源GIS生态系统和Linux多样化感兴趣。最近,我对将QGIS(版本2.8)与PostgreSQL(版本9.4)和PostGIS(版本2.1)一起使用非常感兴趣,并且我已在装有Windows 8.1 x64的计算机上安装了该软件(简要的计算机规格:ThinkPad配备2.1GHz核心2、8GB RAM和240GB SSD的X200)。学习了如何管理空间数据(价值约100GB)后,我想在此计算机上运行Ubuntu。 目前,我只是试图可靠地存储和检索shapefile和栅格。到目前为止,我已经成功地将shapefile加载到PostGIS中,但是栅格被证明存在更多问题。我已经成功完成了小的geoTIFF和GRID文件的单次和批量导入,但是较大的栅格(例如,磁盘上大小为870MB的15619x14655单元IMG或TIFF文件)需要永久加载到PostGIS中。我已经阅读并配置了raster2pgsql工具,以使用以下参数构建空间索引并通过图块加载栅格: raster2pgsql -s 3161 -C -I D:\PostGIS_data\dem.img -t auto raster.dem | psql -h localhost -U postgres -p 5432 -d postgres 导入性能仍然很差,并且硬件不是问题。QGIS中PostGIS栅格的可视化甚至更糟,充其量只能缓慢加载小栅格或完全冻结。像我提到的那样的大型栅格无法在QGIS中可视化。从文档和论坛讨论中,该缺陷似乎是由于GDAL的PostGIS栅格驱动程序而不是QGIS本身引起的。论坛讨论中简要提到了这个问题,甚至有人建议不应将栅格存储在PostGIS中(空间数据库中不能平滑处理栅格的意义是什么?)。但是,我通常使用ESRI的文件地理数据库来快速,轻松地存储,可视化和分析相当大的栅格(〜70GB),而ArcGIS 10.1绝不会因这种常规操作而冻结或变慢。 这里有我想念的东西吗?我还没有解决瓶颈?PostgreSQL是否需要进行调整以实现PostGIS的性能优势?我是否缺少寻找和编译所需的GDAL版本?如何改善Shapefile和栅格的QGIS中的PostGIS性能和可视化?如何通过Linux终端享受全面,快速的空间数据管理的荣耀?在这个问题上的任何帮助都将受到欢迎! 我按照Duncan Golicher的指南进行操作:https://duncanjg.wordpress.com/2012/11/20/the-basics-of-postgis-raster/ 我最初使用的是具有自动设置的图块,但我将图块重置为每行100x100个像元,然后按照指南中的说明添加了金字塔,如下所示: raster2pgsql -s 3161 -d -C -I -M -l 4 D:\PostGIS_data\dem.img -t 100x100 raster.dem100 | psql -h localhost -U …

2
在GeoServer中发布PostGIS栅格?
如何使用GeoServer发布PostGIS栅格? 我花了很多时间尝试使用Image Mosaic JDBC创建Raster数据源,但是没有运气。 执行的步骤: 1.下载并安装JDBC Image Mosaic扩展(正常) 2.创建“连接参数”文件: connect.postgis.xml.inc: <connect> <dstype value="DBCP"/> <username value="postgres" /> <password value="password" /> <jdbcUrl value="jdbc:postgresql://localhost:5432/db1" /> <driverClassName value="org.postgresql.Driver"/> <maxActive value="10"/> <maxIdle value="0"/> </connect> mapping.postgis.xml.inc: <spatialExtension name="postgis"/> <mapping> <masterTable name="mosaic" > <coverageNameAttribute name="name"/> <maxXAttribute name="maxX"/> <maxYAttribute name="maxY"/> <minXAttribute name="minX"/> <minYAttribute name="minY"/> <resXAttribute name="resX"/> <resYAttribute name="resY"/> …

4
如何优化注浆速度?
我在通过osm2pgrouting创建的postgis数据库上使用pgrouting。它在有限的数据集上表现出色(3.5k种方式,所有最短路径A *搜索均<20 ms)。 但是,由于我从Europe.osm导入了一个更大的边界框(122k方向),因此性能下降了很多(最短路径的成本约为900ms)。 我认为使用A *不会使这些边缘中的大多数受到干扰。 到目前为止,我为提高速度所做的工作: 在几何列上放置索引(无明显影响) 我的内存从8GB增加到16GB 将Postgresql内存设置(shared_buffers,effective_cache_size)从(128MB,128MB)更改为(1GB,2GB)(无明显效果) 我感觉大多数工作都在制作图形的C Boost库中完成,因此优化postgresql不会给我带来更好的结果。当我对每次搜索选择的A *行集合进行细微更改时,我有点担心boost库无法缓存我的图形,并且每次都必须重建所有122k边(即使它只会使用非常每个查询的限制子集)。而且我不知道与实际最短路径搜索相比,花了多少钱。 你们中有人在122k或更高版本的OSM数据集上使用注浆吗?我应该期待什么表现?哪些设置对性能的影响最大?

1
PostGIS和QGIS是否可以提供可靠的多用户编辑?
在考虑了几种选择之后,我试图为15-20名QGIS 2.2用户提供同时查看/编辑一两个基本点PostGIS层的能力,最大的一层只有16,000条记录。我已经安装了PostgreSQL 9.1 / PostGIS 2.0,基本测试似乎还可以,但是还没有向大众发布。 通常一次一次只有2-3位编辑者,但可能只有15位观众。编辑将全部在QGIS中进行,查看者将在QGIS和ArcGIS中进行(但我们没有SDE)。 正如我所说的,这些只是基本的点文件,而编辑将只是添加/删除点和一些表编辑。我不担心同时编辑相同的功能。 组合能否为两个基本点文件提供可靠的多用户编辑?


8
如何在pgadmin3中启用Shapefile GUI加载程序?
我已经在Ubuntu 11.10上安装了PostGIS 1.5.3的PostgreSQL 9.1。 按照此说明,我还安装了pgadmin3 1.14.0-beta1 。 如果我没记错的话,当我在Windows上安装PostGIS时,pgadmin自动安装了Shapefile GUI Loader插件。但是,在Ubuntu上,插件下拉菜单为空。 我发现的说明似乎是Windows特定的。 有没有办法在Ubuntu上安装/启用它?

3
使用PostGIS创建空间表
在PostGIS文档中,它说使用SQL创建空间表有两个步骤: 创建一个普通的非空间表。 使用OpenGIS“ AddGeometryColumn”功能将空间列添加到表中。 如果遵循这些示例,则将创建一个terrain_points像这样的表: CREATE TABLE terrain_points ( ogc_fid serial NOT NULL, elevation double precision, ); SELECT AddGeometryColumn('terrain_points', 'wkb_geometry', 3725, 'POINT', 3 ); 另外,如果我查看pgAdmin III中的现有表,似乎我可以像这样创建相同的表: CREATE TABLE terrain_points ( ogc_fid serial NOT NULL, wkb_geometry geometry, elevation double precision, CONSTRAINT terrain_points_pk PRIMARY KEY (ogc_fid), CONSTRAINT enforce_dims_wkb_geometry CHECK (st_ndims(wkb_geometry) = 3), …

1
我们可以在Postgis2.0中的栅格表上创建视图吗?
是否可以在包含栅格数据的表上创建PostgreSQL视图? 我已经成功创建了视图,但是输入raster_columns不正确(缺少所有栅格信息)。另外,我无法使用QGIS打开SQL视图(很可能是因为raster_columns不正确)。 这与gemetry_columns和视图上的问题的情况相同,但是对于栅格列,我找不到在创建视图期间强制typemod的正确语法。 我所能找到的就是: 光栅(ARRAY ['8BUI','8BUI','8BUI'],4326,0.5,-0.5,...); 但是在“ ...”之后出现的是一个谜。 是否有人设法在raster_columns中创建带有正确条目的视图? 一个简短的例子将不胜感激。

3
在Windows上将栅格加载到PostGIS 2.0数据库中
我试图弄清楚如何将栅格加载到PostGIS2.0数据库中(我在这里和这里都曾问过有关此主题的先前问题)。我正在尝试使用raster2pgsql.exePostGIS2.0随附的程序。 确定Windows中的命令提示符需要以管理员身份运行(在Windows 7中以管理员身份运行命令行后,cmd在搜索栏中键入并单击ctrl+ shift+ enter)以启用raster2pgsql.exe我已管理的功能将栅格加载到我的数据库中。我有一个栅格文件ras_test.tif,我暂时将其放置在安装bin文件夹中postgresql。使用以下代码转换并加载此栅格: C:\Program Files (x86)\PostgreSQL\9.1\bin>raster2pgsql -s 102003 ras_test.tif -t> elev.sql Processing 1/1: ras_test.tif C:\Program Files (x86)\PostgreSQL\9.1\bin>psql.exe -p 5434 -U postgres -d test2 -f elev.sql BEGIN psql:elev.sql:2: NOTICE: CREATE TABLE will create implicit sequence "-t_rid_seq" for serial column "-t.rid" psql:elev.sql:2: NOTICE: CREATE TABLE / PRIMARY KEY will create …

1
如何为PostGIS距离查询正确设置索引?
我正在构建一个应用程序,该应用程序应查询并返回距离数公里Record的表中的每个表。和的位置取决于Google Geocode API提供的信息。XPointXRecordsPointX(long/lat) 我是PostGIS的新手。经过快速研究,我发现了这个问题。答案似乎是: SELECT * FROM your_table WHERE ST_Distance_Sphere(the_geom, ST_MakePoint(your_lon,your_lat)) <= radius_mi * 1609.34 问题是:即使我只是开始使用GIS,但是当我看上述查询时,我无法想象它如何使用索引。有2个函数调用。我想象每张桌子都要扫描Record。我想错了:) 问题:PostGIS是否具有任何能够使上述查询具有性能的索引类型?如果没有,那么推荐的方法将满足我的需求?

1
查询OSM以了解面向西的所有海滩?-首选QGIS
我想确定这个星球(或其给定子集)上所有向西(+/- 20-30度)的海滩。 我的想法是使用OSM作为数据源。提取所有带有标签“ natural = beach”的多边形,可以为我提供标记为海滩的所有区域的数据集/ shapefile。到目前为止,一切都很好。 我也知道我可以使用海岸线数据(例如,来自OSM或Natural Earth的数据)来识别海滩的朝向。 缓冲海滩形状以校正较小的不匹配,并将其与海岸线相交,应为我提供有关形状朝向水的一侧的数据。使用所有相交点的最大/最小值应该使我对方位有一个了解。(90度+/- 20-30度就可以了...) 那就是我迷路的地方... 我首选的工具是QGIS,但PostGIS也可以。 周围有人有聪明的主意如何解决这个难题吗?

3
我期望PostGIS对格式正确的地址进行地理编码的速度有多快?
我期望PostGIS对格式正确的地址进行地理编码的速度有多快? 我已经安装了PostgreSQL 9.3.7和PostGIS 2.1.7,加载了国家数据和所有州数据,但是发现地理编码比我预期的要慢得多。我设定的期望过高吗?我平均每秒获得3个单独的地理编码。我需要做大约500万,我不想等待三周。 这是一个用于处理巨型R矩阵的虚拟机,我在侧面安装了此数据库,因此配置可能看起来有些愚蠢。如果对VM的配置进行重大更改会有所帮助,则可以更改配置。 硬件规格 内存:65GB处理器:6 lscpu给了我这个: # lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 6 On-line CPU(s) list: 0-5 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 6 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 58 Stepping: 0 CPU …

3
使用PostGIS识别道路交叉口
我正在尝试确定道路相交的位置,并在此相交处定点,并列出构成该相交处的道路数量。 我想知道是否有使用ST_NumPoints的方法来实现此目的,但是我不太清楚应该怎么做。我所做的是使用以下代码创建线相交的点表: CREATE TABLE test_points as SELECT ST_Intersection(a.geom, b.geom), a.gid FROM roads as a, roads as b WHERE ST_Touches(a.geom, b.geom); 如果我在道路样本上运行此代码,则会得到以下点网格(道路仅供参考): 如果检查这些点之一,就会发现有很多点彼此叠放: 这里的GID是道路ID,但我不明白为什么会有很多点。我可以理解中央道路交叉路口被计算出的4个点,但是这里列出了12个点。有没有更好的方法在PostGIS中执行此计算?

2
在PostGIS中找到最接近的几何
我一直在研究PostGIS的“ API”功能,并且我注意到它们中的大多数需要两个元素进行比较。例如,ST_Distance函数采用两个几何/地理元素来查找距离。 没有函数可以执行以下操作:“给定几何G,在表T中给我最接近的几何GClosest,其中G.id <> GClosest.id” 我意识到我可以编写一个PL / PgSQL函数来遍历表并在每个元素上调用ST_Distance,但是我希望有一个更好,更有效的解决方案。

3
如何在PostGIS中获得一组点的质心?
我将PostgreSQL与PostGIS扩展一起使用。 我在the_geom表的列中有一组要点myschema.myobjects。我想创建一个select语句来获取该群集的质心,因此从这样的select语句中: SELECT the_geom FROM myschema.myobjects 我需要为以下语句找到正确的语法: SELECT ST_AsText(ST_Centroid( (SELECT the_geom FROM myshema.myobjects) ));

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.