博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OpenLayers-Geometry格式转换

Posted on 2013-02-18 16:14  marsprj  阅读(11601)  评论(1编辑  收藏  举报

Geometry有多种格式,例如WKT, GML, KML等格式。OpenLayers提供Geometry格式的转换方法,可以实现不同格式的Geometry的转换。

Geometry格式转换类位于OpenLayers.Format命名空间下。本文以WKT--> GML的转换来说明OpenLayers Geometry格式转换方法的使用。

1. 定义WKT Geometry

var wkt  = "POLYGON((6.027164 49.524078,6.088064 49.680508,5.948726 49.772232,5.941587 49.91943,6.03742 50.064381,6.147439 50.130783,6.211109 50.166946,6.312177 50.134426,6.340263 49.998951,6.525142 49.858585,6.734586 49.815399,6.715019 49.685902,6.603117 49.621159,6.636707 49.462303,6.57162 49.490456,6.315996 49.495625,6.02716449.524078))”;

2. 创建WKT Format对象

var wkt_c = new OpenLayers.Format.WKT();

3. 利用wkt_c读入wkt数据,并转换为OpenLayers的Geometry对象

var geometry = new wkt_c.read(wkt);

4. 创建GMK Format对象

var gml_c = new OpenLayers.Format.GML();

5. 利用gml_c对象将geometry写为gml格式

var gml = new gml_c.write(geometry);

 

下面是一个OpenLayers格式转换器代码

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 2 <HTML>
 3  <HEAD>
 4   <TITLE> OpenLayers: Convert Data Format </TITLE>
 5   <META NAME="Generator" CONTENT="EditPlus">
 6   <META NAME="Author" CONTENT="">
 7   <META NAME="Keywords" CONTENT="">
 8   <META NAME="Description" CONTENT="">
 9   <script src="./OpenLayers-2.10/lib/OpenLayers.js"></script>
10   <script  type="text/javascript">
11     function onConvertClick()
12     {
13         var inp = document.getElementById("input");
14         var out = document.getElementById("output");
15         var selector = document.getElementById("format");
16         var format = selector.value;
17 
18         var wkt = inp.value;
19         var wkt_c = new OpenLayers.Format.WKT();
20         var geometry = wkt_c.read(wkt);
21 
22         var convertor = createConvertor(format);
23         var text = convertor.write(geometry);
24 
25         out.value = text;
26     }
27 
28     function createConvertor(type)
29     {
30         var convertor = null;
31         switch(type)
32         {
33         case "GML":
34             convertor = new OpenLayers.Format.GML();
35             break;
36         case "KML":
37             convertor = new OpenLayers.Format.KML();
38             break;
39         case "GeoJSON":
40             convertor = new OpenLayers.Format.GeoJSON();
41             break;
42         }
43         return convertor;
44     }
45   </script>
46  </HEAD>
47 
48  <BODY>
49     <table>
50         <tr>
51             <td>
52                 <SELECT NAME="format" id="format">
53                     <OPTION value="GML">GML</OPTION>
54                     <OPTION value="KML">KML</OPTION>
55                     <OPTION value="GeoJSON">GeoJSON</OPTION>
56                 </SELECT>
57             </td>
58             <td>
59                 <input type="button" value="Convert" onClick="onConvertClick();">
60             </td>
61         </tr>
62         <tr>
63             <td>input:</td>
64             <td><textarea id="input" rows="10" cols="80">POLYGON((6.027164 49.524078,6.088064 49.680508,5.948726 49.772232,5.941587 49.91943,6.03742 50.064381,6.147439 50.130783,6.211109 50.166946,6.312177 50.134426,6.340263 49.998951,6.525142 49.858585,6.734586 49.815399,6.715019 49.685902,6.603117 49.621159,6.636707 49.462303,6.57162 49.490456,6.315996 49.495625,6.02716449.524078))</textarea></td>
65         </tr>
66         <tr>
67             <td>output:</td>
68             <td><textarea id="output" rows="20" cols="80"></textarea></td>
69         </tr>
70     </table>
71  </BODY>
72 </HTML>