Gis 点到多边形转换

Gis 点到多边形转换,gis,postgis,gdal,Gis,Postgis,Gdal,我正在将一个xml文件加载到我的postgresql/postgis数据库中。下面的字段包含我想要转换为多边形的区域的横向连线。有没有一种方法可以使用ST_MPolyFromText来实现这一点?样本的long和lat顺序与加载到db的方式相反 39.43、-80.29 39.46、-80.49 39.43、-80.52 39.46、-80.66 39.98、-80.76 40.07、-80.43 39.46、-79.91 39.39、-80.10 39.40、-80.11 39.39、-80.

我正在将一个xml文件加载到我的postgresql/postgis数据库中。下面的字段包含我想要转换为多边形的区域的横向连线。有没有一种方法可以使用ST_MPolyFromText来实现这一点?样本的long和lat顺序与加载到db的方式相反


39.43、-80.29 39.46、-80.49 39.43、-80.52 39.46、-80.66 39.98、-80.76 40.07、-80.43 39.46、-79.91 39.39、-80.10 39.40、-80.11 39.39、-80.18 39.43、-80.29

您可以很容易地将其格式化为WKT。首先,将逗号转换为空格,将空格转换为逗号,然后将坐标从lat,long转换为long,lat(x,y)。以下是PostGIS功能:

CREATE FUNCTION polygon_from_funny_format(latlon text) RETURNS geometry AS
$BODY$SELECT
    ST_FlipCoordinates(('SRID=4326;POLYGON((' ||
                       translate($1, ', ', ' ,') || '))')::geometry);
$BODY$ LANGUAGE sql IMMUTABLE STRICT;
现在您可以执行以下操作:

SELECT polygon_from_funny_format('39.43,-80.29 39.46,-80.49 39.43,-80.52 39.46,-80.66 39.98,-80.76 40.07,-80.43 39.46,-79.91 39.39,-80.10 39.40,-80.11 39.39,-80.18 39.43,-80.29');

因此,如果将来自\u-funcy\u格式的多边形\u存储在xfoo列中,并且我执行了这些查询,那么我所要做的就是不选择INSERT-INTO-the\u-geom?值得一试。。此函数返回一个几何体,因此它应该进入_geom。它可能只会抱怨输入有点奇怪,比如如果线性环没有闭合(开始/结束是相同的)基本上我正在尝试将其转换为postgis如果有跳线,你知道如何进行吗?是的,你需要以某种方式解析文档中的每个
条目
,并刮取所需的属性。这是我用Python编写的代码。然而,说起来容易做起来难。