指向多边形转换

时间:2012-07-05 06:00:56

标签: gis postgis gdal

我正在将一个xml文件加载到我的postgresql / postgis数据库中,以下字段包含了想要转换为多边形的区域的长度。有没有办法使用ST_MPolyFromText来完成这项工作,样本的长度和纬度与顺序相反,而不是将其加载到数据库中?

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

1 个答案:

答案 0 :(得分:0)

你可以很容易地将其格式化为WKT。首先,将逗号转换为空格,将空格转换为逗号,然后将坐标从lat,long转换为long,转换为纬度(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');