标签: postgis

安装 PostGIS v2 for PostgreSQL v9.2

我已经安装了最新的稳定版 PostgreSQL v9.2,我想安装 PostGIS v2 扩展。

我已经找了3天了,但找不到。

然而,我确实找到了 PostGIS v2 for PostgreSQL v9.1,感谢这个网站:http : //linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/

我是 Ubuntu 新手,我更习惯 Windows。

PostgreSQL v9.1 包不起作用。我在哪里可以获得正确的包裹?

postgresql ubuntu postgis

6
推荐指数
1
解决办法
2013
查看次数

对 Postgresql 空间查询失败进行故障排除。下一步?

我们有一组失败的空间查询,我正在努力解决它们。我怀疑我们遇到了一些错误,但我想更好地确定一些事情,以确保并确保生成的错误报告既有用又定向到正确的一方(postgresql,postgis,或其他)。

有人对下一步有什么建议吗?

鉴于:PostgreSQL v9.1 从http://yum.postgresql.org安装在一个完整的 CentOS 5 补丁 32 位安装上

$ rpm -q postgresql91-server
postgresql91-server-9.1.6-1PGDG.rhel5

$ rpm -q geos
geos-3.3.5-1.rhel5

$ rpm -q proj
proj-4.7.0-1.rhel5

$ rpm -q postgis91
postgis91-1.5.5-1.rhel5

$ uname --kernel-name --kernel-release --kernel-version --machine --processor --hardware-platform --operating-system
Linux 2.6.18-308.16.1.el5PAE #1 SMP Tue Oct 2 22:49:17 EDT 2012 i686 i686 i386 GNU/Linux

$ cat /proc/meminfo | grep MemTotal
MemTotal:      5126968 kB
Run Code Online (Sandbox Code Playgroud)

涉及到三个表(为了便于阅读,名称已更改),它们都很小。

db=# select count(1), st_isclosed(the_geom) from table_1 group by st_isclosed(the_geom);
 count | st_isclosed
-------+-------------
 13268 | …
Run Code Online (Sandbox Code Playgroud)

postgresql troubleshooting postgis

6
推荐指数
1
解决办法
516
查看次数

在 Ubuntu 14.04 上安装 Postgis 扩展的问题

我有带有 Postgres 9.3 的 Ubuntu 14.04,我正在尝试安装 Postgis 扩展。我发现的最推荐和最直接的方法之一非常简单:

sudo apt-get install postgresql-contrib postgis postgresql-9.3-postgis-2.1
Run Code Online (Sandbox Code Playgroud)

但是,这会引发“未满足的依赖项”错误:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies.

postgis : Depends: libgdal1h (>= 1.9.0) but …
Run Code Online (Sandbox Code Playgroud)

postgresql ubuntu postgis postgresql-9.3

6
推荐指数
1
解决办法
6663
查看次数

数据库服务器和数据存储虚拟化技术的优缺点

昨天我们讨论了性能和可恢复性,我意识到虚拟化环境可以给我带来多少好处 - 但由于我对性能有点怀疑,所以我在这里问。它可能是特定于 GIS 的,但是在 gis 用户那里,他们说这是特定于数据库的......;)

数据库服务器是否会因虚拟化而遭受严重的性能损失?我不了解这项技术的最后细节,但不知何故,它更像是一个“黑匣子”,需要通过硬件进行处理。磁盘访问以及 PostGIS 为我们提供的所有技巧是否会被授予?(聚类、索引等) - 碎片聚类就像没有聚类!

最大的优势是可维护性和可扩展性。如果发生严重的硬件故障,我可以在几分钟内甚至实时迁移到另一台物理机器。

谁有经验,可以给我指点关于这个主题的好的网站或文献?我记得上次 fossgis 中的一些事情以及 ESXi 和本机服务器上的一些内部基准测试,不知何故我无法确定它是否好。

postgresql postgis vmware virtualisation

5
推荐指数
1
解决办法
2406
查看次数

PostgreSQL/PostGIS 中的错误访问离线波段被禁用

