标签: postgis

PostgreSQL point_ops 与 GiST PostGIS 空间索引

PostgreSQL 9.0 发行说明声明了以下更改:

为 GiST 添加 point_ops 运算符类 (Teodor Sigaev)

此功能允许点列的 GiST 索引。该索引可用于多种类型的查询,例如point <@ polygon(点在多边形中)。这应该会使许多 PostGIS 查询更快。

我有一个非常大的表(数百万行),其中有一GEOMETRY(POINT,[SRID])列,我有时将其与多边形进行比较。创建索引时是否需要执行任何操作才能启用此功能?我是否必须使用他们指定的运算符,或者这可以与 一起使用吗ST_Contains

(我确信答案在文档中的某个地方,但我找不到它。)

postgresql indexing performance postgis

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

如何将 HEXEWKB 转换为纬度、经度(在 java 中)?

我从开放街道地图项目下载了街道信息。该文件基本上是一个包含以下字段的 CSV:

CSV fields
==============================================
1 : id; UniqueId of the street(always null for the moment)
2 : name; The name 
3 : location; The middle point of the street in HEXEWKB
4 : length ; Length of the street in meters
5 : countrycode; The iso3166 Alpha2 Code of the country 
6 : gid ; GlobalId (not use yet)
7 : type; The type of street (see bellow)
8 : oneway; Whether the street is a one way street …
Run Code Online (Sandbox Code Playgroud)

java gis postgis latitude-longitude openstreetmap

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

在 Linux 中即使“locate”返回其位置也找不到文件

我在ubuntu 14.04上安装了postgis-9.3,它应该有一个名为“shp2pgsql”的功能。当我“定位”它的位置时,它返回结果,但实际上它不在那里。

yang@ubuntu:~$ locate shp2pgsql-gui
/home/yang/shp2pgsql-gui (1).1
/usr/bin/shp2pgsql-gui
/usr/share/man/man1/shp2pgsql-gui.1.gz
yang@ubuntu:~$ /usr/bin/sh
sha1pass         sha384sum        showconsolefont  shred
sha1sum          sha512sum        showfont         shuf
sha224sum        shasum           showkey          
sha256sum        shotwell         showrgb          
yang@ubuntu:~$ /usr/bin/shp2pgsql-gui
-su: /usr/bin/shp2pgsql-gui: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在哪里可以找到 shp2pgsql?谢谢

linux postgresql ubuntu postgis locate

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

如何将一个表中的几何数据转移到另一个表中?

我有一个关于我想在两个表之间进行连接的问题。我有一个表,其中没有从另一个表获取我需要的几何数据。有没有一种简单的方法可以在我的其他表中获取该数据?

谢谢请参阅此处的屏幕截图

postgresql postgis join qgis

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

检查某些多边形是否相互重叠

我试图确定某些多边形是否相互重叠。所有多边形都在同一层中。

PostGis函数ST_OVERLAPS可以确定两个几何元素是否重叠。但我找不到一种方法来应用此函数来检查一个或多个多边形是否彼此重叠。

我想要这样的东西:

SELECT * 
FROM MyGeometricTable g
WHERE ST_OVERLAPS(g.geom,g.geom) = 1
AND g.id <> g.id                      --The polygon that overlap another polygon is not the same.
Run Code Online (Sandbox Code Playgroud)

MyGeomtricTable 包含例如 100 个多边形。

谢谢

sql postgresql postgis

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

Postgres 在 select into 语句期间更改数据类型

使用 postgis 扩展运行 postgres:尝试在 select into table 语句期间更改列的数据类型

munsummary 表中的 sum_popint 列是双精度的,我想在 select 语句期间将其更改为整数列。我知道我可以使用 update/alter 语句在 select into 语句之前或之后将列数据类型更改为整数,但我想在 select 语句中执行此操作。

SELECT county,
       SUM(sum_popint) AS residentialpopulation,
       st_union(geom)
