Questions tagged «postgis»

3
PostgreSQL与MySQL:空间特征比较
我们正在构建具有空间数据组件的Web应用程序。首先,我们的空间数据比较将获取一个给定的点,并返回匹配的重叠空间多边形。 话虽如此,我们的数据库还有许多其他组件,其中包括您在常规关系数据库中可以找到的所有典型内容。 在项目中,我们必须选择要使用的数据库解决方案。 所有项目成员都对MySQL的实现和管理更加熟悉,但是所有研究表明PostgreSQL是更好的解决方案-特别是在使用postGIS的空间数据方面。 我们期望(希望)我们的应用程序在许多并发用户中会经历很多动作。 是否有任何将MySQL用作具有空间数据组件的RDBMS的经验的人有长期的建议/经验? 除熟悉之外,使用PostGIS是否有任何缺点?

2
PostGIS与SQL Server的GIS数据
因此,我最近刚开始在一家新公司工作,有很多ArcGIS用户,他们似乎非常热衷于继续使用PostGIS实例向我们的客户提供一些数据。虽然我对此没有疑问,但我们拥有95%的SQL Server和5%的Oracle商店。我们当前的内部GIS在SQL Server上运行,我还没有收到任何投诉。 我知道SQL Server截至2012年已经改善了很多空间/几何功能,但是PostGIS中是否有任何杀手级功能值得引入新平台?我已经尝试进行研究,但是找不到真正深入的东西,或者那不是完全偏见。 我想为他们提供最好的工具来完成他们的工作,但同时也必须权衡一个事实,即我将从一开始就学习Postgres / GIS,这本身就是一个完整的过程。

1
在PostgreSQL中存储和查询滚动数据
我将大量的天气模型数据放入PostgreSQL数据库中。该计算机具有8个内核和16 GB的RAM。我正在使用PostGIS 2.1运行PostgreSQL 9.3。每个表都有不同的天气数据(温度,露点,风等)。每个表将有6-7列:纬度,经度,点几何,高程,与模型相关的日期时间,以及1-2个感兴趣的数据值。将首先根据时间和海拔高度查询边界框的数据。每个表大约有145,757,360行(比现在不再重要的数据将被删除)。我粗略估计,每个表的大小(不含索引)约为10 GB。(这是52字节的数据加上每行23字节的开销)。当新模型数据可用时,数据将定期更新/插入。注意: 因此,我正在研究以下两个计划: 只需按(日期时间,海拔高度)进行索引和聚类,并为点几何图形添加附加索引。运行常规的cron作业,该作业将删除旧行,运行真空/分析并重新进行集群。 按日期时间进行分区,然后对每个表按高度进行聚类,并按索引对几何进行索引。运行常规的cron作业以添加新表,然后删除旧表。 进一步, 因此,我知道删除表的效率更高,而删除和清理则更为有效。但是我会否看到性能提升? 当所有表将被均匀更新和选择直到不相关而被删除之前,分区是否合适(文档指出,当只选择其中的几个分区时,分区效果最佳)? 交付数据时,选择的速度会比聚集索引快吗?如果一次发出多个请求,答案是否会改变? 谢谢。我希望我收集所有需要的数据。如果没有,请告诉我,我将其添加。

2
PostgreSQL:无法将目录更改为/ root
我正在尝试将表planet_osm_polygon从一个数据库复制osm到另一个数据库test。我su postgres并执行了pg_dump。 问题:但是我遇到了错误could not change directory to "/root",Password:提示出现了两次!有没有办法以pg_dump登录身份执行root? root@lalaland:~# su postgres postgres@lalaland:/root$ pg_dump -h localhost "osm" --table "public.planet_osm_polygon" | psql -h localhost "test" --table "staging.planet_osm_polygon" could not change directory to "/root" could not change directory to "/root" Password: Password: 更新 问题2:public即使我通过了flag ,也似乎将表复制到了架构中--table="staging.planet_osm_polygon"。为什么不将其复制到架构staging?

