Postgis三维几何转二维几何

在处理PostGIS空间数据时遇到了'Geometry has Z dimension but column does not'的错误。问题源于CAD格式数据带有Z值。通过查阅资料发现,可以使用PostGIS的ST_Force2D函数将三维几何转换为二维。只需一条SQL语句即可解决这个问题,展现了PostGIS的强大功能和便利性。
摘要由CSDN通过智能技术生成

今天遇到一个很脑残的问题,很久没有用postgis处理空间数据了,有点生疏了

问题:Geometry has Z dimension but colum does not

根据上面提示列具有Z维,但几何不具有,把我整的一愣一愣的,明明我用qgis打开是二维图形

 

 

老王你是在逗我吗?于是我问处理数据人员源数据是CAD格式,我到网上查一下原来cad文件只带Z值,网上有人说用arcgis去掉Z值就行了,我承认我比较懒我不想到arcgis弄一遍在再重新入库,一直被我信奉的postgis能否帮我这个懒人解决了,支不支持三维几何转二维几何了,答案当然是可以的,于是先到官网看一看有什么资源可以参考的,在茫茫的文字看到ST_Force2D 这个函数好像可以做个事情

ALTER TABLE pd1
  ALTER COLUMN geom TYPE geometry(multipolygon)
    USING ST_Force_2D(geom)

一句SQL语句搞定,原来postgis这么好用,难怪很多互联网厂商都在用postgis了。

https://postgis.net/docs/manual-2.5/

### 回答1: 可以使用 ST_GeometryType 函数来判断 PostGIS 图层的几何类型。例如,如果你想要检查表中名为 "geom_column" 的列的几何类型,可以使用以下 SQL 语句: ``` SELECT ST_GeometryType(geom_column) FROM table_name; ``` 如果 geom_column 包含多种几何类型,则该函数将返回 "GEOMETRYCOLLECTION"。 此外,还可以使用 ST_GeometryTypeCode 函数返回几何类型的数字代码。例如,点几何类型的代码为 1,线几何类型的代码为 2,面几何类型的代码为 3 等。可以使用以下 SQL 语句返回几何类型的数字代码: ``` SELECT ST_GeometryTypeCode(geom_column) FROM table_name; ``` ### 回答2: 要判断PostGIS图层的几何类型,可以使用PostGIS提供的几何函数进行查询和分析。 首先,可以使用ST_GeometryType函数来获取图层中几何对象的类型。该函数可以返回几何类型的字符串表示,例如点、线、多边形等。 其次,可以使用ST_IsPoint、ST_IsLineString、ST_IsPolygon等函数来判断几何对象是否是点、线、多边形等特定类型。这些函数返回布尔值,如果几何对象满足条件则返回true,否则返回false。 另外,可以使用ST_Dimension函数来获取几何对象的维度,即对象的类型是0维(点)、1维(线)还是2维(多边形)。该函数返回一个整数,0表示点,1表示线,2表示多边形。 此外,还可以使用ST_NumPoints函数来获取几何对象中点的数量。如果返回的值为1,则表示是点;如果大于1,则表示是多点、线或多边形。 以上是一些常用的方法来判断PostGIS图层中几何对象的类型,可以根据具体的需求选择适当的函数来进行查询和分析。 ### 回答3: 要判断PostGIS图层的几何类型,可以使用PostGIS提供的函数和查询语句来实现。 首先,我们可以使用以下查询语句来获取图层的几何类型信息: SELECT DISTINCT ST_GeometryType(geom) FROM table_name; 其中,table_name是指要查询的图层名称,geom是该图层的几何列名称。 执行上述查询语句后,会返回一个包含不同几何类型的结果集。常见的几何类型包括点(POINT)、线(LINESTRING)、面(POLYGON)等。 此外,如果要判断图层中是否存在特定类型的几何对象,可以通过以下查询语句来实现: SELECT EXISTS(SELECT 1 FROM table_name WHERE ST_GeometryType(geom) = 'geometry_type'); 其中,table_name是要查询的图层名称,geom是几何列名称,geometry_type是要判断的几何类型,如'POINT'、'LINESTRING'、'POLYGON'等。 执行上述查询后,如果返回结果为true,则表示图层中存在该几何类型的对象;如果返回结果为false,则表示图层中不存在该几何类型的对象。 通过上述方法,我们可以方便地判断PostGIS图层的几何类型,并进行相应的处理和分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值