我正在尝试将一堆纬度/经度对加载到PostGIS地理类型中,以便能够按位置进行查询.
特别是我有一个浮动纬度和经度列和一geography(Point, 4326)
列的表.我想要做
update mytable set geography = ???
Run Code Online (Sandbox Code Playgroud)
文档似乎表明以下内容应该有效:
update mytable set geography = ST_GeogFromText('POINT(' || latitude || ' ' ||
longitude || ')');
Run Code Online (Sandbox Code Playgroud)
它没有.我不知道它是什么意思解释这一点,但它只允许经度介于-90和90之间,所以它显然不是经度.
那么,我该怎么办?
我有一个geofences
存储geometry
多边形的表.
我还有一个A
在几何体内部的点.我要做的是找到A
位于多边形几何体表面上的点的两个最近点.
PostGIS中的功能:
CREATE OR REPLACE FUNCTION accuracyCheck(Polygon geometry
,decimal lat
,decimal lon)
RETURNS VARCHAR AS
$BODY$
DECLARE height DECIMAL;
DECLARE accuracy VARCHAR(250);
BEGIN
CREATE TEMPORARY TABLE closePointStorage AS
SELECT ST_AsText(ST_ClosestPoint(geometry
,ST_GeomFromText('POINT(lat lon)',0)
)
) AS closestPoint
FROM (
SELECT ST_GeomFromText(geometry) as geometry
FROM gfe_geofences
WHERE is_active=true
) As tempName;
CREATE TEMPORARY TABLE areaStorage ON COMMIT DROP AS
SELECT ST_Area(ST_GeomFromText('Polygon((23.0808622876029 96.1304006624291
,28.0808622876029 99.1304006624291
,100 200
,23.0808622876029 96.1304006624291
))'
,0)
) AS area; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试推出GeoDjango应用.我在Lion上使用brew安装了Postgres和PostGIS.我创建使用template_postgis数据库:createdb -T template_postgis test
.
当我运行时python manage.py syncdb
,我收到以下错误:
django.core.exceptions.ImproperlyConfigured:无法确定数据库"test"的PostGIS版本.GeoDjango至少需要PostGIS 1.3版.是否从空间数据库模板创建了数据库?
如何追踪错误来源?我已经检查过用户和传递配置是否可以访问数据库等.
我有一个包含一些几何类型的表,并且需要能够返回给定字段的SRID.我怎样才能做到这一点.我有一个搜索,但我能找到的是改变SRID的功能.在Oracle中我这样做:
A.CLUSTER_EXTENT.SDO_SRID
Run Code Online (Sandbox Code Playgroud)
PostGIS中是否有等效功能?
好吧,所以我对RDS和AWS来说相当新,但我不能为我的生活,把我在笔记本电脑上创建的数据库,到亚马逊RDS,我确实把它移到我的测试VPS和我的台式机,没有任何问题,这是我到目前为止所尝试的..
create extension postgis;
create extension fuzzystrmatch;
create extension postgis_tiger_geocoder;
create extension postgis_topology;
alter schema tiger owner to rds_superuser;
alter schema topology owner to rds_superuser;
CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO rds_superuser')
FROM (
SELECT nspname, relname
FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid)
WHERE nspname in ('tiger','topology') AND
relkind IN ('r','S','v') …
Run Code Online (Sandbox Code Playgroud) 将Hibernate-spatial升级到V5.0.0.CR2后,以下声明不再起作用:
@Column(columnDefinition = "geometry(Point,4326)")
@Type(type = "org.hibernate.spatial.GeometryType")
private Point position;
Run Code Online (Sandbox Code Playgroud)
与:
org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.hibernate.spatial.GeometryType]
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,Jar-File中不再存在该类.GeometryType发生了什么,它是如何被替换的?或者是否包含另一个jar文件?
编辑:澄清.我正在将Hibernate-Spatial与PostgreSQL-Postgis数据库结合使用.
我有PostgreSQL数据库中的表latitude
和longitude
列location
,我试图用PostgreSQL函数执行距离查询.
我阅读了本手册的这一章:
https://www.postgresql.org/docs/current/static/earthdistance.html
但我想我错过了那里的东西.
我该怎么办?有更多的例子吗?
如何从clojureql查询postgres Point类型?我希望使用PostGIS功能,但clojureql似乎不包含此功能.
我有一个带有PointField属性的地理模型.一切都在本地完美,但当我尝试在服务器上保存实例时,我收到以下错误:
django.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0x00
Run Code Online (Sandbox Code Playgroud)
我挖掘了源代码,发现值的序列化方式不同; 具体而言,在服务器上执行查询之前,该值未被转义.它似乎正在进行转义psycopg2.Binary.getquoted()
,当然,它不会在服务器上返回正确的值.
在我的机器上:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)
在服务器上:
from psycopg2 import Binary
Binary('\0').getquoted() # > "'\\000'::bytea"
Run Code Online (Sandbox Code Playgroud)
好的,这解释了为什么它认为我试图插入一个空字节.(因为我.)所以现在我已经足够了解Jonathan S.在django-users组中找到类似的报告会出现什么问题但是,就像Jonathan一样,我不知道这是错误还是配置错误.
有人能指出我正确的方向吗?
以下是有关设置的一些信息:
My computer Server
OS OSX 10.7 CentOS 5.5
Python 2.7 2.6
Django 1.3 1.3
Postgres 9.0.4 9.9.1
postgis 1.5.2 1.5.3-2.rhel5
geos 3.3.0 3.3.0-1.rhel5
Run Code Online (Sandbox Code Playgroud) 我有一个数据库,其中安装了旧版的PostGIS.我想轻松删除数据库中的所有功能(它们全部来自PostGIS).有一个简单的方法吗?即使简单地提取函数名列表也是可以接受的,因为我可以做一个大的DROP FUNCTION
声明.