PostgreSQL 9.0 发行说明声明了以下更改:
为 GiST 添加 point_ops 运算符类 (Teodor Sigaev)
此功能允许点列的 GiST 索引。该索引可用于多种类型的查询,例如
point <@ polygon
(点在多边形中)。这应该会使许多 PostGIS 查询更快。
我有一个非常大的表(数百万行),其中有一GEOMETRY(POINT,[SRID])
列,我有时将其与多边形进行比较。创建索引时是否需要执行任何操作才能启用此功能?我是否必须使用他们指定的运算符,或者这可以与 一起使用吗ST_Contains
?
(我确信答案在文档中的某个地方,但我找不到它。)
我从开放街道地图项目下载了街道信息。该文件基本上是一个包含以下字段的 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) 我在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?谢谢
我试图确定某些多边形是否相互重叠。所有多边形都在同一层中。
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 个多边形。
谢谢
使用 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) 我已经使用 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) 注意:不是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
模式时它工作正常。
有什么我在这里想念的吗?
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 本身的问题。
这些问题的主题总是拼写错误,但我在这里找不到它会是什么。
谷歌返回当前的纬度和经度,但计算左下纬度和经度以及右上纬度和经度。我一直无法弄清楚它是如何计算的。
有谁知道它是否是静态距离?百分比差异?它是如何计算的?
伊利诺伊州芝加哥
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 有这个功能?
postgis ×10
postgresql ×8
sql ×4
gis ×2
java ×2
google-maps ×1
hibernate ×1
indexing ×1
join ×1
linux ×1
locate ×1
node.js ×1
performance ×1
qgis ×1
sequelize.js ×1
spring-boot ×1
ubuntu ×1