﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-socketref-随笔分类-WebGL</title><link>http://www.cppblog.com/socketref/category/18344.html</link><description>gis,mouse,luolasi</description><language>zh-cn</language><lastBuildDate>Fri, 03 Feb 2012 21:55:57 GMT</lastBuildDate><pubDate>Fri, 03 Feb 2012 21:55:57 GMT</pubDate><ttl>60</ttl><item><title>Ogr转换shp秒到度单位</title><link>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html</link><dc:creator>放屁阿狗 </dc:creator><author>放屁阿狗 </author><pubDate>Wed, 01 Feb 2012 18:14:00 GMT</pubDate><guid>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html</guid><wfw:comment>http://www.cppblog.com/socketref/comments/164810.html</wfw:comment><comments>http://www.cppblog.com/socketref/archive/2012/02/02/164810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/socketref/comments/commentRss/164810.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/socketref/services/trackbacks/164810.html</trackback:ping><description><![CDATA[公司的shp数据都是以秒为单位存储，要做监控和道路匹配，直接与gps接收坐标无法实现，必须转换shp单位为度单位<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;&nbsp;1</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">--coding:utf-8---</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;2</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;brief:&nbsp;&nbsp;内业shp数据，转换秒到度为单位</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;3</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;author:&nbsp;scott</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;4</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;date:&nbsp;2012.1.30&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;5</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;org:&nbsp;&nbsp;--navi.com</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;6</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;7</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;version:&nbsp;v0.1.0&nbsp;2012.2.1</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;8</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;1.create&nbsp;doc&nbsp;and&nbsp;test&nbsp;ok,&nbsp;types&nbsp;(included&nbsp;point|line|polygon|multipolygon)&nbsp;be&nbsp;supported</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;&nbsp;9</span>&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;10</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;os,os.path,sys,time,copy,shutil<br /></span><span style="color: #008080; ">&nbsp;12</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">from</span><span style="color: #000000; ">&nbsp;osgeo&nbsp;</span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;ogr<br /></span><span style="color: #008080; ">&nbsp;13</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;14</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;15</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerPoint(layer):<br /></span><span style="color: #008080; ">&nbsp;16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">point&nbsp;num:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,layer.GetFeatureCount()<br /></span><span style="color: #008080; ">&nbsp;19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">extent:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,layer.GetExtent()<br /></span><span style="color: #008080; ">&nbsp;20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;cc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:<br /></span><span style="color: #008080; ">&nbsp;22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;cc</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;23</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef().GetPoint(0)<br /></span><span style="color: #008080; ">&nbsp;25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()<br /></span><span style="color: #008080; ">&nbsp;26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g#,g.ExportKML()</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;27</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.SetPoint(0,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.)<br /></span><span style="color: #008080; ">&nbsp;29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;30</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #800000; "><br /></span><span style="color: #008080; ">&nbsp;32</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ng&nbsp;=&nbsp;ogr.Geometry(ogr.wkbPoint)<br /></span><span style="color: #008080; ">&nbsp;33</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;pt<br /></span><span style="color: #008080; ">&nbsp;34</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ng.SetPoint(0,pt[0]+40,pt[1])<br /></span><span style="color: #008080; ">&nbsp;35</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr.SetGeometry(ng)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;36</span>&nbsp;<span style="color: #800000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000; ">'''</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;38</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;39</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;40</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerLine(layer):<br /></span><span style="color: #008080; ">&nbsp;41</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;42</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;43</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;44</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;45</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()<br /></span><span style="color: #008080; ">&nbsp;46</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetPointCount()<br /></span><span style="color: #008080; ">&nbsp;47</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;0<br /></span><span style="color: #008080; ">&nbsp;48</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;cc&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;cnt:<br /></span><span style="color: #008080; ">&nbsp;49</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;g.GetPoint(cc)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;50</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;51</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;52</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(cnt):<br /></span><span style="color: #008080; ">&nbsp;53</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetPoint(n)<br /></span><span style="color: #008080; ">&nbsp;54</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;55</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.SetPoint(n,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600.0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;56</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;57</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;58</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;59</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;60</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_layerPolygon(layer):<br /></span><span style="color: #008080; ">&nbsp;61</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.ResetReading()<br /></span><span style="color: #008080; ">&nbsp;62</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()<br /></span><span style="color: #008080; ">&nbsp;63</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;64</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;ftr:&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;65</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ftr.GetGeometryRef()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;66</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetGeometryCount()<br /></span><span style="color: #008080; ">&nbsp;67</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(cnt):<br /></span><span style="color: #008080; ">&nbsp;68</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gg&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.GetGeometryRef(n)<br /></span><span style="color: #008080; ">&nbsp;69</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;m&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;range(gg.GetPointCount()&nbsp;):<br /></span><span style="color: #008080; ">&nbsp;70</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;gg.GetPoint(m)<br /></span><span style="color: #008080; ">&nbsp;71</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;pt</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;72</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;pt[0]</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">or</span><span style="color: #000000; ">&nbsp;pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;73</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gg.SetPoint(m,pt[0]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600</span><span style="color: #000000; ">.,pt[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; ">/</span><span style="color: #000000; ">3600.0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;74</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layer.SetFeature(ftr)<br /></span><span style="color: #008080; ">&nbsp;75</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ftr&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetNextFeature()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;76</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;77</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;do_shpfile(file):<br /></span><span style="color: #008080; ">&nbsp;78</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">print&nbsp;file</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;79</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">ready&nbsp;file:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,file<br /></span><span style="color: #008080; ">&nbsp;80</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;driver&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ogr.GetDriverByName(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">ESRI&nbsp;Shapefile</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;81</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">shp&nbsp;=&nbsp;driver.Open('e:/shp_data/points.shp',1)&nbsp;&nbsp;#&nbsp;0&nbsp;-&nbsp;read&nbsp;,&nbsp;1&nbsp;-&nbsp;write&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;82</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;shp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;driver.Open(file,</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;0&nbsp;-&nbsp;read&nbsp;,&nbsp;1&nbsp;-&nbsp;write&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;83</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;84</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;shp.GetLayer()<br /></span><span style="color: #008080; ">&nbsp;85</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;86</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;layer.GetFeatureCount()&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;0:<br /></span><span style="color: #008080; ">&nbsp;87</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;<br /></span><span style="color: #008080; ">&nbsp;88</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;89</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;layer.GetLayerDefn().GetGeomType()<br /></span><span style="color: #008080; ">&nbsp;90</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;91</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;file.lower().find(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">province</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">&nbsp;92</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">pass</span><span style="color: #000000; ">&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">return&nbsp;</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;93</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">&nbsp;94</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbPoint:<br /></span><span style="color: #008080; ">&nbsp;95</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerPoint(layer)<br /></span><span style="color: #008080; ">&nbsp;96</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">elif</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbLineString:<br /></span><span style="color: #008080; ">&nbsp;97</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerLine(layer)<br /></span><span style="color: #008080; ">&nbsp;98</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">elif</span><span style="color: #000000; ">&nbsp;gtyp&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ogr.wkbPolygon:<br /></span><span style="color: #008080; ">&nbsp;99</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_layerPolygon(layer)<br /></span><span style="color: #008080; ">100</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">101</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">print</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">unknown&nbsp;type:</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,gtyp,</span><span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #000000; ">,file<br /></span><span style="color: #008080; ">102</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">103</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;layer.SyncToDisk()&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">104</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;shp.Destroy()<br /></span><span style="color: #008080; ">105</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">106</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">107</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">def</span><span style="color: #000000; ">&nbsp;convert(shpdir):<br /></span><span style="color: #008080; ">108</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;files&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;os.listdir(shpdir)<br /></span><span style="color: #008080; ">109</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;file&nbsp;</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">&nbsp;files:<br /></span><span style="color: #008080; ">110</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;&nbsp;file.lower().find(</span><span style="color: #800000; ">'</span><span style="color: #800000; ">.shp</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">==-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">111</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">112</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080; ">113</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">if&nbsp;file&nbsp;==&nbsp;'points.shp':</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">114</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do_shpfile(shpdir</span><span style="color: #000000; ">+</span><span style="color: #800000; ">"</span><span style="color: #800000; ">/</span><span style="color: #800000; ">"</span><span style="color: #000000; ">+</span><span style="color: #000000; ">file)<br /></span><span style="color: #008080; ">115</span>&nbsp;<span style="color: #000000; "><br /></span><span style="color: #008080; ">116</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;</span><span style="color: #800080; ">__name__</span><span style="color: #000000; ">==</span><span style="color: #800000; ">'</span><span style="color: #800000; ">__main__</span><span style="color: #800000; ">'</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">117</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">#</span><span style="color: #008000; ">convert(&nbsp;'e:/shp_data'&nbsp;)</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">118</span>&nbsp;<span style="color: #008000; "></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;sys.argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">:]:<br /></span><span style="color: #008080; ">119</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convert(sys.argv[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">])<br /></span><span style="color: #008080; ">120</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">:<br /></span><span style="color: #008080; ">121</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convert(&nbsp;</span><span style="color: #800000; ">'</span><span style="color: #800000; ">D:/temp3/mess/MESH/H51F009012</span><span style="color: #800000; ">'</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">122</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp; <br /></span></div><img src ="http://www.cppblog.com/socketref/aggbug/164810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/socketref/" target="_blank">放屁阿狗 </a> 2012-02-02 02:14 <a href="http://www.cppblog.com/socketref/archive/2012/02/02/164810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>