Postgresql 后GIS转换问题

Postgresql 后GIS转换问题,postgresql,postgis,Postgresql,Postgis,我在使用PostGIS 1.5.4数据时遇到问题。可能是因为我对这项技术还不够熟悉,没有看到一个明显的事实,那就是我是一名拥有近4个小时经验的专家,但我遇到了一个我无法用谷歌解决的错误 我有一个包含多边形数据的表,是的,我检查过了;列类型是几何体,而不是多边形-Postgres原生类型。当我试图在表上运行查询以查找哪个形状包含特定问题时,问题就出现了 我正在使用以下查询: SELECT * FROM geo_shape WHERE ST_Contains(geoshp_polygon, PO

我在使用PostGIS 1.5.4数据时遇到问题。可能是因为我对这项技术还不够熟悉,没有看到一个明显的事实,那就是我是一名拥有近4个小时经验的专家,但我遇到了一个我无法用谷歌解决的错误

我有一个包含多边形数据的表,是的,我检查过了;列类型是几何体,而不是多边形-Postgres原生类型。当我试图在表上运行查询以查找哪个形状包含特定问题时,问题就出现了

我正在使用以下查询:

SELECT * 
FROM geo_shape 
WHERE ST_Contains(geoshp_polygon, POINT(-97.4388046000, 38.1112251000));
我收到的错误是“错误:函数st_包含几何,点不存在”。我尝试使用强制转换函数,但得到“错误:无法将类型几何体强制转换为多边形”。我猜问题与数据的存储方式有关——PGAdmin将其显示为十六进制数据。我凭直觉尝试使用ST_GeomefromHexewkb,但收到“错误:函数ST_GeomefromHexewkbGeometry不存在”


我对这里的问题感到相当困惑,因此任何想法都将不胜感激。

st_包含需要一个geom,geom作为参数

试试这个

SELECT * FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
      GeomFromText('POINT(-97.4388046000 38.1112251000)'));

编辑以更正,在点数据中发布。ST_geom FromText将起作用,有点好奇有什么区别

ST_包含需要geom,geom作为参数

试试这个

SELECT * FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
      GeomFromText('POINT(-97.4388046000 38.1112251000)'));

编辑以更正,在点数据中发布。ST_geomfromtext将起作用,有点奇怪有什么区别

您不能将PostgreSQL与PostGIS的几何类型混合,这就是为什么您会看到这个错误。我建议使用以下方法之一进行帮助:

SELECT * 
FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
                  ST_SetSRID(ST_MakePoint(-97.4388046000, 38.1112251000),4326);
或者,一种真正快速的文本方式是将以下内容拼凑在一起:


这将输出几何体类型的WKB。

您不能将PostgreSQL与PostGIS的几何体类型混合,这就是您看到该错误的原因。我建议使用以下方法之一进行帮助:

SELECT * 
FROM geo_shape 
WHERE ST_Contains(geoshp_polygon,
                  ST_SetSRID(ST_MakePoint(-97.4388046000, 38.1112251000),4326);
或者,一种真正快速的文本方式是将以下内容拼凑在一起:


这将输出几何体类型的WKB。

两个问题:您的意思是ST_GeomFromText,并且您有一个解析错误-无效几何体。这实际上对我有效-解析错误来自点数据中的逗号,出于某种原因,函数可以使用前面的ST_或不使用ST_。谢谢两个问题:你是指ST_GeomFromText,你有一个解析错误-无效的几何体。这实际上对我有效-解析错误来自点数据中的逗号,出于某种原因,函数可以使用前面的ST_或不使用它。谢谢出于某种原因,这一直给我一个错误,说明“对两个具有不同SRID的几何体的操作”。不确定这是因为“geometry\u columns”表不正确还是什么原因。这是一个有用的错误,因为您的空间引用SRID必须匹配。在geometry_columns表中查找geo_shape.geoshp_polygon的SRID,或用于直接查询。如果您需要从一个空间参考转换到另一个空间参考,例如WGS84到NAD83 UTM10N,那么请使用。出于某种原因,这一直给我一个错误,说明“使用不同SRID对两个几何体进行操作”。不确定这是因为“geometry\u columns”表不正确还是什么原因。这是一个有用的错误,因为您的空间引用SRID必须匹配。在geometry_columns表中查找geo_shape.geoshp_polygon的SRID,或用于直接查询。如果需要从一个空间参考转换到另一个,例如WGS84到NAD83 UTM10N,则使用。