我正在将一个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
答案 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');