我正在使用 postgis 函数,即 ST_Clip、ST_PixelHeight。

但我收到此错误 -

错误:rt_raster_load_offline_data:访问离线波段被禁用

实际上,我已经使用

raster2pgsql

在 raster2pgsql 中,我使用 -R 选项仅保存栅格的元数据和数据库中栅格的路径位置(而不是像素)。

如何解决这个问题?

postgresql postgis

5
推荐指数
1
解决办法
1079
查看次数

在 jdbc 迁移中使用 SELECT 调用函数

我正在寻找使用 clojure/jdbc 设置一些 Postgres/PostGIS 迁移。

运行副作用函数 withSELECT被证明是一个问题,大多数迁移库最终都会抛出A result was returned when none was expected错误,因为在某些时候它们使用clojure.java.jdbc/execute!or clojure.java.jdbc/db-do-commands,这似乎可以理解,但是当您需要调用对迁移至关重要的函数时令人沮丧。

PostGIS中的文档鼓励使用SELECT语句来创建空间列:

SELECT AddGeometryColumn('parks', 'park_geom', 128, 'MULTIPOLYGON', 2 );
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个问题或找到了在 clojure/jdbc 和 Postgres 迁移中使用函数的适当解决方法?


相关花絮:

  • 这个手动注册空间列的描述看起来很有希望,但对于已经具有支持功能的东西来说似乎非常严厉
  • 也有PL/PgSQLPERFORM说法,我偶然发现,但它好像我在该点处抓救命稻草,尽管它看起来很有希望
  • clojure.java.jdbc/execute!文档给出关于仅使用“一般(非选择)SQL 操作 [s]”的特定提示

postgresql jdbc postgis clojure

5
推荐指数
1
解决办法
1612
查看次数

优化两个巨大空间表之间的 Intersect 查询

我在尝试改进两个空间表之间的交集时遇到了困难,我想收到有关表设计、查询或 dba 配置的任何提示。

表格:

表现在teste.recorte_grade有 1,655,569 行,但这是为 900 万行表的测试制作的子样本。

