2012-07-05 76 views
0

我正在将一个xml文件加载到我的postgresql/postgis数据库中,以下字段包含需要转换为多边形的区域lat长度的线。有没有一种方法可以使用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

您可以很容易地将其格式化为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'); 
+0

所以如果polygon_from_funny_format存储在xfoo列,我执行这些查询的一切我都在做的是,而不是选择INSERT INTO the_geom ? – Chris

+0

这是值得一试的..这个函数返回一个几何,所以它应该进入the_geom。它可能只会抱怨,如果有什么奇怪的输入,如线性环没有关闭(开始/结束是相同的) –

+0

基本上我想转换这个http://alerts.weather.gov/cap /us.php?x=0进入postgis,如果有线,你有什么想法如何去做? – Chris