INTO countysummary
FROM munsummary
GROUP BY county;
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgis type-conversion

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

sequelize beforeSave 钩子不触发

我已经使用 sequelize-auto 生成了模型,并且需要使用 beforeSave 钩子(请参阅此处)。据我所知,钩子没有开火。sequelize 版本 ^4.20.1,sequelize-auto 版本 ^0.4.29,express 版本 ~4.15.5。任何人都可以帮忙吗?

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('trad', {
    id: {
      type: DataTypes.INTEGER,
      allowNull: false,
      primaryKey: true,
      autoIncrement: true
    },
    geom: {
      type: DataTypes.GEOMETRY('POINT', 4326),
      allowNull: true
    },
    ...
  }, {
    hooks: {
      beforeSave: (instance, options) => {
        console.log('Saving geom: ' + instance.geom);
        if (instance.geom && !instance.geom.crs) {
          instance.geom.crs = {
            type: 'name',
            properties: {
              name: 'EPSG:4326'
            }
          };
        }
      }
    },
    tableName: 'trad',
    timestamps: false,
  });
}; …
Run Code Online (Sandbox Code Playgroud)

postgresql postgis node.js sequelize.js

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

模式中不存在类型“几何”,但扩展名存在

注意:不是Postgis 安装的副本:类型“几何”不存在

我正在尝试使用 Postgis 几何列在名为test.

首先我跑了:

SET search_path TO test;
Run Code Online (Sandbox Code Playgroud)

然后当我尝试运行以下语句时:

CREATE TABLE spatials (id serial, name text, geo geometry, PRIMARY KEY (id));
Run Code Online (Sandbox Code Playgroud)

我收到错误 type "geometry" does not exist

我试过运行以下两个:

CREATE EXTENSION postgis;
--AND:
CREATE EXTENSION postgis SCHEMA test;
Run Code Online (Sandbox Code Playgroud)

但两者都会导致错误 extension "postgis" already exists

请注意,使用public模式时它工作正常。

有什么我在这里想念的吗?

sql postgresql postgis database-schema

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

无法将名称 [org.hibernate.spatial.dialect.postgis.PostgisDialect] 解析为策略 [org.hibernate.dialect.Dialect]

spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect
Run Code Online (Sandbox Code Playgroud)

我有一个带有运行 Postgis 数据库的 Hibernate 5 的 Spring Boot v1.5 应用程序。但是,我在空间查询方面遇到了问题,但Invalid endian flag value encountered.. 搜索该异常产生了将适当的 SQL 方言添加到属性文件的解决方案。这样做,如上所述,给我带来了标题中的错误。

直接运行查询psql使它们工作,所以这不是我的 Postgis DB 本身的问题。

这些问题的主题总是拼写错误,但我在这里找不到它会是什么。

java hibernate postgis spring-data-jpa spring-boot

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

从纬度和经度对计算边界框

谷歌返回当前的纬度和经度,但计算左下纬度和经度以及右上纬度和经度。我一直无法弄清楚它是如何计算的。

有谁知道它是否是静态距离?百分比差异?它是如何计算的?

伊利诺伊州芝加哥

current lat 41.8781136
current lon -87.6297982 
lower left lat  40.3781136
lower left lon  -89.8743648   
upper right lat 43.3781136
upper right lon -85.3852316
Run Code Online (Sandbox Code Playgroud)

纽约

current lat 40.7127753
current lon -74.0059728
lower left lat  39.2127753
lower left lon  -76.26396172
upper right lat 42.2127753
upper right lon -71.74798388
Run Code Online (Sandbox Code Playgroud)

更新:

知道它从中心到左侧和右侧是 103.5 英里,并且知道它从中心到顶部和底部边界是 103.5 英里。

使用当前的经纬度点,如何计算左下角和右上角的点?

我假设 PostGIS 有这个功能?

sql gis postgresql google-maps postgis

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