CREATE TABLE teste.recorte_grade
(
  id integer NOT NULL DEFAULT nextval('teste."Recorte_grade_id_seq"'::regclass),
  id_gre character varying(21),
  indice_gre character varying(16),
  the_geom geometry(Polygon),
  CONSTRAINT "Recorte_grade_pkey" PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
CREATE INDEX sidx_recorte_grade_geom
  ON teste.recorte_grade
  USING gist
  (the_geom);
Run Code Online (Sandbox Code Playgroud)

teste2.uso_2012有 177,888 行,这是它将永远拥有的所有数据。

CREATE TABLE teste2.uso_2012
(
  id integer NOT NULL,
  gridcode smallint NOT NULL,
  geom geometry(MultiPolygon) NOT NULL,
  CONSTRAINT pk_id_uso_2012 PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);    
CREATE INDEX …
Run Code Online (Sandbox Code Playgroud)

postgresql performance spatial postgis query-performance

5
推荐指数
1
解决办法
1189
查看次数

当多行 INSERT 由于几何类型不匹配而失败时,我可以让 PostgreSQL 报告有问题的行吗?

INSERT INTO当其中一些行的 PostGIS 几何类型的值与目标表中相应行的 PostGIS 几何类型不兼容时,使用单个语句将多行插入到表中会失败(如预期的那样):

CREATE EXTENSION postgis;

CREATE TABLE t (
    id integer,
    p geometry(POINT)
);

INSERT INTO t
VALUES
    ( 1, ST_GeometryFromText('Point(0 0)')      ),
    ( 2, ST_GeometryFromText('Point(1 2)')      ),
    ( 3, ST_GeometryFromText('MultiPoint(2 3)') ),
    ( 4, ST_GeometryFromText('Point(5 23)')     ),
    ( 5, ST_GeometryFromText('Point(42 36)')    );
Run Code Online (Sandbox Code Playgroud)

错误消息告诉我们到底出了什么问题:

CREATE EXTENSION postgis;

CREATE TABLE t (
    id integer,
    p geometry(POINT)
);

INSERT INTO t
VALUES
    ( 1, ST_GeometryFromText('Point(0 0)')      ),
    ( 2, ST_GeometryFromText('Point(1 2)')      ),
    ( 3, ST_GeometryFromText('MultiPoint(2 3)') ), …
Run Code Online (Sandbox Code Playgroud)

postgresql insert error-handling postgis

5
推荐指数
1
解决办法
1543
查看次数

动态定义一个RETURN表(列类型,名称)用于后续循环

我想对ST_Intersection(clipper_geom, clipped_geom)来自表的行数执行。

https://postgis.net/docs/ST_Intersection.html

https://postgis.net/docs/ST_Intersects.html

POSTGIS 交集本身不支持处理多个几何图形,这与ST_Intersects()我必须设计一个函数(返回一个表)来选择与我的clipper_geomusing相交的行ST_Intersects()、循环遍历结果集并计算与 的每个交集有关ST_Intersection()。字段geomclipped_geom_wkt是记录剪裁几何体的字段。

该功能有效,但我需要为每个要生成剪辑的表使用不同的功能。我想动态读取输入表(列名称和类型)并在RETURN语句中定义两者。

所有字段名称和类型都相同,只是geom更新和clipped_geom_wkt添加。

我尝试搜索 Stack Overflow,找到了有关如何创建动态表结构的示例,但没有一个LOOP对第一个结果执行后续操作,其中列名必须匹配才能插入/更新新数据。

这是我到目前为止所提出的,但我不确定如何执行该LOOP部分、添加clipped_geom_wkt字段和更新geom字段。一些回复建议RETURNS TABLE (...)如果添加更多字段SETOF...

/sf/ask/1247503771/

但似乎动态生成的列仅支持RETURNS SETOF ...

/sf/ask/821817951/#11751557

/sf/ask/602362211/#8611675

CREATE OR REPLACE FUNCTION clip_palin_polygon_complete(clipped_table text,clipper_geom text, age_sequence VARCHAR)
RETURNS TABLE (rec clipped_table, clipped_geom_wkt text)) AS $$ --not sure if this is the right way to …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql plpgsql postgis

5
推荐指数
1
解决办法
1万
查看次数

SQLSTATE[08006] [7] FATAL:数据库系统处于恢复模式

我对 PostgreSQL 和 PostGIS 有一些问题。

在使用特殊光栅文件上的一些坐标运行以下查询后,我收到错误。

直到上周,它都运行良好。

查询是:

select (ST_ValueCount(ST_Union(ST_Clip(r.rast,r.geom,true),1,'area_sum'))).* from (select * ,(SELECT (ST_SetSRID(ST_GeomFromGeoJSON('{ "type": "Polygon", "coordinates": [[[47.48034200000001,39.13347600000003],[47.49611600000003,39.114525000000015],[47.510418000000016,39.10534899999999],[47.52599799999996,39.08644900000013],[47.54254200000014,39.05803700000013],[47.53256200000004,39.0290940000001],[47.52131200000002,39.00986000000012],[47.49699400000003,38.99015700000001],[47.498607000000106,38.97137000000009],[47.52537600000005,38.96289400000006],[47.52689400000003,38.94405700000004],[47.54134800000014,38.92563300000012],[47.529907000000094,38.906041000000016],[47.519521,38.87627100000009],[47.521041000000025,38.85683000000006],[47.54817600000001,38.83865400000002],[47.58924400000001,38.80162500000006],[47.59110200000009,38.762773000000095],......]]}'), 4326)))as geom from public.layer where filename in ( 'myrasterfile.tif') ) as r where ST_Intersects(r.rast,r.geom))
Run Code Online (Sandbox Code Playgroud)

错误是:

SQLSTATE[08006] [7] FATAL:  the database system is in recovery mode
Run Code Online (Sandbox Code Playgroud)

为什么我的 PostgreSQL 实例在此查询过程中进入恢复模式?

我应该怎么办?

postgresql php postgis

5
推荐指数
1
解决办法
2万
查看次数