2
PostgreSQL中复合索引中的列顺序(和查询顺序)
我有一张有5万行的表格。它实际上是一个PostGIS表。 该查询分为4个部分(1个必填项)(3个可选) 长4纬度(我使用st_intersects)的相交箱(地理矩形)[必须] 日期字段上的日期范围(最小,最大) 当前使用IN(.....)的文件类型(最多8个文本值的集合),但是如果需要,我可以将其设为临时表。我看到很多人不喜欢IN。 国家(文本值)。 我预计将返回约100-4,000行 如果在表上创建复合索引,则应首先使用哪一列。细粒度可能是位置(数据分布在世界各地)。我目前将其作为GIST索引。 其他索引将是BTREE。 我的直觉说,使用细颗粒,最后选择。例如,只有大约12种文件类型,因此对于索引而言这将是非常大的存储桶。 PostgreSQL和PostGIS专家(谁知道系统的内部结构)怎么说? 更新: 让我提出这个问题。 我不希望任何人必须做我应该做的工作。我非常尊重您的时间。因此我将在后面进行解释分析。 我所寻找的只是一些指示,技巧和指南。 我阅读了这篇出色的小文章:https : //devcenter.heroku.com/articles/postgresql-indexes#managing-and-maintaining-indexes关于索引 我通常要做的是创建4个单独的索引(地理框,国家/地区名称,file_type和日期),但是要查看复合查询的作用。 告诉我这些假设是否有误。(我对复合索引的想法很陌生) 顺序很重要。选择最能减少行数的索引作为第一个索引(在我的情况下,简单的多边形或多多边形的位置(地理位置)将是最好的)。 有时查询会跳过索引。但是,如果我使用键(#1,#2,#3,#4)创建了一个复合查询,那么即使用户创建了要求#1,#3的内容,计划者仍会使用单个复合查询,因为他们要订购被维持。 通常,我将创建三个BTREE查询和一个GIST(针对地理位置类型)。PostGIS不支持从多个索引类型创建复合。因此,我将不得不使用GIST复合索引。但这不应该伤害任何事情。 如果我确实创建了其他一些复合或单值索引,则计划程序足够聪明,可以选择最聪明的一个。 国家/地区名称可以有大约250个不同的值,并且显然与位置(地理框)紧密相关,但是如果要减小行大小的下一个最佳索引是file_type,我应该在下一个使用。我不希望用户在他们的查询集中经常使用国家或日期。 我不必担心创建4个键的复合索引会大大增加索引数据的大小。即,如果一键索引将是性能提升的90%,那么再添加3项使其复利也不会有什么坏处。相反,我应该真正创建两个索引。一个单一的地理索引,还有一个复合索引,然后让计划者确定哪一个是最佳的,并且它将考虑索引表的大小。 再说一次,我不是要任何人来设计我的解决方案,也不是要别人的工作。但是我确实需要PostGreSQL文档不会告诉我有关实现的内容 [我没有显示EXPLAIN结果的原因是,我必须从24M行表中创建此25K行表。这比我想象的要花费更多的时间。我将事物分为1,000个项目组,并让用户针对25K行表进行查询。但是,我的下一个问题将涉及使用该查询的结果转到MASTER 25M行表并提取内容,这就是复合索引的性能真正达到HIT的位置。 下面的示例查询: SELECT public.product_list_meta_mv.cntry_name AS country, public.product_list_meta_mv.product_producer AS producer, public.product_list_meta_mv.product_name AS prod_name, public.product_list_meta_mv.product_type AS ptype, public.product_list_meta_mv.product_size AS size, ST_AsGeoJSON(public.product_list_meta_mv.the_geom, 10, 2) AS …

1
PostgreSQL / PostGIS 9.6打破了我的复合索引
在PostgreSQL 9.2中,我创建一个具有地理(postGIS)类型和整数作为复合索引的索引没有问题。但是现在(9.6)它抱怨创建索引,我不明白它提供的提示: 列和数据均已正确创建,Postgres抱怨创建索引。 ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class for the data type. ********** Error********** ERROR: data type integer has no default operator class for access method …

1
移动大型PostgreSQL / PostGIS数据库
我需要将非常大的PostGIS数据库(约320 GB)从server1(PostgreSQL 9.1,PostGIS 1.5)升级到server2(PostgreSQL 9.3,PostGIS 2.1)。 升级过程有据可查。问题是我在server1上没有足够的空间将文件转储到那里,对其进行校验和,然后将其复制到server2并验证总和。我试过了: 从管道中转储服务器1到Server2上使用nc。 将转储文件直接写入到使用挂载在server1上的server2文件系统中。sshfs 两次转储文件似乎已损坏。pg_restore在不同的地方出现错误,如下所示: pg_restore: [compress_io] could not uncompress data: incorrect data check 谁能建议一种更好的方法来完成此迁移和升级? 更新:尝试了NFS(并再次尝试SSHFS)。显然,这些远程文件系统无法可靠地传输大量数据。生成的SQL文件中明显缺少块,从而在导入期间导致如下语法错误: ERROR: invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
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.