-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
298 lines (167 loc) · 254 KB
/
atom.xml
File metadata and controls
298 lines (167 loc) · 254 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Atrovirens' Café</title>
<subtitle>来杯下午茶吧</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2020-03-16T07:03:20.574Z</updated>
<id>http://yoursite.com/</id>
<author>
<name>antrovirens</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>PyQt5桌面开发实例</title>
<link href="http://yoursite.com/2020/03/16/PyQt5%E6%A1%8C%E9%9D%A2%E5%BC%80%E5%8F%91%E5%AE%9E%E4%BE%8B/"/>
<id>http://yoursite.com/2020/03/16/PyQt5桌面开发实例/</id>
<published>2020-03-16T04:30:05.000Z</published>
<updated>2020-03-16T07:03:20.574Z</updated>
<content type="html"><![CDATA[<div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/cloud/%E9%9C%B2%E7%B1%B3%E5%A8%85.png" alt="没存图了咋办呀"></div><p>P.S. 发现我啥时候把nodejs给卸掉了…</p><h2 id="设计"><a class="markdownIt-Anchor" href="#设计"></a> 设计</h2><p>已知坐标,计算AB两点间距离和方位角,输出结果</p><h2 id="工程"><a class="markdownIt-Anchor" href="#工程"></a> 工程</h2><p>设计ui - 编译ui - 编写函数与响应 - 打包exe</p><h2 id="代码"><a class="markdownIt-Anchor" href="#代码"></a> 代码</h2><h3 id="ui设计"><a class="markdownIt-Anchor" href="#ui设计"></a> UI设计</h3><p>一个menu,两个下拉单,</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">self.menu</span><br><span class="line">self.action_Open</span><br><span class="line">self.action_Save</span><br><span class="line">self.action_Close</span><br><span class="line">self.action_Quit</span><br><span class="line">self.menu_2</span><br><span class="line">self.action_Calculate</span><br></pre></td></tr></table></figure><p>6个lineTextEdit用来输入和输出结果 ,1个plainTextEdit作为进程提示,1个graphicsView输出图形</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">self.lineEdit_XA</span><br><span class="line">self.lineEdit_XB</span><br><span class="line">self.lineEdit_YA</span><br><span class="line">self.lineEdit_YB</span><br><span class="line">self.lineEdit_Sab</span><br><span class="line">self.lineEdit_tab</span><br><span class="line">self.plainTextEdit</span><br><span class="line">self.graphicsView</span><br></pre></td></tr></table></figure><h3 id="准备工作"><a class="markdownIt-Anchor" href="#准备工作"></a> 准备工作</h3><p>测试数据文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">1,2</span><br><span class="line">3,4</span><br></pre></td></tr></table></figure><p>头文件</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> math <span class="keyword">import</span> pi, atan, sqrt</span><br><span class="line"><span class="keyword">from</span> datetime <span class="keyword">import</span> datetime <span class="comment">#输出时间</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> matplotlib</span><br><span class="line">matplotlib.use(<span class="string">"Qt5Agg"</span>) <span class="comment"># 声明使用QT5</span></span><br><span class="line"><span class="keyword">from</span> matplotlib.backends.backend_qt5agg <span class="keyword">import</span> FigureCanvasQTAgg <span class="keyword">as</span> FigureCanvas</span><br><span class="line"><span class="keyword">from</span> matplotlib.figure <span class="keyword">import</span> Figure</span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> pyqtSlot</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> * <span class="comment">#这里懒得改了</span></span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> Ui_MainWindow <span class="keyword">import</span> Ui_MainWindow</span><br></pre></td></tr></table></figure><p>主函数</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> app = QApplication(sys.argv)</span><br><span class="line"> dlg = MainWindow()</span><br><span class="line"> dlg.show()</span><br><span class="line"> sys.exit(app.exec_())</span><br></pre></td></tr></table></figure><h3 id="全局变量"><a class="markdownIt-Anchor" href="#全局变量"></a> 全局变量</h3><p>初始化为float</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">x = [<span class="number">0.0</span>, <span class="number">0.0</span>]</span><br><span class="line">y = [<span class="number">0.0</span>, <span class="number">0.0</span>]</span><br><span class="line">Sab = <span class="number">0.0</span></span><br><span class="line">Tab = <span class="number">0.0</span></span><br></pre></td></tr></table></figure><h3 id="功能函数"><a class="markdownIt-Anchor" href="#功能函数"></a> 功能函数</h3><p>计算方位角(高斯平面坐标系)</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">Azimuth</span><span class="params">()</span>:</span></span><br><span class="line"> dx = x[<span class="number">1</span>] - x[<span class="number">0</span>]</span><br><span class="line"> dy = y[<span class="number">1</span>] - y[<span class="number">0</span>]</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> dx ==<span class="number">0</span>:</span><br><span class="line"> <span class="keyword">if</span> dy >=<span class="number">0</span> :</span><br><span class="line"> a = pi/<span class="number">2</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> a = pi * <span class="number">3</span> / <span class="number">2</span></span><br><span class="line"> <span class="keyword">elif</span> dy ==<span class="number">0</span>:</span><br><span class="line"> <span class="keyword">if</span> dx >= <span class="number">0</span>:</span><br><span class="line"> a=<span class="number">0</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> a = pi</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> a = atan(dy / dx)</span><br><span class="line"> <span class="keyword">if</span> dx <= <span class="number">0</span>:</span><br><span class="line"> a = a + pi</span><br><span class="line"> <span class="keyword">elif</span> dy <= <span class="number">0</span>:</span><br><span class="line"> a = a + <span class="number">2</span> * pi</span><br><span class="line"> <span class="keyword">return</span> a</span><br></pre></td></tr></table></figure><p>quit</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@pyqtSlot()</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">on_action_Quit_triggered</span><span class="params">(self)</span>:</span></span><br><span class="line"> self.close()</span><br></pre></td></tr></table></figure><h3 id="读取文件"><a class="markdownIt-Anchor" href="#读取文件"></a> 读取文件</h3><p>推荐用with as格式写</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"> </span><br><span class="line"><span class="meta">@pyqtSlot()</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">on_action_Open_triggered</span><span class="params">(self)</span>:</span></span><br><span class="line"> filename,_ = QFileDialog.getOpenFileName(self, <span class="string">'输入坐标数据'</span>, <span class="string">'./'</span>, <span class="string">'All Files (*);;Text Files (*.txt)'</span>);</span><br><span class="line"> <span class="keyword">if</span> filename == <span class="string">''</span>:</span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'打开失败 返回值为空'</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> f=open(filename,<span class="string">'r'</span>, encoding=<span class="string">'utf-8'</span>)</span><br><span class="line"> dic = []</span><br><span class="line"> <span class="keyword">for</span> line <span class="keyword">in</span> f.readlines():</span><br><span class="line"> line=line.strip(<span class="string">'\n'</span>) <span class="comment">#去掉换行符\n</span></span><br><span class="line"> b=line.split(<span class="string">','</span>) <span class="comment">#将每一行以空格为分隔符转换成列表</span></span><br><span class="line"> dic.append(b)</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"> self.lineEdit_XA.setText(dic[<span class="number">0</span>][<span class="number">0</span>])</span><br><span class="line"> self.lineEdit_YA.setText(dic[<span class="number">0</span>][<span class="number">1</span>])</span><br><span class="line"> self.lineEdit_XB.setText(dic[<span class="number">1</span>][<span class="number">0</span>])</span><br><span class="line"> self.lineEdit_YB.setText(dic[<span class="number">1</span>][<span class="number">1</span>])</span><br><span class="line"> </span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'打开文件:'</span> + str(filename))</span><br><span class="line"> f.close()</span><br></pre></td></tr></table></figure><h3 id="写入文件"><a class="markdownIt-Anchor" href="#写入文件"></a> 写入文件</h3><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">@pyqtSlot()</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">on_action_Save_triggered</span><span class="params">(self)</span>:</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> Slot documentation goes here.</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="comment"># <span class="doctag">TODO:</span> 保存结果 </span></span><br><span class="line"> <span class="keyword">with</span> open(<span class="string">'输出结果.txt'</span>,<span class="string">'a'</span>) <span class="keyword">as</span> f:</span><br><span class="line"> f.write(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'\n'</span>)</span><br><span class="line"> f.write(<span class="string">'A:'</span>+str([x[<span class="number">0</span>], y[<span class="number">0</span>]]) + <span class="string">';B:'</span> + str([x[<span class="number">1</span>],y[<span class="number">1</span>]]) + <span class="string">'\n'</span>)</span><br><span class="line"> f.write(<span class="string">'Sab = '</span>+ str(Sab) + <span class="string">'; Tab = '</span> + str(Tab) + <span class="string">'\n'</span>)</span><br><span class="line"> f.write(<span class="string">'\n'</span>)</span><br><span class="line"> </span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'保存成功'</span>)</span><br></pre></td></tr></table></figure><h3 id="执行计算"><a class="markdownIt-Anchor" href="#执行计算"></a> 执行计算</h3><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># <span class="doctag">TODO:</span> 检查是否缺失条件, 进行计算, 绘制图形</span></span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> self.lineEdit_XA.text() == <span class="string">''</span> <span class="keyword">or</span> self.lineEdit_XB.text() == <span class="string">''</span> <span class="keyword">or</span> self.lineEdit_YA.text() == <span class="string">''</span> <span class="keyword">or</span> self.lineEdit_YB.text() == <span class="string">''</span>: <span class="comment">#空的情况下,内容为‘’ (空白);不是None</span></span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'中断:参数为空'</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> </span><br><span class="line"> XA = float(self.lineEdit_XA.text())</span><br><span class="line"> XB = float(self.lineEdit_XB.text())</span><br><span class="line"> YA = float(self.lineEdit_YA.text())</span><br><span class="line"> YB = float(self.lineEdit_YB.text())</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">if</span> XA ==XB <span class="keyword">and</span> YA == YB:</span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'中断:两点重合'</span>)</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"> </span><br><span class="line"> <span class="keyword">global</span> x, y, Sab, Tab <span class="comment"># 给全局变量赋值</span></span><br><span class="line"> </span><br><span class="line"> x = [XA, XB]</span><br><span class="line"> y = [YA, YB]</span><br><span class="line"> </span><br><span class="line"> Sab = sqrt((XA - XB) * (XA - XB) + (YA - YB) * (YA - YB) )</span><br><span class="line"> Tab = Azimuth()</span><br><span class="line"> </span><br><span class="line"> self.lineEdit_Sab.setText(str(Sab))</span><br><span class="line"> self.lineEdit_tab.setText(str(Tab))</span><br><span class="line"> </span><br><span class="line"> self.plainTextEdit.appendPlainText(<span class="string">'['</span> + str(datetime.now()) + <span class="string">']'</span> + <span class="string">'计算完成:'</span> + <span class="string">'Sab = '</span>+ str(Sab) + <span class="string">'; Tab = '</span> + str(Tab))</span><br></pre></td></tr></table></figure><h3 id="输出图形"><a class="markdownIt-Anchor" href="#输出图形"></a> 输出图形</h3><p>这个还有点麻烦,参考的是这个人的代码(Matplotlib植入PyQt5 + QT5的UI呈现):<a href="https://www.cnblogs.com/laoniubile/p/5904817.html" target="_blank" rel="noopener">https://www.cnblogs.com/laoniubile/p/5904817.html</a></p><p>写了一个类来实现把figure给传递出去</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="class"><span class="keyword">class</span> <span class="title">Figure_Canvas</span><span class="params">(FigureCanvas)</span>:</span> <span class="comment"># 通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplot lib的关键</span></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">__init__</span><span class="params">(self, parent=None, width=<span class="number">5.1</span>, height=<span class="number">4</span>, dpi=<span class="number">10</span>)</span>:</span></span><br><span class="line"> fig = Figure(figsize=(width, height), dpi=<span class="number">80</span>) <span class="comment"># 创建一个Figure,注意:该Figure为matplotlib下的figure,不是matplotlib.pyplot下面的figure</span></span><br><span class="line"></span><br><span class="line"> FigureCanvas.__init__(self, fig) <span class="comment"># 初始化父类</span></span><br><span class="line"> self.setParent(parent)</span><br><span class="line"></span><br><span class="line"> self.axes = fig.add_subplot(<span class="number">111</span>) <span class="comment"># 调用figure下面的add_subplot方法,类似于matplotlib.pyplot下面的subplot方法</span></span><br><span class="line"></span><br><span class="line"> <span class="function"><span class="keyword">def</span> <span class="title">StartPlot</span><span class="params">(self)</span>:</span></span><br><span class="line"> self.axes.set_xlabel(<span class="string">'Y'</span>)</span><br><span class="line"> self.axes.set_ylabel(<span class="string">'X'</span>)</span><br><span class="line"></span><br><span class="line"> self.axes.scatter(y[<span class="number">0</span>], x[<span class="number">0</span>], c= <span class="string">'red'</span>, marker=<span class="string">'o'</span>)</span><br><span class="line"> self.axes.scatter(y[<span class="number">1</span>], x[<span class="number">1</span>], c= <span class="string">'yellow'</span>)</span><br><span class="line"> self.axes.legend((<span class="string">'A'</span>, <span class="string">'B'</span>), loc=<span class="string">'best'</span>)</span><br><span class="line"> </span><br><span class="line"> self.axes.set_title(<span class="string">'Calculation Results'</span>,color = <span class="string">'blue'</span>)</span><br><span class="line"> </span><br><span class="line"> self.axes.plot(y, x, c= <span class="string">'blue'</span>, lw=<span class="number">0.5</span>)</span><br><span class="line"> </span><br><span class="line"> self.axes.annotate(<span class="string">'('</span> + str(x[<span class="number">0</span>]) + <span class="string">','</span> + str(y[<span class="number">0</span>]) + <span class="string">')'</span>, xy=(y[<span class="number">0</span>], x[<span class="number">0</span>]), xytext=(<span class="number">-40</span>, <span class="number">6</span>), textcoords=<span class="string">'offset points'</span>, weight=<span class="string">'heavy'</span>)</span><br><span class="line"> self.axes.annotate(<span class="string">'('</span> + str(x[<span class="number">1</span>]) + <span class="string">','</span> + str(y[<span class="number">1</span>]) + <span class="string">')'</span>, xy=(y[<span class="number">1</span>], x[<span class="number">1</span>]), xytext=(<span class="number">-40</span>, <span class="number">6</span>), textcoords=<span class="string">'offset points'</span>, weight=<span class="string">'heavy'</span>)</span><br><span class="line"> </span><br><span class="line"> t1 = (y[<span class="number">0</span>]+y[<span class="number">1</span>])/<span class="number">2</span></span><br><span class="line"> t2 = (x[<span class="number">0</span>]+x[<span class="number">1</span>])/<span class="number">2</span></span><br><span class="line"> </span><br><span class="line"> self.axes.annotate(<span class="string">'Sab = '</span>+ str(Sab) + <span class="string">'; Tab = '</span> + str(Tab), xy=(t1, t2), xytext=(<span class="number">-80</span>, <span class="number">80</span>), textcoords=<span class="string">'offset points'</span>, color = <span class="string">'blue'</span>, arrowprops = dict( arrowstyle = <span class="string">'->'</span>, connectionstyle = <span class="string">'arc3'</span>, color = <span class="string">'b'</span>))</span><br></pre></td></tr></table></figure><p>用QGraphicsScene来加载figure,然后在View显示</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"> ins = Figure_Canvas() <span class="comment">#实例化一个FigureCanvas</span></span><br><span class="line"> ins.StartPlot() <span class="comment"># 画图</span></span><br><span class="line"> graphicscene = QGraphicsScene() <span class="comment">#创建一个QGraphicsScene,因为加载的图形(FigureCanvas)不能直接放到graphicview控件中,必须先放到graphicScene,然后再把graphicscene放到graphicview中</span></span><br><span class="line"> graphicscene.addWidget(ins) <span class="comment"># 把图形放到QGraphicsScene中,注意:图形是作为一个QWidget放到QGraphicsScene中的</span></span><br><span class="line"> </span><br><span class="line"><span class="comment"># graphicscene=graphicscene.scaled(self.graphicsView.width()-10,self.graphicsView.height()-10)</span></span><br><span class="line"><span class="comment"># 咋调大小暂时还没搞清楚</span></span><br><span class="line"></span><br><span class="line"> self.graphicsView.setScene(graphicscene) <span class="comment"># 把QGraphicsScene放入QGraphicsView</span></span><br><span class="line"> self.graphicsView.show() <span class="comment"># 调用show呈现图形</span></span><br></pre></td></tr></table></figure><h3 id="打包exe"><a class="markdownIt-Anchor" href="#打包exe"></a> 打包exe</h3><p>贴一个upx win64的下载链接,我自己上传的,官网下载巨慢,把upx扔到scrips下面就会自动使用,有时候会缺一些奇怪的东西,咋解决还没搞明白:<a href="https://www.lanzous.com/iabcmxi" target="_blank" rel="noopener">https://www.lanzous.com/iabcmxi</a></p><p>感觉写个程序自己用用就行了,打包交作业实属憨憨,,特么生成出来200m,怕不是把整个qt整进去了</p><p>在文件夹里面按住shift右键,打开powershell,是个命令行就行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pyinstaller -F filename <span class="comment">#生成单个exe文件,比较小 -D为生成dll文件和一个exe文件,整个文件夹巨几儿大</span></span><br></pre></td></tr></table></figure><p>然后会多两文件夹和一个spec文件,build里面是生成的中间文件,dist里面是生成的程序文件,spec文件里面可以手动修改生成选项</p><p>怎么优化可以看看这个文章(pyinstaller打包的exe太大?你需要嵌入式python玄学 拓展篇):<a href="https://zhuanlan.zhihu.com/p/77317765" target="_blank" rel="noopener">https://zhuanlan.zhihu.com/p/77317765</a></p><h2 id="总结"><a class="markdownIt-Anchor" href="#总结"></a> 总结</h2><p>莫得总结</p>]]></content>
<summary type="html">
<div align="center">
<img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/cloud/%E9%9C%B2%E7%B1%B3%E5%A8%85.png" alt="没存图
</summary>
<category term="Python" scheme="http://yoursite.com/categories/Python/"/>
<category term="桌面开发" scheme="http://yoursite.com/tags/%E6%A1%8C%E9%9D%A2%E5%BC%80%E5%8F%91/"/>
<category term="PyQt" scheme="http://yoursite.com/tags/PyQt/"/>
</entry>
<entry>
<title>遥感图像处理</title>
<link href="http://yoursite.com/2020/01/29/%E9%81%A5%E6%84%9F%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/"/>
<id>http://yoursite.com/2020/01/29/遥感图像处理/</id>
<published>2020-01-29T06:47:44.000Z</published>
<updated>2020-01-29T06:50:43.396Z</updated>
<content type="html"><![CDATA[<h2 id="libtiff"><a class="markdownIt-Anchor" href="#libtiff"></a> libtiff</h2>]]></content>
<summary type="html">
<h2 id="libtiff"><a class="markdownIt-Anchor" href="#libtiff"></a> libtiff</h2>
</summary>
</entry>
<entry>
<title>pyqt5界面化学习</title>
<link href="http://yoursite.com/2020/01/26/pyqt5%E7%95%8C%E9%9D%A2%E5%8C%96%E5%AD%A6%E4%B9%A0/"/>
<id>http://yoursite.com/2020/01/26/pyqt5界面化学习/</id>
<published>2020-01-26T09:16:48.000Z</published>
<updated>2020-01-27T08:32:01.580Z</updated>
<content type="html"><![CDATA[<p>主要是一个月之后,eric6怎么用的基本上全忘记了qwq,花点时间重新温习一下</p><h2 id="pyqt5编程准备"><a class="markdownIt-Anchor" href="#pyqt5编程准备"></a> pyqt5编程准备</h2><h3 id="程序安装"><a class="markdownIt-Anchor" href="#程序安装"></a> 程序安装</h3><p>详见:Eric6安装和配置</p><h3 id="工程创建"><a class="markdownIt-Anchor" href="#工程创建"></a> 工程创建:</h3><p>我写一个程序要做的步骤有:新建工程-新建窗口-编译窗口-添加响应</p><p>新建窗口的时候,一些简单的响应就直接在qtDesigner里面用信号系统直接添加了,比如关闭窗口等等。左边的工具条得多熟悉,刚刚用的时候经常找不到要用的工具在哪里。对了,menubar是在窗口上右键添加的,当时就找了好久(haipa)</p><p>编译窗口的话最好一次性成功,好像改来改去的话总会出点奇怪的毛病。就像刚才我在MenuBar的QMenu上添加的trigger事件就没反映 暂时还不知道啥问题。</p><p>添加事件:在.ui文件右键第三行generate dialog codes</p><h3 id="代码部分"><a class="markdownIt-Anchor" href="#代码部分"></a> 代码部分:</h3><p>生成的代码文件题头</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sys</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtGui <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtWidgets <span class="keyword">import</span> *</span><br><span class="line"><span class="keyword">from</span> PyQt5.QtCore <span class="keyword">import</span> *</span><br><span class="line"><span class="comment">#新手不是很明白就把所有都搞成import * 了 </span></span><br><span class="line"><span class="keyword">from</span> Ui_MainWindow <span class="keyword">import</span> Ui_MainWindow <span class="comment">#这一行把那个点给去掉</span></span><br></pre></td></tr></table></figure><h2 id="学习一-控件与类"><a class="markdownIt-Anchor" href="#学习一-控件与类"></a> 学习一: 控件与类</h2><h3 id="qfiledialog"><a class="markdownIt-Anchor" href="#qfiledialog"></a> QFileDialog</h3><p>对话框打开:QFileDialog.getOpenFileName([parent=None[, caption=""[, dir=""[, filter=""[, selectedFilter=""[, options=QFileDialog.Options()]]]]]])</p><p>返回的是一个组(fileName, selectedFilter)</p><h3 id="qcombobox"><a class="markdownIt-Anchor" href="#qcombobox"></a> QComboBox</h3><blockquote><p>from PyQt5.QtWidgets import QComboBox</p></blockquote><p>参考网址:<a href="https://doc.qt.io/qtforpython/PySide2/QtWidgets/QComboBox.html#PySide2.QtWidgets.QComboBox" target="_blank" rel="noopener">https://doc.qt.io/qtforpython/PySide2/QtWidgets/QComboBox.html#PySide2.QtWidgets.QComboBox</a></p><p>PySide2到底是个啥我还没搞清楚。。</p><p>添加项:QComboBox.addItem(icon, text[, userData=None]);其中icon – QIcontext – unicodeuserData – object,icon项可略</p><p>清空项:QComboBox.clear() 清空所有 包括external model</p><p>统计数目:QComboBox.count() 返回一个int值</p><p>返回现在的值:QComboBox.currentData([role=Qt.UserRole]) Parameters:role – int;Return type:object</p><p>返回现在的索引:QComboBox.currentIndex() 返回一个int</p><h3 id="qgraphicsview"><a class="markdownIt-Anchor" href="#qgraphicsview"></a> QGraphicsView</h3><h3 id="qimage"><a class="markdownIt-Anchor" href="#qimage"></a> QImage</h3><h2 id="学习二-打开图形"><a class="markdownIt-Anchor" href="#学习二-打开图形"></a> 学习二: 打开图形</h2>]]></content>
<summary type="html">
<p>主要是一个月之后,eric6怎么用的基本上全忘记了qwq,花点时间重新温习一下</p>
<h2 id="pyqt5编程准备"><a class="markdownIt-Anchor" href="#pyqt5编程准备"></a> pyqt5编程准备</h2>
<h3 id=
</summary>
<category term="课外学习" scheme="http://yoursite.com/categories/%E8%AF%BE%E5%A4%96%E5%AD%A6%E4%B9%A0/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
</entry>
<entry>
<title>遥感数字图像处理 复习</title>
<link href="http://yoursite.com/2020/01/16/%E9%81%A5%E6%84%9F%E6%95%B0%E5%AD%97%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86-%E5%A4%8D%E4%B9%A0/"/>
<id>http://yoursite.com/2020/01/16/遥感数字图像处理-复习/</id>
<published>2020-01-16T00:01:39.000Z</published>
<updated>2020-01-16T01:17:01.069Z</updated>
<content type="html"><![CDATA[<p><em>整理者:wangjw yangzx luoxw</em></p><h2 id="第8章-图像分类"><a class="markdownIt-Anchor" href="#第8章-图像分类"></a> 第8章 图像分类</h2><h3 id="遥感图像监督分类方法和非监督分类方法的概念及两者的区别"><a class="markdownIt-Anchor" href="#遥感图像监督分类方法和非监督分类方法的概念及两者的区别"></a> 遥感图像监督分类方法和非监督分类方法的概念及两者的区别?</h3><p>遥感图像的监督分类:在已知类别的训练场地上提取各类别训练样本,通过选择特征变量、确定判别函数或判别式(判别规则),进而把图像中的各个像元点划归到各个给定类的分类,这种分类方法又称为监督分类法或训练场地法。</p><p>非监督分类:在没有先验类别知识(训练场地)的情况下,根据图像本身的统计特征及自然点群的分布情况,无需事先知道各类地物的类别统计特征,也无需经过学习过程,一般只是提供少数阈值对分类过程加以部分控制来划分地物类别的分类处理,也叫做“边学习边分类法”。</p><p>监督分类需要训练样本,分类结果类别已知, 非监督分类无需训练样本,分类结果类别未知。</p><h3 id="遥感图像分类中描述相似性的统计量有哪些如何判别相似性"><a class="markdownIt-Anchor" href="#遥感图像分类中描述相似性的统计量有哪些如何判别相似性"></a> 遥感图像分类中描述相似性的统计量有哪些,如何判别相似性?</h3><pre><code> 像元 i 和像元 j 之间的相关系数像元 i 和像元 j 之间的相似系数像元 i 和像元 j 之间的欧几里德距离像元 i 和像元 j 之间的绝对距离马氏距离(1) 当用距离作为类相似度时,距离小,类相似度大;距离大,类相似度小。(2) 而用相关系数作为类相似度时,相关系数越大,类相似度越大,反之则小。(3) 分类准则要求在给定分类的前提下,使总的离差平方和为最小</code></pre><h3 id="动态聚类分类时类的分裂-合并及删除的准则"><a class="markdownIt-Anchor" href="#动态聚类分类时类的分裂-合并及删除的准则"></a> 动态聚类分类时类的分裂、合并及删除的准则</h3><pre><code>分裂条件:若已有的类数小于参数(预期的类数); 或者若某一类的像元数大于参数(一类中最大像元数);或者其均方差(标准差)超过了参数(最大标准差),则该类就要分裂。合并条件:一种是当两类之间的统计距离小于规定的阈值(最小类间距);另一种是当类的数目超过了规定的“最大分类数”; 取消当某一类中像元数目太少时,该类被取消,并入相邻的类。</code></pre><p></p><h3 id="bayes最大似然分类方法判别分类中的两个重要的统计量是什么"><a class="markdownIt-Anchor" href="#bayes最大似然分类方法判别分类中的两个重要的统计量是什么"></a> Bayes(最大似然分类方法)判别分类中的两个重要的统计量是什么?</h3><p>均值向量μg和协方差矩阵Σg</p><p>在Bayes分类中,各类总体的μg和Σg无法确切知道,因而往往由统计学中的参数估计取得μg和Σg 的值。</p><p>即利用各类的训练样本的统计特征来近似地估计各类总体的统计特性。</p><p>对于Bayes线性判别分类其协方差矩阵:</p><h3 id="特征提取与特征选择的概念"><a class="markdownIt-Anchor" href="#特征提取与特征选择的概念"></a> 特征提取与特征选择的概念</h3><pre><code>特征选择是从众多候选特征中按照某些原则挑选出参加运算的特征的过程。特征提取是针对特定的工作目的,使用一组算法从图像中计算或提取特征的过程。</code></pre><p>特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。特征的好坏对泛化性能有至关重要的影响。</p><p>特征选择</p><p>在特征变量数目较多的情况下,进行分类之前,需从依据地物在光谱、空间等特征空间中的特征,在多维特征变量中进行选择,取得具有良好分类效果的维数较少的几个特征变量,这种处理称为特征变量的选择。<br> <br>对于不同类别的模式,特征量值相差较大;而对于同类模式,则应有大体接近或相同的特征值。</p><p>对于某一类模式而言,特征量及特征值应能充分地表明该模式属于该类而不属于其它类别地主要根据。<br>各特征量之间互不相关或相关性很小</p><p>遥感图像计算机自动分类项目设计与规划应该明确的主要流程与内容。</p><pre><code>1) 预处理确定工作范围;几何校正;噪声处理;辐射校正;几何精校正;多源图像融合。2) 特征选取原则:可分性;可靠性;独立性;数量少;方法:光谱特征、纹理特征分析,各种波段变换、波段运算等。3) 分类。根据特征与分类对象的实际情况选择适当的分类方法。4) 分类后处理。处理分类结果中的不合理元素。5) 结果检验(评价)。对分类的精度与可靠性进行评价。6) 结果输出 </code></pre><h3 id="在遥感图像计算机自动分类处理过程中如何顾及训练样本的选择要求-地形因素影响-混合像元问题-特征变量提取及选择问题-空间信息的应用问题以及图像分类的后期处理问题来提高分类精度"><a class="markdownIt-Anchor" href="#在遥感图像计算机自动分类处理过程中如何顾及训练样本的选择要求-地形因素影响-混合像元问题-特征变量提取及选择问题-空间信息的应用问题以及图像分类的后期处理问题来提高分类精度"></a> 在遥感图像计算机自动分类处理过程中,如何顾及训练样本的选择要求、地形因素影响、混合像元问题、特征变量提取及选择问题、空间信息的应用问题以及图像分类的后期处理问题来提高分类精度?</h3><p>选择有代表性的训练样本,是分类能否取得良好效果地一个关键性问题。<br>用于监督分类地训练场地应该是光谱特征比较均一的地区,一般在图像显示中根据均一的色调估计只有一类地物<br>一类地物的训练场地可选取一块以上。<br>训练样本的数目至少能够满足建立分类用判别函数的要求,每类训练样本至少要有10~100个数据。</p><p>在遥感图像中,地形因素不仅会造成几何畸变,而且还会影响其亮度值。例如,同类地物由于所处山坡位置的不同,其阴坡和阳坡的光谱特性就有很大的差异,即同物异谱;如不同的地物由于地形的影响而具有相同的光谱特性,即同谱异物。</p><p>可以利用图像增强的多波段图像的比值处理来减弱地形的影响,但其比值图像并不能彻底消除地形的影响,而且当地形起伏太大时比值处理受到限制。<br>解决地形因素造成的“同物异谱”和“同谱异物”现象的方法:采用“同类多组法”来选取训练样本,在对图像进行分类时,应首先进行分组,然后再根据所属的类别进行合并。</p><p>目前进行混合像元分解的方法主要归纳为两类:<br>线性关系分解法,其依据是像元亮度的线性可加性;<br>模糊分解法。</p><p>遥感图像分类的原始特征变量就是波段图像的波段变量本身,它们是分类的主要依据<br>这些波段图像可经过一些变换(如比值变换、差值处理和K-L变换等)获得一系列新的特征变量,<br>加入与图像网格坐标相一致的其它非遥感变量,</p><p>这些变量与原始特征变量组成了一个维数很高的特征变量空间。维数太大,既会增加分类算法的复杂性和计算工作量,又会造成更多的混淆和不确定性。</p><p>因此在特征变量数目较多的情况下,进行分类之前,需从依据地物在光谱、空间等特征空间中的特征,在多维特征变量中进行选择,取得具有良好分类效果的维数较少的几个特征变量,这种处理称为特征变量的选择。</p><pre><code>特征变量选择的总体原则:对于不同类别的模式,特征量值相差较大;而对于同类模式,则应有大体接近或相同的特征值。 对于某一类模式而言,特征量及特征值应能充分地表明该模式属于该类而不属于其它类别地主要根据。 各特征量之间互不相关或相关性很小</code></pre><p>遥感图像的灰度是地物电磁波辐射特征反映,灰度值的大小除了与地物成分有关外,还与地物的表面结构以及地形的起伏有关<br>为了提高遥感图像的分类精度,必须要考虑图像中的空间信息和地形变化因素。<br>多波段遥感图像和空间信息 (纹理信息、高程数据等)的综合分类可以显著地提高遥感图像地分类精度和地物地识别能力。</p><p>分类图像中会出现一大片同类地物中夹杂着散点分布的异类地物的不一致现象,它们在分类图像上表现为噪声。可通过平滑处理来减少或消除类别噪声的影响。<br>对分类结果进行误差分析 ,随机抽查检验区以检验分类的精度和可靠性<br>当精度较差时,要进行改善:</p><pre><code> 1)重新选择训练样本,使训练样本更具代表性,并使分类类别数更加与实际相符; 2)对判别函数进行评价和选择,并对参加分类的变量或统计量进行选择。</code></pre><h3 id="决策树分类的概念与方法"><a class="markdownIt-Anchor" href="#决策树分类的概念与方法"></a> 决策树分类的概念与方法</h3><p>决策树分类:是一个典型的多级分类器,它由一系列二叉决策树构成,用于将像元归属 到相应的类别。每个决策树依据一个表达式将图像中的像元分为两类。每一个新生成的类别 又可以根据其他的表达式继续向下分类。可以根据需要定义决策树的节点,节点数量不受限 制。决策树的结果为不同的类别。可以使用来自不同来源或文件的数据共同生成一个决 策树分类器。也可以交互式地裁剪或编辑决策树,并对生成的决策树进行保存并将它应用于 其他数据集。</p><p>决策树分类的关键:</p><pre><code>1)基于光谱分析、纹理分析、图像变换等方法研究地物在多维空间中的特征,提取特征变量,选择特征,利用多个决策规则,建立决策边界,来解决复杂的分类问题,属于监督分类。2)决策规则必须视明确的、依据图像事先确定,但建立的决策模型往往不具备通用性,决策树相关规则和参数往往是依赖与图像。 </code></pre><h2 id="第7章-图像滤波"><a class="markdownIt-Anchor" href="#第7章-图像滤波"></a> 第7章 图像滤波</h2><h3 id="图像滤波的主要目的是什么主要有哪些方法"><a class="markdownIt-Anchor" href="#图像滤波的主要目的是什么主要有哪些方法"></a> 图像滤波的主要目的是什么?主要有哪些方法?</h3><pre><code> 图像滤波目的:从图像中提取、突出空间尺度信息,压抑或去除无关的信息。</code></pre><p>空间域滤波:计算方法是卷积运算(convolution ).</p><p>频率域滤波:空间域图像f(x,y)通过傅里叶变换为频率域图像F(u,v),然后选择合适的滤波器H(u,v)对F(u,v)的频谱域图像进行滤波(乘法运算),得到图像G(u,v),再傅里叶逆变换得到个g(x,y).</p><h3 id="均值滤波与中值滤波的方法及各自的特点异同"><a class="markdownIt-Anchor" href="#均值滤波与中值滤波的方法及各自的特点异同"></a> 均值滤波与中值滤波的方法及各自的特点异同。</h3><p>均值(平滑)滤波是低频增强的空间域滤波技术。它可以滤掉由于孤立的单点噪声而引起的灰度偏差。<br>:一般采用简单平均法进行,即求邻近像元点的平均亮度值:</p><p>算法简单 速度快 造成图像模糊 削弱边缘和细节信息 随领域的扩大而程度严重</p><p>中值滤波是将每个像元在以其为中心的邻域内取中间亮度值来代替该像元值,以达到去尖锐“噪声”和平滑图像目的<br>部分不变性 削弱随机干扰和脉冲干扰 非线性</p><p>中值滤波的输出与输入噪声的概率密度有关<br>中值滤波对于随机噪声的抑制比均值滤波稍微差一点, 对于脉冲干扰的椒盐噪声非常有效</p><h3 id="什么是图像锐化图像锐化有几种方法"><a class="markdownIt-Anchor" href="#什么是图像锐化图像锐化有几种方法"></a> 什么是图像锐化?图像锐化有几种方法?</h3><p>由于图像模糊的实质是图像受到平均或积分运算造成的,所以为了把图像中任何方向伸 展的边缘和模糊的轮廓变得清晰,可以对图像进行逆运算,如微分运算,从而使图像清晰 化,这个过程称为图像锐化。</p><pre><code>线性锐化滤波器梯度法Prewitt和Sobel梯度罗伯特梯度拉普拉斯算子canny算子定向检测</code></pre><h3 id="拉普拉斯算子-roberts梯度与sobel梯度的模板滤波核的结构他们对图像滤波的作用"><a class="markdownIt-Anchor" href="#拉普拉斯算子-roberts梯度与sobel梯度的模板滤波核的结构他们对图像滤波的作用"></a> 拉普拉斯算子、Roberts梯度与Sobel梯度的模板(滤波核)的结构?他们对图像滤波的作用?</h3><p>拉普拉斯算子法:<br>(1) 边缘增强;<br>(2)消除图像上因扩散作用产生的模糊,使图像清晰化。</p><p>罗伯特 在于用交叉的方法检测出像元与其邻域在上下之间或左右之间或斜方向之间的差异,最终产生一个梯度影像,达到提取边缘信息的目的。</p><p>sobel 对边缘的检测更加精确</p><h3 id="定向检测常用的模板有哪些"><a class="markdownIt-Anchor" href="#定向检测常用的模板有哪些"></a> 定向检测常用的模板有哪些?</h3><p>检测垂直边界时</p><p>检测水平边界时:</p><p>检测对角线边界时:</p><h3 id="频率域滤波器有哪些各有何特点"><a class="markdownIt-Anchor" href="#频率域滤波器有哪些各有何特点"></a> 频率域滤波器有哪些?各有何特点?</h3><p>①低通滤波器,用来保留图像中的低频成分,滤除图像中的高频成分。由于噪声多是高频成分,低通滤波应用较多。</p><p>②高通滤波器,与低通滤波器相反,用来保留高频成分(边缘信息)。</p><p>③带通滤波器,用来保留特定频率范围的信息。</p><p>④带阻滤波器,用来阻止特定频率范围的信息。</p><p>⑤自定义滤波器,根据频率域图像中的频率分布,人为定义,应用灵活。</p><h3 id="常用高通低通滤波器"><a class="markdownIt-Anchor" href="#常用高通低通滤波器"></a> 常用高通低通滤波器</h3><p>理想滤波器<br>低通 边缘损失 模糊<br>高通 边缘抖动</p><p>butterworth滤波器<br>低通 连续衰减 边缘模糊程度减低<br>高通 锐化效果较好 抖动不明显 计算复杂</p><p>指数滤波器 比butterworth稍微差一些</p><p>梯形滤波器<br>低 介于理想和指数之间<br>高 计算简单</p><p>高斯滤波器</p><p>同态滤波</p><h2 id="第六章-图像变换-multispectral-transformations-of-image-data"><a class="markdownIt-Anchor" href="#第六章-图像变换-multispectral-transformations-of-image-data"></a> 第六章 图像变换 Multispectral Transformations of Image Data</h2><h3 id="1-傅立叶变换基本概念和作用"><a class="markdownIt-Anchor" href="#1-傅立叶变换基本概念和作用"></a> 1. 傅立叶变换基本概念和作用。</h3><p>傅立叶变换是一种正交变换。它可将傅立叶变换前的空间域中的复杂的卷积运算转化为傅立叶变换后的频率域的简单的乘积运算,同时,它还可以在频率域中简单而有效地实现增强处理和进行特征抽取,故而在图像处理中也得到了广泛的应用。</p><h3 id="2-什么是主成分变换the-principal-components-transformation变换的目的-主成分变换的性质有哪些"><a class="markdownIt-Anchor" href="#2-什么是主成分变换the-principal-components-transformation变换的目的-主成分变换的性质有哪些"></a> 2. 什么是主成分变换(The Principal Components Transformation)?变换的目的。主成分变换的性质有哪些?</h3><p>K-L变换:多维(多波段)正交线性变换。</p><p>遥感图象特点:各波段间有很高的相关性,带来数据的多余和重复。</p><p>主成分变换的概念: 主成分变换是一种正交线性变换, 当T是一个正交矩阵,且由图像X的协方差矩阵S的特征向量组成,则Y=TX为主成分变换。</p><p>变换后的Y矩阵中每一行矢量为K-L变换的一个主成分。</p><p>变换的目的:把原来多波段图像中的有用信息集中到数 量尽可能少的新的主成分图像中,并使各主成分图像间互不相关,压缩了数据,增强了信息。</p><p>K-L变换的性质和特点</p><pre><code>1、K-L变换前后方差总和不变,只是不等量的 再分配到 新的主成分图像中。2、第一主成分信息量最大,其余各主成分的方差依次减少。 3、变换后各主成分间的相关系数为零。(S(Y)为一对角阵)4、第一主成分相当于各波段的加权和,反映地物总的反射 强度。其余各主成分相当于不同波段的加权差值图像。5、当计算S矩阵的图像是有选择时,此时得到T用于整个 图像的增强了主要的研究对象。6、可以通过分组波段K-L变换,各组中选取一个适当的主成分参加假彩色合成,增强研究对象。</code></pre><p>3.结合特征向量矩阵和地物的光谱特征,分析各主成分所能增强的信息。</p><pre><code>特征向量 波段 1 波段 2 波段 3 波段 4主成分 1 0.284700 0.484969 0.578986 0.590362主成分 2 -0.229177 -0.321328 -0.440399 0.806396主成分 3 -0.707674 -0.334365 0.622389 0.005551主成分 4 -0.604667 0.741454 -0.288888 -0.034167</code></pre><p>第一主成分包含了总方差的绝大部分,相当于原来各波段的加权和,从特征<br>向量上可以看出来,第一行全为正值。第一主成分降低了噪声,线性特征增强,<br>突出了城市人工地物。</p><p>第二主成分对应特征向量第二行,在波段 4 上的权重最大,而波段 4 是近红<br>外波段,植被的反射率较大,因此第二主成分图像,植被的亮度增强,能够突出<br>植被信息。</p><p>第三主成分在波段三上的权重最大,波段三上,裸土的灰度值较大,因此突<br>出裸土信息。</p><p>第四主成分在波段二上权重最大,水体信息高亮显示,但同时噪声增多。</p><h3 id="4-应用主成分变换进行不同分辨率图像的融合的步骤或流程以及应该注意的问题"><a class="markdownIt-Anchor" href="#4-应用主成分变换进行不同分辨率图像的融合的步骤或流程以及应该注意的问题"></a> 4. 应用主成分变换进行不同分辨率图像的融合的步骤或流程以及应该注意的问题。</h3><p>1)将多光谱的多个波段先做主成分变换;<br>2)将分辨率为 4m 的图像通过重采样的方法,将其分辨率改为 1m,裁剪使<br>其与高分辨率影像的像元数相同,为后边的融合做准备。<br>3)将高分辨率全色影像与第一主分量进行直方图匹配,使之与第一主分量有<br>相同的均值与方 差;<br>4)再将匹配后的高分辨率影像代替第一主分量(与其它各主成分合成为一<br>个文件);<br>5)进行主成分逆变换,得到空间分辨率提高的多光谱影像的融合影像。</p><h3 id="5对mss及tm数据缨帽变换后各分量的含义"><a class="markdownIt-Anchor" href="#5对mss及tm数据缨帽变换后各分量的含义"></a> 5.对MSS及TM数据缨帽变换后各分量的含义。</h3><p>缨帽变换是Kauth和Thomas通过分析陆地卫星MSS图像反映农作物和植被生长过程的数据结构后提出的一种经验性的多波段图像的正交线性变换,又称K-T变换.<br>MSS:</p><pre><code>亮度分量:主要反映了土壤反射率变化的信息;绿度分量:主要反映了地面植物的绿度;黄度分量:主要反映了植物的枯萎程度;其他:没有实际意义</code></pre><p>TM<br>K-T变换的物理意义:</p><pre><code>1:亮度分量;2:绿度分量;3:湿度</code></pre><h3 id="6-什么是归一化植被指数ndvi从土壤-水体和植被的光谱特征说明为什么ndvi能够突出植被信息"><a class="markdownIt-Anchor" href="#6-什么是归一化植被指数ndvi从土壤-水体和植被的光谱特征说明为什么ndvi能够突出植被信息"></a> 6. 什么是归一化植被指数(NDVI)?从土壤、水体和植被的光谱特征说明为什么NDVI能够突出植被信息?</h3><p>该运算常用于突出遥感影像中的植被特征、提取植被类别或估算植被生物量,这种算法的结果称为植被指数NDVI。</p><pre><code>(近红外—红)/(近红外+红)=NDVI (NIR-R)/(NIR+R)</code></pre><p>对于由绿色植物叶肉组织引起的近红外强反射和由叶绿素引起的红光吸收,使其NIR与R值有较大的差异, 而对于无植被的地面因不显示这种特殊的光谱响应则NDVI值低,色调较深。</p><h3 id="7-图像的比值运算的作用及应注意的问题"><a class="markdownIt-Anchor" href="#7-图像的比值运算的作用及应注意的问题"></a> 7. 图像的比值运算的作用及应注意的问题。</h3><p>两幅同样行、列数的图像,对应像元的亮度值相除(除数不为o)就是比值运算。<br>如果比值运算中作为分母的波段值很小,比值运算可能会增加图像的噪声。计算前可以对图像进行滤波处理。</p><h3 id="8-hsi-变换的概念-应用hsi变换进行不同分辨率图像的融合的步骤或流程"><a class="markdownIt-Anchor" href="#8-hsi-变换的概念-应用hsi变换进行不同分辨率图像的融合的步骤或流程"></a> 8. HSI 变换的概念。应用HSI变换进行不同分辨率图像的融合的步骤或流程。</h3><p>HIS变换: RGB空间与HIS空间之间的变换</p><p>色调(颜色的类别,如红、绿、蓝等,记为 H)、<br>饱和度(颜色的纯度,亦即浓淡程度,记为 S)<br>亮度(人眼感受到的颜色的明亮程度,记为 I)</p><p>亮度I主要反映地物辐射总的能量及其空间分布, 即表现为几何特征;<br>H、S则主要反映地物的光谱信息。</p><p>图像的分辨率取决于I成分,即使H和S的分辨率低,对合成显示的图像也没有什么影响。</p><p>可将具有最高分辨率的图像当作I成分,次高分辨率的图像当作H成分,最低分辩率的图像当作S成分,然后作反变换,求出R,G,B进行合成显示;</p><h2 id="第五章-图像校正"><a class="markdownIt-Anchor" href="#第五章-图像校正"></a> 第五章 图像校正</h2><h3 id="了解辐射传输理论理解传感器获取的电磁辐射的三部分"><a class="markdownIt-Anchor" href="#了解辐射传输理论理解传感器获取的电磁辐射的三部分"></a> 了解辐射传输理论,理解传感器获取的电磁辐射的三部分。</h3><p>辐射传输是指电磁波在受到大气影像的同时在大气中传播的过程。</p><p>三部分:传感器所能接收的太阳光包括三部分——</p><pre><code>太阳光直射到地表后地表的反射辐射、被大气散射辐射的太阳光在地表的反射辐射、大气的上行散射辐射 </code></pre><p>辐射误差(畸变)的概念及引起辐射误差的主要原因。</p><p>影响亮度值两个物理量:太阳辐射照射到地面的辐射强度Irradiance、地物的光谱反射率Reflectence。</p><p>当太阳辐射相同时,图像上像元亮度值的差异直接反映 了地物目标光谱反射率的差异。</p><p>辐射强度值还受到其他因素的影响而发生改变。这一改变的部分就是需要校正的部分,故称为辐射畸变。</p><p>引起辐射畸变原因:<br>传感器仪器本身产生的误差、</p><p>1)光学摄影机引起的辐射误差<br>光学畸变、镜头中心和边缘透射率不一致<br>2)光电扫描仪引起的辐射误差<br>光电测量和转换的增益gain 和漂移offset</p><p>大气对辐射的影响以及太阳辐射。大气散射和吸收引起的辐射误差</p><p>散射的影响</p><p>(1)使原传播方向的辐射强度减弱,而增加向其他各方向的辐射。<br>(2)增加了信号中的噪声成分,造成遥感图像的质量下降。</p><h3 id="大气散射有哪三种分别说明它们的散射特点-微波为何能够全天候全天时获取数据"><a class="markdownIt-Anchor" href="#大气散射有哪三种分别说明它们的散射特点-微波为何能够全天候全天时获取数据"></a> 大气散射有哪三种?分别说明它们的散射特点。微波为何能够全天候全天时获取数据?</h3><p>1).瑞利散射 Rayleigh scattering</p><p>当大气中粒子的直径比波长小得多时发生的散射 (如氮、二氧化碳,臭氧和氧分子 )<br>对可见光而言,瑞利散射现象非常明显,因为这种散射的特点是散射强度与<br>波长的四次方成反比,即波长越长,散射越弱。——蓝色晴空</p><p>2).米氏散射 Mie scattering</p><pre><code>(1)当大气中粒子的直径与辐射的波长相当时发生的散射(2) 这种散射主要由大气中的微粒,如烟、尘埃、小水滴及气溶胶等引起。(3)米氏散射的散射强度与波长的二次方成反比(4)云雾的粒子大小与红外波长(o.76—15um)接近,所以云雾对红外线的散射主要是米氏散射。潮湿天气米氏散射影响较大。</code></pre><p>3).无选择性散射 non-selective scattering</p><p>当大气中粒子的直径比波长大得多时发生的散射。</p><p>这种散射的特点是散射强度与波长无关,也就是说,在符合无选择性散射的<br>条件的波段中,任何波长的散射强度相同。如:云雾中水滴的粒子直径就比可见<br>光波段波长大很多——云雾呈白色</p><p>微波为何能够全天候全天时获取数据:对微波来说,微波波长比粒子的直径<br>大得多,则又属于瑞利散射的类型,散射强度与波长四次方成反比,波长越长散<br>射强度越小,所以微波才可能有最小散射,最大透射,而被称为具有穿云透雾的<br>能力。</p><h3 id="大气校正的概念-理解掌握大气粗校正的概念直方图最小值法的基本原理与方法"><a class="markdownIt-Anchor" href="#大气校正的概念-理解掌握大气粗校正的概念直方图最小值法的基本原理与方法"></a> 大气校正的概念。理解掌握大气粗校正的概念,直方图最小值法的基本原理与方法。</h3><p>消除由大气散射引起的辐射误差的处理过程称为大气校正。</p><p>大气粗校正:通过比较简便的方法去掉程辐射度(Lp),从而改善图像质量。</p><p>程辐射也称路径辐射,指太阳辐射在传输过程中,大气中的各组分及气溶胶微粒散射后直接到达传感器的辐射,即传感器接收的来自大气散射部分的电磁波辐射。程辐射增加了到达传感器的辐射能,但与所探测的地面信息无关。</p><p>一般来说由于程辐射度主要来自瑞利散射和米氏散射(尘埃、小水滴及气溶胶等影响),其散射强度随波长的增大而减小,到红外波段也有可能接近于零。</p><p>程辐射(Path Radiance)在同一幅图像的有限面积内是一个常数,其值的大小只与波<br>段有关。</p><h3 id="直方图最小值法暗像元法"><a class="markdownIt-Anchor" href="#直方图最小值法暗像元法"></a> 直方图最小值法(暗像元法):</h3><p>首先确定该图像上确有辐射亮度或反射亮度应为零的地区,则亮度最小值必<br>定是这一地区大气影响的程辐射度增值。<br>校正时,将每一波段中每个像元的亮度值都减去本波段的最小值</p><p>例如,地形起伏地区山的阴影处,反射率极低的深海水体处等,这时在图像中对应位置的像元亮度值应为0。实测表明,这些位置上的像元亮度不为零。这个值就应该是大气散射导致的程辐射度值。</p><p>经验线大气精校正方法,对已知数据的要求。与粗校正结果的差异。</p><p>DN = kr + b</p><p>经验线法对定标点有如下要求:</p><pre><code>(1) 要选择尽可能各向同性的均一地物,且面积足够大。(2) 地物在光谱上要跨越尽可能宽的反射光谱波段,明暗目标之间要有足够的差异。(3) 要尽可能地与研究区域保持同一海拔高度。</code></pre><p>精校正结果更好,粗校正只考虑了程辐射(b)。</p><h3 id="图像几何误差的主要来源"><a class="markdownIt-Anchor" href="#图像几何误差的主要来源"></a> 图像几何误差的主要来源</h3><p>遥感平台位置和运动状态变化的影响;<br>地形起伏的影响;<br>地球表面曲率的影响;<br>大气折射的影响;<br>地球自转的影响。</p><h3 id="几何精校正的基本原理和操作步骤"><a class="markdownIt-Anchor" href="#几何精校正的基本原理和操作步骤"></a> 几何精校正的基本原理和操作步骤</h3><p>校正前的图像,由于某种几何畸变,图像中像元点间所对应的地面距离并不相等。<br>校正后的图像是由等间距的网格点组成的,且以地面为标准,符合某种投影的均匀分布,图像中格网的交点可以看作是像元的中心;</p><p>几何精校正的基本原理是回避成像的空间几何过程,直接利用地面控制点数 据对遥感图像的几何畸变本身进行数学模拟,并且认为遥感图像的总体畸变可以 看作是挤压、扭曲、缩放、偏移以及更高次的基本变形综合作用的结果。</p><p>操作步骤:准备工作、输入原始数字图像、确定工作范围、选择地面控制点、 选择地图投影、匹配地面控制点和像素位置、评估纠正精度、坐标变换、重采样、 输出纠正后图像。</p><h3 id="为何要对遥感图像进行几何精校正图像几何校正的方案有哪些几何校正控制点来源有哪些方法"><a class="markdownIt-Anchor" href="#为何要对遥感图像进行几何精校正图像几何校正的方案有哪些几何校正控制点来源有哪些方法"></a> 为何要对遥感图像进行几何精校正?图像几何校正的方案有哪些?几何校正控制点来源有哪些方法?</h3><p>为何?<br>(1)遥感调查分析结果:一般是要求能满足量测和定位要求的各类专题地图。<br>(2)利用多源数据进行计算机自动分类、地物特征的变化监测等应用处理时,<br>必须保证不同图像间的几何一致性。<br>(3)利用遥感图像进行地形图测图或更新,也是遥感的致力方向之一,它对遥<br>感图像的几何纠正提出了更严格的要求。</p><p>几何校正的纠正变换方案有:直接法(正算)和间接法(反算),一般采用<br>间接法。</p><p>控制点来源:大比例尺地形图,遥感图像(如航空像片),GPS 测量获取的控<br>制点坐标。</p><p>几何精校正对控制点的要求(数量和位置)。</p><p>(1)数目确定</p><p>控制点数目的最低限是按未知系数的多少来确定的。</p><p>n次多项式,控制点的最少数目为(n十1)(n十2)/2。 2-6 3-10</p><p>实际工作中,在条件允许的情况下,控制点数的选取都要大于最低数很多,一般要20-25</p><p>(2)选取原则<br>控制点的选择要以配准对象为依据。以地面坐标为匹配标准的,叫做地面控制点。有时也用地图作地面控制点标准,或用遥感图像(如用航空像片)作为控制点标准。无论用哪一种坐标系,关键在于建立待匹配的两种坐标系的对应点关系。</p><pre><code> 控制点应选取图像上易分辨且较精细的特征点,通过目视方法辨别. 交叉点、河流弯曲或分叉处、海岸线弯曲处、湖泊边缘、飞机场、城廓边缘等。 特征变化大的地区应多选些。 图像边缘部分一定要选取控制点,以避免外推。 尽可能满幅均匀选取,特征实在不明显的大面积区域(如沙漠),可用求延长线交点的办法来弥补,但应尽可能避免这样做.</code></pre><h3 id="什么是像素图像重采样像素图像重采样的方法有哪些它们各有何特点"><a class="markdownIt-Anchor" href="#什么是像素图像重采样像素图像重采样的方法有哪些它们各有何特点"></a> 什么是像素(图像重采样)?像素(图像)重采样的方法有哪些?它们各有何特点?</h3><p>待纠正的数字图像本身属于规则的离散采样,非采样点上的灰度值需要通过采样点(已知像素)内插来获取,即重采样。</p><ol><li>最邻近点法重采样:<br>特点: 方法简单易用,计算量小,在几何位置上精度为0.5像元,但处理后图像的亮度具有不连续性,从而影响了精确度。</li></ol><p>2)双线性内插法重采样<br>特点:图像亮度连续,几何上较精确,但具有低通滤波的性质,使图像变得模糊。</p><ol start="3"><li>三次卷积内插法<br>特点:图像亮度连续,几何精度高,较好的保留高频部分。 但计算量大。</li></ol><h2 id="第四章"><a class="markdownIt-Anchor" href="#第四章"></a> 第四章</h2><h3 id="为什么要进行彩色合成有哪些主要的合成方法"><a class="markdownIt-Anchor" href="#为什么要进行彩色合成有哪些主要的合成方法"></a> 为什么要进行彩色合成?有哪些主要的合成方法?</h3><p>人眼对黑白密度的分辨能力有限,而对彩色图像的分辨能力则要高得多。通<br>过对多波段图像进行彩色合成,可以充分利用色彩在遥感图像判读中的优势。</p><p>真彩色</p><pre><code>R —— R G —— G B —— B假彩色R ——NIR; G ——R; B ——GSimulate Natural Color Composition 模拟真彩色R ——短波红外波段; G ——近红外波段; B ——红色波段 </code></pre><h3 id="图像拉伸有哪些方法"><a class="markdownIt-Anchor" href="#图像拉伸有哪些方法"></a> 图像拉伸有哪些方法?</h3><p>1)灰度拉伸:线性拉伸、非线性拉伸、多波段拉伸。</p><p>2)直方图均衡化</p><p>3)直方图规定化</p><h3 id="什么是直方图规定化其主要作用和应用什么"><a class="markdownIt-Anchor" href="#什么是直方图规定化其主要作用和应用什么"></a> 什么是直方图规定化?其主要作用和应用什么?</h3><p>直方图规定化,或直方图匹配,就是将原始图像的直方图调整到一事先规定<br>或参考图像的直方图形状(如正态分布),并以此来对原始图像的特定灰度范围进<br>行增强处理,使两幅图像的亮度变化规律尽可能相似。</p><p>直方图规定化的作用:使原始图像具有特定的直方图的图像,以便能够对图<br>像中的某些灰度级加以增强。</p><p>应用:常用于遥感图像的镶嵌及遥感应用(如动态变化监测)的图像预处理<br>中,直方图匹配可以部分消除太阳高度角和大气影响造成的相邻图像的色调差异。<br>另外,也可以匹配到指定的直方图形状。</p><h3 id="什么是直方图均衡化-其主要作用是什么"><a class="markdownIt-Anchor" href="#什么是直方图均衡化-其主要作用是什么"></a> 什么是直方图均衡化? 其主要作用是什么?</h3><p>直方图均衡化是使变换后图像灰度值的概率密度为均匀分布的映射变换方<br>法,概率密度函数曲线变为一条平坦的直线。<br>通过直方图均衡化,直方图上灰度分布较密的部分被拉伸,灰度分布稀疏的<br>部分被压缩,使图像对比度在总体上得到增强,突出了细节信息。</p><h2 id="第三章-遥感数字图像的表示和统计描述"><a class="markdownIt-Anchor" href="#第三章-遥感数字图像的表示和统计描述"></a> 第三章 遥感数字图像的表示和统计描述</h2><h3 id="遥感数字图像的概念"><a class="markdownIt-Anchor" href="#遥感数字图像的概念"></a> 遥感数字图像的概念</h3><p>遥感图像------通过检测和度量地物的电磁波辐射能所得到的图像。</p><p>遥感数字图像是以数字形式表示的遥感影像。<br>遥感数字图像最基本的单位是像素。像素是成像过程中的采样点,也是计算机图像处理的最小单元。</p><p>遥感数字图像是以数字形式记录的二维遥感信息,即其内容是通过遥感手段获得的,通常是地物不同波段的电磁波谱信息。</p><p>其中的像素值称为亮度值(或称为灰度值、DN值)</p><p>理解遥感图像模型及字符的含义</p><pre><code>L(x,y;t,λ,p)=[1 - β * (x, y;t,λ,p)] * E(λ) + β(x,y; t,λ,p) * I (x, y;t,λ)β(x,y;t,λ,p)为目标的波谱反射率 ,E(λ)是黑体的波谱发射本领 ,I(x,y;t,λ)为目标上的波谱辐照度, p表示极化(偏振)方向, λ波长 ,t为摄像时间,</code></pre><p>对可见光、近红外波段: 只考虑吸收<br>L(x,y;t,λ)=β(x,y; t,λ) ×I(x,y;t,λ)</p><p>对热红外波段,反射和发射都需要考虑,同时,摄像时间是一个重要因素,夜晚摄取的主要是地物的热发射;白天的反射部分处于不同的波段,一般是通过设计不同的传感探测器以获取不同的图像。</p><p>对某一幅图像:t,λ,p为常数,此时遥感图像函数:<br>以 f(x,y) 代替 L(x,y;t,λ,p)<br>f(x,y)=β(x,y)×I(x,y)</p><h3 id="遥感图像的单波段-多波段统计特征有哪些各有何作用特别是图像灰度方差的概念-多波段间的相关系数的概念-特征向量矩阵在主成分分析中应用的概念"><a class="markdownIt-Anchor" href="#遥感图像的单波段-多波段统计特征有哪些各有何作用特别是图像灰度方差的概念-多波段间的相关系数的概念-特征向量矩阵在主成分分析中应用的概念"></a> 遥感图像的(单波段、多波段)统计特征有哪些?各有何作用?特别是图像灰度方差的概念、多波段间的相关系数的概念、特征向量矩阵在主成分分析中应用的概念。</h3><p>图像灰度均值</p><p>图像灰度中值</p><p>图像灰度众数:图像中出现最多次数的灰度值,它是一幅图像中分布较广的地物类型反射能量的反映。</p><p>图像灰度方差: 方差反映各像元灰度值与图像平均灰度值的总的离散程度。它是衡量一幅图像信息量大小的重要度量,是图像统计分析中的最重要的统计量</p><p>图像灰度数值域<br>它反映了图像灰度值的变化程度,从而间接地反映了图像的信息量。</p><p>图像灰度反差 反差可以反映图像的显示效果和可分辨性</p><p>图像的直方图<br>直方图是图像灰度分布的直观描述,能够反映图像的信息量及分布特征。<br>在遥感数字图像处理中,可用通过修改图像的直方图来增强图像中的目标信息。</p><p>多波段间的统计特征<br>遥感图像处理往往是多波段数据的处理,处理中不仅要考虑单个波段图像的统计特征,也要考虑波段间存在的关联。</p><p>协方差</p><p>相关系数:相关系数是描述波段图像间的相关程度的统计量,反映了两个波段图像所包含信息的重叠程度。</p><p>特征向量矩阵S,由矩阵A的所有线性无关的特征向量按列排列组成的矩阵。</p><p>通常经过特征向量变换下的数据被称为变量的主成分,当前m个主成分累计的方差贡献率达到一个较高的百分数(如85%以上)的话,就保留着这m个主成分的数据。实现了对数据进行降维的目的。整个主成分分析的算法原理也就是这个。</p><p>掌握灰度共生矩阵的统计计算方法,图像纹理计算思路。</p><p>灰度共生矩阵:<br>又称为灰度联合概率矩阵法,它表达了图像中某像元与其周边相邻像元间灰度的空间相关性。 (详见书p60)</p><h3 id="图像纹理的计算思路"><a class="markdownIt-Anchor" href="#图像纹理的计算思路"></a> 图像纹理的计算思路</h3><p>统计方法:利用图像的统计特征求出特征值,实现对纹理的描述。主要包括自相关系数,灰度共生矩阵,灰度级行程长等等</p><p>结构方法:纹理由一系列纹理基元有规律的排列组成,且纹理基元可以分离出来。结构方法力图找到纹理基元,并以基元的特征和其排列规则作为纹理描述的特征进行纹理分割,一般只用于规则性较强的人工纹理</p><h3 id="卷积计算方法"><a class="markdownIt-Anchor" href="#卷积计算方法"></a> 卷积计算方法。</h3><ol><li>从图像左上角开始开一与模板同样大小的活动窗口,图像窗口与模板像<br>元的亮度值对应相乘再相加。</li><li>将计算结果 r(i,J)放在窗口中心的像元位置,成为新像元的灰度值。</li><li>然后活动窗口向右移动一个像元,做同样的运算,仍旧把计算结果放在<br>移动后的窗口中心位置上。</li><li>依次进行,逐行扫描,直到全幅图像扫描一遍结束,则新图像生成。</li></ol><h2 id="第2章"><a class="markdownIt-Anchor" href="#第2章"></a> 第2章</h2><h3 id="电磁波谱的概念-大气窗口的概念"><a class="markdownIt-Anchor" href="#电磁波谱的概念-大气窗口的概念"></a> 电磁波谱的概念、大气窗口的概念</h3><p>按电磁波在真空中传播的波长或频率,递增或递减排列,则构成了电磁波谱。<br>电磁波通过大气层较少被反射、吸收和散射,而那些透射率高的波段称为大气窗口。</p><p>遥感技术应用的主要波谱段波长范围?掌握常用波段的主要作用。</p><pre><code>蓝色 450-500nm 水体 土地利用 植被 泥沙绿色 500-600 健康植被红色 600-700 叶绿素吸收的植被判别全色 500-750 制图 土地利用 立体相片反射红外 750-900 生物量 作物判别 土壤和作物 陆地和水域的边界中红外 1500-1750 植物 干旱 云 雪和冰的识别中红外 2000-2350 地质学应用 岩石热红外 10000-12500 相对温度 植被分类 汗水连研究微波-短波 积雪 雪深 植物含水量微博-长波 融雪 土壤含水量 水域和陆地边界</code></pre><h3 id="作图并理解植被-水体-土壤等地物的光谱特征"><a class="markdownIt-Anchor" href="#作图并理解植被-水体-土壤等地物的光谱特征"></a> 作图并理解植被、水体、土壤等地物的光谱特征</h3><p>植被 0.76(54) 1.4 1.9 2.7</p><p>1)对绿光(0.55)有一小的反射峰值,反射率大致为20%,这是绿色植物呈现绿色<br>的原因。注意这里也正是太阳光的光能峰值。<br>2)在红光处(0.68)有一吸收谷,这是光合作用吸收谷。注意此处太阳光能仍很大,若吸收谷减小,则植被发黄、红。3)在0.7<sub>1.4与1.5</sub>1.9有很高红外反射峰,反射率可高达70%以上,这两峰与前边红光波谷是植被光谱的特征。这第一峰波长段还处在太阳光能波谱中主要能量分布区<br>(0.2~1.4)占有全部太阳光能量90.8%,这是遥感识别植被并判断植被状态的主要依<br>据。<br>4)在1.45至1.95<br>有两处吸收谷,表明植被中水分含量。5)不同种类植物反射光谱曲线的变化趋势相同,而植物与其它地物的反射光谱曲线显著不同,这是遥感可以估测生物量的基础。<br>6)植物叶片重叠时,反射光能量在可见光部分几乎不变,而在红外却可增加20~40%。这是因为红外光可透过叶片,又经下层叶片重复反射。叶片重叠反映作物长势旺盛,生物量高。<br>7)植物叶片可见光区反射率有显著的方向性,这是因为植物叶片反射(散射)不是纯粹的朗伯散射,还有方向性。而在红外区方向性就不显著,这是因为红外光透射性好,透射后重复反射打扰了方向性。</p><p>水体</p><p>水体的反射主要在蓝绿光波段,其他波段吸收率很强,特别在近红外、中红外波段有很强的吸收带,反射率几乎为零。水的光谱特征主要是由水本身的物质组成决定,</p><p>土壤</p><p>自然状态下土壤表面的反射率没有明显的峰值和谷值.土壤的反射光谱特征主要受到土壤中的原生矿物和次生矿物、土壤水分含量、土壤有机质、铁含量、土壤质地等因素的影响</p><h3 id="研究地物光谱特征的意义"><a class="markdownIt-Anchor" href="#研究地物光谱特征的意义"></a> 研究地物光谱特征的意义?</h3><p>研究地物光谱特征的意义:<br>只有充分掌握遥感对象的光谱特性,才能一方面为传感器设计提供最佳波段选择(所谓最佳波段,就是最能识别或区分所感兴趣地物的波长范围),同时,能为遥感图像解译和计算机自动识别分类提供依据。</p><h3 id="何为地物光谱特征的时间效应和空间效应遥感图像的同物异谱及同谱异物现象"><a class="markdownIt-Anchor" href="#何为地物光谱特征的时间效应和空间效应遥感图像的同物异谱及同谱异物现象"></a> 何为地物光谱特征的时间效应和空间效应?遥感图像的同物异谱及同谱异物现象。</h3><p>时间效应是指同一地点的相同地物,其光谱特征会随时间而产生一定的变化, 这种由于时间推移而导致的地物电磁波谱特征的变化,称为地物波谱的时间效应。</p><p>空间效应是指在同一时刻,同一类地物由于其所处的地理位置不同,其光谱 特征可能存在一定的差异,这种由于空间位置不同而导致同类地物之间波谱特征 的变化,叫做地物光谱特征的空间效应。</p><p>时间效应和空间效应通常会引起遥感数据的同物异谱、同谱异物的现象 。</p><p>同物异谱:在相同的地物上,由于周围环境、病虫害或者放射性物质等影响,造成的相同的物种但是其光谱曲线不同。<br>同谱异物:在某一谱段区,两个不同地物可能会呈现相同的谱线特征。</p><h3 id="传感器的辐射分辨率-光谱分辨率-空间分辨率-时间分辨率的定义"><a class="markdownIt-Anchor" href="#传感器的辐射分辨率-光谱分辨率-空间分辨率-时间分辨率的定义"></a> 传感器的辐射分辨率、光谱分辨率、空间分辨率、时间分辨率的定义。</h3><p>辐射分辨率是指传感器接收波谱信号时,能分辨的最小辐射度差。在遥感图<br>像上表现为每一像元的辐射量化级。</p><p>光谱分辨率:指传感器在接收目标辐射的波谱时能分辨的最小波长间隔。间<br>隔愈小,分辨率愈高。</p><p>遥感图像的空间分辨率(Spatial resolution):指像素所代表的地面范围的大<br>小,即扫描仪的瞬时视场、遥感器探测单元的大小或地面物体能分辨的最小单元。</p><p>时间分辨率——指传感器对同一地点进行遥感采样的时间间隔,即采样的时<br>间频率,也称重访周期。</p><h3 id="遥感图像的空间分辨率与地图比例尺的关系"><a class="markdownIt-Anchor" href="#遥感图像的空间分辨率与地图比例尺的关系"></a> 遥感图像的空间分辨率与地图比例尺的关系。</h3><p>Suggested maximum scales of photographic products as a function of effective ground pixel size (based on 0.1 mm printed pixel)</p><p>建议的摄影产品最大比例与有效地面像素大小的函数(基于0.1毫米打印像素)</p><h3 id="遥感图像的类型有哪些常用数据格式有哪些"><a class="markdownIt-Anchor" href="#遥感图像的类型有哪些常用数据格式有哪些"></a> 遥感图像的类型有哪些?常用数据格式有哪些?</h3><p>遥感图像类型有:主动遥感、被动遥感;多光谱、髙光谱;髙空间分辨率、</p><p>低空间分辨率;航空、航天等遥感图像。</p><p>常用数据格式有三种: BSQ(Band sequential)数据格式; BIP(Band<br>interleaved by pixel)数据格式; BIL(Band interleaved by line)数据格<br>式。</p><h2 id="第一章"><a class="markdownIt-Anchor" href="#第一章"></a> 第一章</h2><h3 id="1-遥感的定义"><a class="markdownIt-Anchor" href="#1-遥感的定义"></a> 1 .遥感的定义</h3><p>是一种应用探测仪器远离目标,从远处把目标的电磁波特征记录下来,通过非直接接触而感知、判定、测量并分析目标性质,其空间展布、类型及其数量的综合性探测技术。</p><p>遥感的基本原理:对遥感图像数据的DN值或反射率的大小和变化规律的分析处理来有效地识别和研究地物类型。</p><h3 id="1-遥感必须具备3个要素"><a class="markdownIt-Anchor" href="#1-遥感必须具备3个要素"></a> 1. 遥感必须具备3个要素</h3><p>某一区域内的目标地物(object, area, or phenomenon ) 研究、分析目标的光谱特征</p><p>数据获取:以专用设备(遥感器)接收、记录远方地物电磁波辐射(包括反射或地物自身发射)的信号,并将遥感器接收的电磁辐射信号形成图像;</p><p>通过对图像的处理分析,不与之接触就可感知远方事物</p><h3 id="3-遥感图象处理的流程与内容"><a class="markdownIt-Anchor" href="#3-遥感图象处理的流程与内容"></a> 3. 遥感图象处理的流程与内容。</h3><p>图像增强 图像校正(对传感器或环境造成的图像退化进行矫正) 信息提取</p><h3 id="4-遥感数字图像的概念"><a class="markdownIt-Anchor" href="#4-遥感数字图像的概念"></a> 4. 遥感数字图像的概念</h3><p>遥感数字图像是以数字形式储存和表达的遥感图像</p><h3 id="5-遥感数字图像处理在地理信息科学-自然资源与环境科学中的作用"><a class="markdownIt-Anchor" href="#5-遥感数字图像处理在地理信息科学-自然资源与环境科学中的作用"></a> 5. 遥感数字图像处理在地理信息科学、自然资源与环境科学中的作用</h3><p>(1)对地球表面(土地利用、水体等)进行测量和制图,获得满足一定精度要求的各种图件。</p><p>(2)快速准确地提取所需信息<br>目标物体的类型<br>不同目标物体的数量与质量<br>它们在时间和空间上的分布状况<br>研究它们的时空关系等</p><p>遥感数字图像处理是重要的分析技术,遥感图像处理可快速为这些研究提供重要的数据源 ,且成本低。</p><h2 id="英文翻译"><a class="markdownIt-Anchor" href="#英文翻译"></a> 英文翻译</h2><p>遥感图像分类 Classification Techniques<br>图像滤波 Image Filter<br>空间域滤波(空间增强)Geometric Enhancement<br>卷积运算(convolution ).<br>频率域 (Spatial frequency)<br>图像平滑(Smoothing)<br>图像变换 Multispectral Transformations of Image Data<br>傅立叶变换 Fourier Transformation of Image Data<br>主成分分析 The Principal Components Transformation<br>缨帽变换 The Kauth-Thomas Tasseled Cap Transformation<br>遥感数字图像处理 Remote Sensing Image Processing<br>电磁波谱(Electromagnetic spectrum)<br>遥感数字图像的获取和存储 Remote sensing data acquisition and storage</p><p>Remote sensing relies on the measurement of electromagnetic (EM) energy. EM energy can take several forms.<br>The most important source of EM energy at the Earth’s surface is the Sun, which provides us, for example, with (visible) light, heat (that we can feel) and UV-light.</p><p>遥感(Remote sensing)<br>遥感的应用 (Application of remote sensing)<br>遥感数字图像处理的内容 (Contents of remote sensing)<br>目标地物(object, area, or phenomenon )<br>数据获取(sensor, interaction between electromagnetic energy and matter, Images)<br>图像的处理分析(analysis of data, interpret the images or numerical values.)<br>多光谱与髙光谱遥感(Multispectral and Hyperspectral Remote Sensing)<br>遥感数字图像的获取和存储(Remote sensing data acquisition and storage)<br>电磁波谱 (Electromagnetic spectrum)<br>大气窗口(Atmospheric transmission windows)<br>遥感数字图像的表示和统计描述(Remote Sensing Image function and Statistics )<br>图像的直方图(The Image Histogram)<br>图像拉伸(Image Stretching)<br>直方图均衡化(Histogram Equalization)<br>图像校正( Error Correction and Registration of Image Data)<br>辐射误差(Radiometric distoration )<br>图像变换(Multispectral Transformations of Image Data)<br>主成分分析(The Principal Components Transformation)<br>图像滤波 (Image Filter)<br>遥感图像分类(Classification Techniques)<br>大气校正(Atmospheric correction)<br>几何校正(Geometric Correction)</p><p>Remote sensing is the science of acquiring, processing and interpreting images<br>that record the interaction between electromagnetic energy and mater.</p><p>译:遥感是一门获取、处理和解释记录了电磁波与地物之间相互作用的遥感图像<br>的科学。</p><p>Remote sensing is the science and art of obtaining information about an object,<br>area, or phenomenon through the analysis of data acquired by a device that is not in<br>contact with the object, area, or phenomenon under investigation.</p><p>译:遥感是一门获取目标地物信息的科学技术,它通过对非直接接触的设备获取<br>的数据进行分析,得到有关地物的相关信息。</p><p>Although remote sensing data can be interpreted and processed without other<br>information, the best results are obtained by linking remote sensing measurements to<br>ground (or surface) measurements and observations.</p><p>译:尽管无需其他信息也可解释和处理遥感数据,但将遥感测量值与地面(或地<br>表)测量值和观测值联系起来可获得最佳结果</p><p>Remote sensing、Application of remote sensing、Contents of remote sensing、object, area, or phenomenon 、sensor, interaction between electromagnetic energy and matter,Images、analysis of data, interpret the images or numerical values、Multispectral and<br>Hyperspectral Remote Sensing 、 Remote sensing data acquisition and storage、<br>Electromagnetic spectrum、Atmospheric transmission windows、Remote Sensing<br>Image function and Statistics 、The Image Histogram、Image Stretching、Histogram<br>Equalization 、 Error Correction and Registration of Image Data 、 Radiometric<br>distoration 、Multispectral Transformations of Image Data、The Principal Components<br>Transformation、Image Filter、Classification Techniques、Atmospheric correction、<br>Geometric Correction</p><p>Remote sensing is the science of acquiring, processing and interpreting images that record the interaction between electromagnetic energy and mater.</p><p>Remote sensing is the science and art of obtaining information about an object, area, or phenomenon through the analysis of data acquired by a device that is not in contact with the object, area, or phenomenon under investigation.</p>]]></content>
<summary type="html">
<p><em>整理者:wangjw yangzx luoxw</em></p>
<h2 id="第8章-图像分类"><a class="markdownIt-Anchor" href="#第8章-图像分类"></a> 第8章 图像分类</h2>
<h3 id="遥感图像监督分类方
</summary>
<category term="课程学习" scheme="http://yoursite.com/categories/%E8%AF%BE%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="遥感" scheme="http://yoursite.com/tags/%E9%81%A5%E6%84%9F/"/>
</entry>
<entry>
<title>GIS原理与应用 复习</title>
<link href="http://yoursite.com/2020/01/16/GIS%E5%8E%9F%E7%90%86%E4%B8%8E%E5%BA%94%E7%94%A8-%E5%A4%8D%E4%B9%A0/"/>
<id>http://yoursite.com/2020/01/16/GIS原理与应用-复习/</id>
<published>2020-01-16T00:01:10.000Z</published>
<updated>2020-01-16T00:36:42.410Z</updated>
<content type="html"><![CDATA[<h2 id="一"><a class="markdownIt-Anchor" href="#一"></a> 一</h2><p>1、GIS基本概念</p><p>数据(data)是人类在认识世界和改造世界过程中,定性或定量对事物和环 境描述的直接或间接原始记录,是一种未经加工的原始资料,是客观对象的表示。</p><p>信息( information)是用文字、数字、符号、语言、图像等介质来表示事件、事 物现象等的内容、数量或特征,从而向人们(或系统)提供关于现实世界新的事 实和知识,作为生产、建设、经营、管理、分析和决策的依据。<br>信息具有客观性、适用性、可传输性和共享性等特征。</p><p>地理信息<br>信息系统是具有采集、管理、分析和表达数据能力的系统。在计算机时代,信息系统都部分地或全部地由计算机系统支持,并由计算机硬件、软件、数据和用户四大要素组成。另外,智能化的信息系统还包括知识。</p><p>地理信息系统( geographical information system 或geo-information system, 简 称GIS),有时又称为“地学信息系统"或“资源与环境信息系统”。它是一种特 定的十分重要的空间信息系统,是在计算机软、硬件系统支持下,对整个或部分 地球表层(包括大气层)的有关地理分布数据进行采集、储存、管理运算、分析、 显示和描述的技术系统。</p><p>GIS的基本内涵如下:<br>(1) GIS的物理外壳是计算机化的技术系统,(2) GIS 的操作对象是空间数据,即点、线、面、体这类有三维要素的地理实 体和地理现象。(3) GIS的技术优势在于它的数据综合、模拟与分析评价能力,可以得到常 规方法或普通信息系统难以得到的重要信息,实现地理空间过程演化的模拟和 预测。(4) GIS与测绘学和地理学有着密切的关系。</p><p>2、地理信息基本特征</p><p>具有信息的客观性、适用性、信息的可传输性和信息的共享性,<br>但从其本身而言,地理信息还具有一 些独特的特性,包括:、<br>(1)空间相关性:任何地理事物都是相关的,并且在空间上相距越近则相关 性越大,空间距离越远则相关性越小,同时地理信息的相关性具有区域性特点。</p><p>(2)空间区域性:区域性是地理信息的天然特性,不仅体现在数据上的分区 组织,而且在应用方面也是面向区域的,即一个部门或专题必然也是面向所管理 或服务的区域的。</p><p>(3)空间多样性:在不同的地方或区域,地理数据的变化趋势是不同的,地 理信息的多样性意味着地理信息的分析结果需要依赖其位置,才能得出合乎逻 辑的解释。地理信息的多样性也体现在不同区域对地理信息的需求不一样,特 别是对于地理信息服务,信息的生产、信息的存储和信息的使用安排需要考虑不 同地方对信息的需求。</p><p>(4) 空间层次性:地理信息的层次性首先体现在同一区域上的地理对象具 有多重属性,例如,某区的土壤侵蚀研究,相关因素包括该地区的降雨、植被覆 盖、土壤类型等;其次是空间尺度上的层次性,不同空间尺度数据具有不同的空 间信息特征。</p><p>3、GIS基本功能</p><p>数据采集功能</p><p>数据是GIS的血液,贯穿于GIS的各个过程。数据采集是GIS的第一步,即 通过各种数据采集设备如数字化仪、全站仪等来获取现实世界的描述数据,并输 人GIS(图1.2)。GIS 应该尽可能提供与各种数据采集设备的通信接口。</p><p>数据处理和编辑</p><p>通过数据采集获取的数据称之为原始数据,原始数据不可避免地含有误差。<br>为保证数据在内容、逻辑、数值上的一致性和完整性,需要对数据进行编辑、格式<br>转换、拼接等一系列的处理工作。也就是说,GIS应该提供强大的、交互式的编<br>辑功能,包括图形编辑、数据变换、数据重构、拓扑建立、数据压缩、图形数据与属</p><p>数据储存、组织和管理功能</p><p>计算机的数据必须按照一定的结构进行组织和管理,才能高效地再现真实 环境和进行各种分析。由于空间数据本身的特点,一般信息系统中的数据结构 和数据库管理系统并不适合管理空间数据,GIS必须发展自己特有的数据存储、 组织和管理的功能。目前常用的GIS数据结构主要有矢量数据结构和栅格数据 结构两种,而数据的组织和管理则有文件-关系数据库混合管理模拟模式、全关 系型数据管理模式、面向对象数据管理模式等。</p><p>空间查询和空间分析功能</p><p>虽然数据库管理系统一般提供了数据库查询语言,如SQL语言,但对于GIS而言,需要对通用数据库的查询语言进行补充或重新设计,使之支持空间查询。</p><p>数据输出功能</p><p>通过图形、表格和统计图表显示空间数据及分析结果是GIS项目的必需。<br>作为可视化工具,不论是强调空间数据的位置还是分布模式乃至分析结果的表 达,图形是传递空间数据信息最有效的工具。GIS脱胎于计算机制图,因而GIS 的一个主要功能就是计算机地图制图,包括地图符号的设计、配置与符号化、地 图注记、图幅整饰统计图表制作、图例与布局等项内容。此外对属性数据也要 设计报表输出,并且这些输出结果需要在显示器、打印机、绘图仪或数据文件输 出(图1.6)。GIS软件亦应具有驱动这些设备的能力。</p><p>4、GIS组成</p><p>GIS运行环境包括计算机硬件系统、软件系统、网络、空间数据和管理与应用人员。其核心部分是计算机软硬件系统,空间数据反映了GIS 的地理内容,而管理人员和用户则决定系统的工作方式和信息表示方式</p><p>5、GIS与CAD的关系</p><p>计算机辅助设计(CAD)是计算机技术用于机械、建筑、工程和产品设计的 系统,它主要用于范围广泛的各种产品和工程的图形,大至飞机小到微芯片等。</p><p>CAD主要用来代替或辅助工程师们进行各种设计工作,也可以与计算机辅助制 造(CAM)系统共同用于产品加工中作实时控制。GIS与CAD系统的共同特点 是二者都有坐标参考系统,都能描述和处理图形数据及其空间关系,也都能处 理非图形属性数据。它们的主要区别是,CAD处理的多为规则几何图形及其 组合,图形功能极强,属性功能相对较弱。而GIS处理的多为地理空间的自然目标和人工目标,图形关系复杂,需要有丰富的符号库和属性库,GIS需要有 较强的空间分析功能,图形与属性的相互操作十分频繁,且多具有专业化的特 征。此外,CAD一般仅在单幅图上操作,海量数据的图库管理的能力比GIS 要弱。</p><h2 id="二"><a class="markdownIt-Anchor" href="#二"></a> 二</h2><p>6、地理格网的含义,格网的划分体系</p><p>1.地理格网的含义</p><p>地理格网是指按一定的数学 规则对地球表面进行划分而形成的格网。有人 认为地理格网是地图分幅的代名词,并赋予“国土控制格网”的名称;有人认为 地理格网是地球特定区域某种属性的统计单位,而常称之为“地理定位格网” 但不论是“国土控制格网”或者是“地理定位格网”的说法,都曾造成某些误解 使有的部门牵强附会地引用这个标准去表示现状分布的地理要素。为避免误 解,标准最后定名为“地理格网”。</p><p>2.格网划分体系</p><p>地理格网可以按经纬度坐标系统划分(称之为地理坐标格网),也可以按直 角坐标系统划分(称之为直角坐标格网)。两者名有其用处,也各具有缺点。</p><p>地 理坐标格网体系者职于全球范围宏观研究的需要其优点是便于进行大区域 乃至全球性的拼接,它不随投影系统的选择面改变格网的位置,但这种格网所对应的实地大小不均匀,高纬度地区较小,低纬度地区较大。我国领土所覆盖的面积 定大,这种差别尤为明见。</p><p>直角坐标格网体系着眼于现实世界大量系统和数据生产单位实际采用直角坐标系的客观需求。具有实地格网大小均匀的优点,它在局部的小区城是可行的。但直角坐标格网所对应得实地位置随着选用地图投影的不同而改变。</p><p>若采用高斯投影的6°带进行分割,则在 分带的边缘会产生许多不完整的网格,无法进行全国性的整体拼接。然而这两种划分体系都可以互相转换</p><h2 id="三"><a class="markdownIt-Anchor" href="#三"></a> 三</h2><p>7、空间数据模型的定义</p><p>空间数据模型是以计算机能够接受和处理的数据形式,为了反映空间实体的某些结构特性和行为功能,按一定的方案建立起来的数据逻辑组织方式,是对现实世界的抽象表达。分为概念模型、逻辑模型、物理模型。</p><p>8、空间关系主要有哪些-空间拓扑关系</p><p>空间关系是指地理空间实体之间相互作用的关系。空间关系主要有:</p><p>(1)拓扑空间关系:用来描述实体间的相邻、连通、包含和相交等关系。</p><p>(2)顺序空间关系:用于描述实体在地理空间上的排列顺序,如实体之间前 后、上下、左右和东、南、西、北等方位关系。</p><p>(3) 度量空间关系:用于描述空间实体之间的距离远近等关系。</p><p>对空间关系的描述是多种多样的,有定量的,也有定性的;有精确的,也有模 糊的。各种空间关系的描述也非绝对独立,而是具有一定联系。对空间关系的 描述和表达,是GIS能够进行复杂空间分析的重要原因。</p><h2 id="四"><a class="markdownIt-Anchor" href="#四"></a> 四</h2><p>9、什么叫空间数据结构,实体数据结构、栅格数据结构</p><p>空间数据结构是指对空间逻辑数据模型描述的数据组织关系和编排方 式,对地理信息系统中数据存储、查询检索和应用分析等操作处理的效率有 着至关重要的影响。</p><p>同一空间逻辑数据模型往往采用多种空间数据结构,例 如游程长度编码结构、四叉树结构都是栅格数据模型的具体实现。空间数据 结构是地理信息系统沟通信息的桥梁,只有充分理解地理信息系统所采用的 特定数据结构,才能正确有效地使用系统。在地理信息系统中,较常用的有 栅格数据结构和矢量数据结构,除此之外还有混合数据结构、镶嵌数据结构 和超图数据结构等。空间数据结构的选择取决于数据的类型、性质和使用的 方式,应根据不同的任务目标,选择最有效和最合适的数据结构。</p><p>实体数据结构也称Spagheti数据结构,是指构成多边形边界的各个线段,以多边形为单元进行组织。按照这种数据结构,边界坐标数据和多边形单元实 体一-对应,各个多边形边界点都单独编码并记录坐标。例如对图4.1所示的 多边形A、B、C、D,可以采用两种结构分别组织。</p><p>以规则栅格阵列表示空间对象的数据结构称为栅格数据结构。阵列中每个 栅格单元上的数值表示空间对象的属性特征。即栅格阵列中每个单元的行列号 确定位置,属性值表示空间对象的类型、等级等特征。每个栅格单元只能存在一 个值。</p><p>10、栅格单元确定的几种方法</p><p>1.栅格数据的参数<br>亦一 个完整的栅格数据通常由以下几个参数决定:<br>(1)栅格形状:栅格单元通常为矩形或正方形。特殊的情况下也可以按经纬网划分栅格单元</p><p>(2)栅格单元大小:也就是栅格单元的尺寸,即分辨率。栅格单元的合理尺 寸应能有效地逼近空间对象的分布特征,以保证空间数据的精度。但是用栅格 来逼近空间实体,不论采用多细小的栅格,与原实体比都会有误差。通常以保证 最小图斑不丢失为原则来确定合理的栅格尺寸。设研究区域某要素的最小图斑 面积为s,栅格单元的边长L用如下公式计算:<br>L=0.5 * sqrt(S)</p><p>(3)栅格原点:栅格系统的起始坐标应当和国家基本比例尺地形图公里网 的交点相一致,或者和已有的栅格系统数据相一致。并同时使用公里网的纵横 坐标轴作为栅格系统的坐标轴。这样在使用栅格数据时,就容易和矢量数据或 已有的栅格数据配准。</p><p>(4)栅格的倾角:通常情况下,栅格的坐标系统与国家坐标系统平行。但有 时候,根据应用的需要,可以将栅格系统倾斜某一个角度,以方便应用。</p><p>2.栅格单元值的选取</p><p>栅格单元取值是惟一的,但由 于受到栅格大小的限制,栅格单元中可能会出 现多个地物,那么在决定栅 格单元值时应尽量保持其真实性, 对于图4.7所示的 栅格单元,要确定i 该单元的属性取值,可根据需要选用如下方法。</p><p>(1)中心点法:用位于栅格中心处的地物类 型决定其取值。由于中心点位 于代码为c的地物范围内.故其取值为C。这种方法常用于有连续分布特性的 地理现象</p><p>(2)面积占优法:以古矩形区域面积最大的地物类型作为栅格单元的代码。<br>从图上看,B类地物所占面积最大,故相应栅格 单元代码为B。</p><p>(3)重要性法:根据栅格内不同地物的重要 性,选取最重要的地物类型作为相应的栅格单元 C 代码。设图中A类地物为最重要的地物类型,则 栅格代码为A。这种方法常用于有特殊意义而 面积较小的地理要素,特别是点状和线状地理要 A 素,如城镇、交通线、水系等。在栅格代码中应尽 量表示这些重要地物。</p><p>(4)百分比法:根据矩形区域内各地理要素 所占面积的百分比数确定栅格单元的取值,如可记面积最大的两类B和A,也可 根据B类和A类所占面积百分比数在代码中加人数字。<br>由于采用的取值方法不同,得到的结果也不尽相同。</p><p>通近原始精度的第二种方法是缩小单个栅格单元的面积,即增加栅格 单元 的总数,行列数也相应地增加。这样,每个栅格单元可代表更为精细的地面矩形 单元,混合单元减少。混合类别和混合的面积都大减小,可以大大提高量算的 精度;接近真实的形态,表现更细小的地物类型。然而增加栅格个数.提高数据 精度的同时也带来了一个严 重的问题,那就是数据量的大幅度增加,数据冗余 严重。</p><p>11、什么是链码结构</p><p>链码数据结构首先采用弗里曼( Freeman)码对栅格中的线或多边形边界进 行编码,然后再组织为链码结构的文件。链式编码将线状地物或区域边界表示 为:由某一起始点和在某些基本方向上的单位矢量链组成。单位矢量的长度为 -个栅格单元,每个后续点可能位于其前继点的8 个基本方向之一(图4.15)。<br>、<br>图4.16所示的线实体和面实体可编码为表4.12所示的方式。具体编码过程 是:起始点的寻找一般遵从从 上到下、从左到右的原则。当发现没有记录过的 点,而且数值也不为零时,就是-条线或边界线的起点。 记下该地物的特征码及 起点的行列数然后按顺时针方向寻迹,找到相邻的等值点,并按8个方向编码。<br>如遇不能闭合的线段结束后可以返回到起始点再开始寻找下一- 个线段。已经 记录过的栅格单元,可将属性代码置零,以免重复编码。</p><h2 id="五"><a class="markdownIt-Anchor" href="#五"></a> 五</h2><p>12、什么叫空间数据</p><p>空间数据又称几何数据,它用来表示物体的位置、形态、大小分布等各方面的信息,是对现世界中存在的具有定位意义的事物和现象的定量描述。根据在计算机系统中对地图是对现实教想的存储组织、处理方法的不同,以及空间数据本身的几何特征,空间数据又可分为图形数据和图像数据</p><p>地理空间数据是指以地球表面空间位置为参照的自然、社会和人文景观数 据,可以是图形、图像、文字、表格和数字等(图1.12),由系统的建立者通过数字 化仪扫描仪、键盘、磁带机或其他通信系统输人GIS,是系统程序作用的对象, 是GIS所表达的现实世界经过模型抽象的实质性内容。不同用途的GIS其地理 空间数据的种类、精度都是不同的,但基本上都包括3种互相联系的数据类型:</p><p>1.某个已知坐标系中的位置 即几何坐标、标识地理实体和地理现象在某个已知坐标系(如大地坐标系、 直角坐标系、极坐标系、自定义坐标系)中的空间位置,可以是经纬度、平面直角 坐标、极坐标,也可以是矩阵的行、列数等。</p><p>2.实体间的空间相关性 即拓扑关系,表示点、线、面实体之间的空间联系,如网络节点与网络线之间 的枢纽关系,边界线与面实体间的构成关系,面实体与岛或内部点的包含关系 等。空间拓扑关系对于地理空间数据的编码、录人格式转换、存贮管理、查询检 索和模型分析都有重要意义,是地理信息系统的特色之一。</p><p>3.与几何位置无关的属性 即常说的非几何属性或简称属性(atribute),是与地理实体和地理现象相联 系的地理变量或地理意义。属性分为定性和定量两种,前者包括名称、类型、特 性等,后者包括数量和等级。定性描述的属性如岩石类型、土壤种类、土地利用 类型行政区划等;定量的属性如面积、长度、土地等级、人口数量、降雨量、河流 长度、水土流失量等。非几何属性一般是经过抽象的概念 ,通过分类、命名、量 算、统计得到。任何地理实体和地理现象至少有一个属性.而地理信息系统的分 析、检索和表示主要是通过属性的操作运算实现的.因此,属性的分类系统、量算 指标对系统的功能有较大的影响。</p><p>地理信息系统特殊的空间数据模型决定了地理信息系统特殊的空间数据结 构和特殊的数据编码,也决定了地理信息系统具有特色的 空间数据管理方法和 系统的空间数据分析功能,成为地理学研究和资源管理的重要工具。</p><p>13、空间数据库与一般数据库比较有什么特点<br>空间数据库与一般数据库相比,具有以下特点:</p><p>①数据量特别大。地理信息系统是一个复杂的综合体,要用数据来描述各 种地理要素,尤其是要素的空间位置和空间关系等,其数据量往往很大</p><p>②不仅有地理要素的属性数据(与一般数据库中的数据性质相似) ,还有大 量的空间数据,即描述地理要素空间分布位置的数据,并且这两种数据之间具有 不可分割的联系。</p><p>③数据应用广泛。例如地理研究、环境保护、土地利用和规划、资源开发、 生态环境、市政管理、道路建设等。</p><p>空间数据库的组成,从类型上分有栅格数据库和矢量数据库两类,其中栅格 数据包括航空遥感影像数据和DEM数据;矢量数据则包括各种空间实体数据 (图形和属性数据)。如图5.2所示。</p><p>14、空间数据的基本特征</p><p>1.空间特征<br>每个空间对象都具有空间坐标,即空间对象隐含了空间分布特征。这意味 着在空间数据组织方面,要考虑它的空间分布特征。除了通用性数据库管理系 统或者文件系统关键字的索引和辅关键字索引外,一般都需要建立空间索引。</p><p>2.非结构化特征<br>在当前关系数据库管理系统中,数据记录中每条记录都是定长的(结构 化),数据项不能再分,不允许嵌套记录。而空间数据不能满足这种定长(结构 化)要求。若用一条记录表达一个空间对象 ,其数据项可能是变长的,例如一条 弧段的坐标,其长度是不可限定的,可能是两对坐标,也可能是成百上千对坐标; 另一方面,一个对象可能包含另外的一个或多个对象,例如个多边形,可能含 有多条弧段。若一条记录表示一条弧段,则该多边形的记录就可能嵌套多条弧 段的记录,故它不满足关系数据模型的结构化要求,从而使得空间图形数据难以 直接采用通用的关系数据管理系统。</p><p>3.空间关系特征<br>空间数据除了空间坐标隐含了空间分布关系外,还通过拓扑数据结构表达 了多种空间关系。这种拓扑数据结构一方面虽然方便了空间数据查询和空间分 析,但另一方面也给空间数据的一致性 和完整性维护增加了复杂度。特别是有 些几何对象,没有直接记录空间坐标的信息,如拓扑的面状实体仅记录组成它的 弧段标识,因而进行查找、显示和分析操作时都需要操纵和检索多个数据文件。</p><p>4.多尺度与多态性<br>一不同观察比例尺具有不同的尺度和精度,同一地物在不同情况下也会有形 态差异。例如,城市在空间上占据一定的范围,在较大比例尺中可以作为面状空 间实体对象,而在较小比例尺中,则是作为点状空间对象来处理的。</p><p>5.分类编码特征<br>一般情况下 ,每个空间对象都有一个分类编码.这种分类编码往往是按照国 家标准,或者行业标准、地区标准来应用的,每一种地物类型在某个 GIS中的属 性项个数是相同的。因而在许多情况下,一种地物类型对应一个属性数据表文 件。当然, 如果几种地物类型的属性项相同,也可以多种地物类型共用一个届性 数据表文件。</p><p>6.海量数据特征<br>GIS中数据量非常庞大,远大于一般的通用数据库 。可称之为海量数据街 个城市地理信息系统数据量 可达几十GB.如果考虑影像数据的存储,可能达到 几百个CB.这样的数据量在城市管理的其 他数据库中是很少见的。由此.需要 在二维空间上划分块或图幅, 在垂直方向上划分层来进行组织。</p><p>15、矢量数据的三种数据管理方法</p><p>对于矢量数据,其位置数据和属性数据通常是分开组织的。这一特点使得 在管理时需要同时顾及空间位置数据和属性数据,其中属性数据很适合用关系 数据库来管理,空间位置数据则不太适合用关系数据库管理。空间数据管理方 式与数据库发展是密不可分的,按照发展的过程,对矢量数据的管理有文件-关 系数据库混合管理、全关系管理、对象-关系数据库管理等方式。</p><p>16、什么叫空间索引,常用的空间索引方法<br>经对研究区空间数据输人并建立空间数据库以后,得到了一个庞大的数据 库,如何从该数据库中快速检索提取所需的空间数据来满足空间分析、模拟与 决策的需要是一个重要的问题。空间索引就是指依据空间对象的位置和形状或 空间对象之间的某种空间关系按一定的顺序排列的一种数据结构,其中包含空 间对象的概要信息,如对象的标识、外接矩形及指向空间对象实体的指针。作为 柿辅助性的空间数据结构,空间索引介于空间操作算法和空间对象之间,它通 过筛选作用,大量与特定空间操作无关的空间对象被排除,从而提高空间操作的 速度和效率。空间索引的性能的优劣直接影响空间数据库和地理信息系统的整 体性能,它是空间数据库和地理信息系统的一项关键技术。常见的空间索引一 般是自顶向下、遂级划分空间的各种数据结构,比较有代表性的包括BSP树、 K-D-B树、R树、R+树和CELL树等。此外结构较为简单的格网空间索引有 着广泛的应用。</p><p>对象范围索引</p><p>格网索引</p><p>四叉树空间索引</p><p>R树、R+树索引</p><h2 id="六"><a class="markdownIt-Anchor" href="#六"></a> 六</h2><p>17、数字化绘图出现的问题与解决办法</p><p>18、属性数据编辑的内容</p><p>属性数据校核包括两部分:</p><p>①属性数据与空间数据是否正确关联,标识码 是否惟一,不含空值;</p><p>②属性数据是否准确,属性数据的值是否超过其取值范 围等。</p><p>对属性数据进行校核很难,因为不准确性可能归结于许多因素,如观察错 误、数据过时和数据输人错误等。属性数据错误检查可通过以下方法完成:</p><p>①首先可以利用逻辑检查,检查属性数据的值是否超过其取值范围,属性 数据之间或属性数据与地理实体之间是否有荒谬的组合。在许多数字化软件 中,这种检查通常使用程序来自动完成。例如,有些软件可以自动进行多边形节 点的自动平差,属性编码的自动查错等。</p><p>②把属性数据打印出来进行人工校对,这和用校核图来检查空间数据准确 性相似。</p><p>对属性数据的输人与编辑,一般在属性数据处理模块中进行。但为了 建立属性描述数据与几何图形的联系,通常需要在图形编辑系统中设计属 性数据的编辑功能,主要是将一个实体的属性数据连接到相应的几何目标 上,亦可在数字化及建立图形拓扑关系的同时或之后,对照一个几何目标直 接输人属性数据。-个功能强的图形编辑系统可提供删除、修改、拷贝属性 等功能。</p><p>19、属性数据的内容</p><p>属性数据即空间实体的特征数据,一般包括名称、 等级、数量、代码等多种形 式。属性数据的内容有时直接记录在栅格或矢量数据文件中,有时则单独输人 数据库存储为属性文件,通过关键码与图形数据相联系。</p><p>属性数据一般采用键盘输人。输人的方式有两种:一种是对照图形直接输 人;另一种是预先建立属性表输人属性,或从其他统计数据库中导人属性,然后 根据关键字与图形数据自动连接。</p><p>20、空间数据质量评价的重点</p><p>误差<br>准确度<br>偏差<br>精密度<br>不确定性</p><p>21、空间数据质量的控制-常用的几种方法<br>空间数据质量控制常见的方法有以下几种:</p><p>(1)传统的手工方法:质量控制的手工方法主要是将数字化数据与数据源 进行比较,图形部分的检查包括目视方法、绘制到透明图上与原图叠加比较,属 性部分的检查采用与原属性逐个对比或其他比较方法。</p><p>(2)元数据方法:数据集的元数据中包含了大量的有关数据质量的信息,通 过它可以检查数据质量,同时元数据也记录了数据处理过程中质量的变化,通过 跟踪元数据可以了解数据质量的状况和变化。</p><p>(3)地理相关法:用空间数据的地理特征要素自身的相关性来分析数据的 质量。例如,从地表自然特征的空间分布着手分析,山区河流应位于微地形的最 低点,因此,叠加河流和等高线两层数据时,若河流的位置不在等高线的汇水线 上且不垂直相交,则说明两层数据中必有层数据有质量问题,如不 能确定哪层 数据有问题时,可以通过将它们分别与其他质量可靠的数据层叠加来进一步分 析。因此,可以建立一个有关地理特征要素相关关系的知识库,以备各空间数据 层之间地理特征要素的相关分析之用。</p><p>22、数据生产过程中质量控制</p><p>2.空间数据生产过程中的质量控制 数据质量控制应体现在数据生产和处理的各个环节。下 面仍以地图数字化 生成空间数据过程为例,介绍数据质量控制的措施。</p><p>(1)数据源的选择:由于数据处理和使用过程的每个步骤都会保留甚至 加大原有误差,同时可能引人新的数据误差,因此,数据源的误差范围至少不能 大于系统对数据误差的要求范围。<br>所以对于大比例尺地图的数字化,原图应尽量采用最新的二底图,即使用变 形较小的薄膜片基制作的分版图,以保证资料的现势性和减少材料变形对数据 质量的影响。</p><p>(2)数字化过程的数据质量控制:主要从数据预处理、数字化设备的选用、 对点精度、数字化限差和数据精度检查等环节出发。</p><p>1)数据预处理:主要包括对原始地图、表格等的整理、脊清或清绘。对于质 量不高的数据源,如散乱的文档和图面不清晰的地图,通过预处理工作不但可减 少数字化误差,还可提高数字化工作的效率。对于扫描数字化的原始图形或图像,还可采用分版扫描的方法.来减小矢量化误差。</p><p>2)数字化设备的选用:主要按手扶数字化仪、扫描仪等设备的分辨率和精 度等有关参数进行挑选.这些参数应不低于设计的数据精度要求。般要求数 字化仪的分辨率达到0.025 mm,精度达到0.2 mm;对扫描仪的分辨率则不低于 300DPI( dots per inch)。<br>3)数字化对点精度(准确性):数字化对点精度是指数字化时数据采集点 与原始点重合的程度。一般要求 数字化对点误差小于0.1 mm。<br>4)数字化限差:数字化时各种最大限差规定为,曲线采点密度2 mm、图幅 接边误差0.2 mm、线画接合距离0.2 mm、线画悬挂距离0.7 mm。对于接边误 差的控制,通常当相邻图幅对应要素间距离小于0.3 mm时,可移动其中一个要 素以使两者接合;当这一距离在0.3 mm与0.6 mm之间时,两要素各自移动一 半距离;若距离大于0.6 mm,则按一般制图原则接边,并作记录。<br>5)数据的精度检查:主要检查输出图与原始图之间的点位误差。一般要 求,对直线地物和独立地物,这一误差应小于 0.2 mm;对曲线地物和水系,这一 误差应小于0.3 mm;对边界模糊的要素应小于0.5 mm。</p><p>23、数据入库流程</p><p>人库流程一般在数据库建库设计阶段就基本确定,不同数据源,不同的空间 数据库库体,它们在具体的人库过程中,需要完成的工作各不相同,但通常包括 图6.43所示的主要工作。首先,对待人库数据进行全面质量检查,包括资料完 整性检查、数据完整性检查数据正确性检查,并完成检查报告。如果质量不合 格,则将数据返回生产单位进行修改,修改后重新进行质量检查直至满足人库要 求方可进人下一步。其次,对检查合格的数据进行整理,包括以下工作:按数据 组织规则建立数据文件存储目录;按数据命名规则对成果数据统一命名;文件 资 料数字化;根据人库内容对数据字典及元数据进行相应更新;将成果数据存人指 定目录。最后,将数据人库,完成全部人库工作。</p><p>24、什么叫元数据,元数据的作用</p><p>1.元数据与元数据的作用</p><p>元数据的英文名称是“metadata" ,它是关于数据的数据。在地理空间信息 中用于描述地理数据集的内容、质量、表示方式空间参考、管理方式以及数据集 的其他特征,它是实现地理空间信息共享的核心标准之一- 。</p><p>元数据的主要作 用是:</p><p>(1)帮助用户了解和分析数据:元数据提供丰富的引导信息,以及由纯数 据得到的分析、综述和索引等。根据元数据提供的信息,用户可对空间数据库 进行浏览、检索、研究、分析,了解数据的基本情况和数据的可用性,获取方法 等内容。</p><p>(2)空间数据质量控制:不论是统计数据还是空间数据都存在数据精度问 题,影响空间数据精度的原因主要有两个方面:一是源数据的精度,是数据 加 工处理工程中精度质量的控制情况。空间数据质量控制内容包括:①有准确定 义的数据字典,以说明数据的组成,各部分的名称、表征的内容等:② 保证数据 逻辑科学地集成,如植被数据库中不同亚类的区域组合成大类区.这要求数据按 定逻辑关系有 效的组合;③有足够的说明数据来源 、数据的加工处理工程、数 据释译的信息。通过按一定的组织结构集成到数据库中构成数据库的元数据信 息系统可以实现上述功能。</p><p>(3)在数据集成中的应用:元数据记录了数据格式、空间坐标体系数据的 表达形式、数据类型数据使用软硬件环境数据使用规范数据标准等信息。这 些信息在数据集成的一-系列处理中,如数据空间匹配、属性致化处理 数据交 换等方面是必需的。</p><p>(4)数据存贮和功能实现:元数据系统用于数据库的管理可以实现数据库设计和系统资源利用方面开支的合理分配,避免数据的重复存贮,并可以高效查 询检索分布式数据库中任何物理存贮的数据,减少用户查询数据库及获取数据 的时间。</p><h2 id="七"><a class="markdownIt-Anchor" href="#七"></a> 七</h2><p>25、缓冲区概念</p><p>缓冲区是根据数据库中的点、线、面地理实体,自动建立其周围一定宽度范 围的多边形,来表征特定地理实体对邻域的影响范围。缓冲区查询是在不破坏 原有空间目标的关系的情况下,只检索缓冲区范围内涉及的空间目标。<br>根据用户给定的点缓冲、线缓冲或面缓冲的距离,形成一个缓冲区的多边 形,再根据多边形检索的原理,从该缓冲区内检索出所要的空间对象。</p><p>26、GIS空间分析概念</p><p>空间分析是从空间数据中获取有关地理对象的空间位置、分布、形态、形 成和演变等信息的分析技术,是地理信息系统的核心功能之一,它特有的对 地理信息的提取、表达和传输的功能,是地理信息系统区别于一般管理信息 系统的主要功能特征。</p><p>在空间分析的研究和实践中,很多在应用领域具有普 遍意义的、涉及空间位置的分析手段和方法被总结、提炼出来,形成了在GIS 软件中均包含的一些固有的空间分析功能模块。这些功能具有一定的通用 性质,故而称之为GIS基本空间分析,具体的有叠置分析、缓冲区分析、窗口 分析和网络分析。了解GIS基本空间分析对于进一步掌握复杂空间分析方 法,具有一定的指导意义。</p><h2 id="八"><a class="markdownIt-Anchor" href="#八"></a> 八</h2><p>27、什么是叠置分析</p><p>叠置分析是地理信息系统中常用的提取空间隐含信息的方法之一,叠置分 析是将有关主题层组成的各个数据层面进行叠置产生的一个新数据层面,其结 果综合了原来两个或多个层面要素所具有的属性,同时叠置分析不仅生成了新 的空间关系,而且还将输入的多个数据层的属性联系起来产生新的属性关系。</p><p>其中,被叠加的要素层面必须是基于相同坐标系统的、基准面相同的、同一区域 的数据。<br>按照GIS中最常用的两种数据结构将叠置分析分成矢量数据叠置分析和栅 格数据叠置分析,如图8.1所示。</p><p>根据操作形式的不同,叠置分析可以分为图层擦除、交集操作、图层合并 等:根据操作要素的不同,可以将矢量数据叠置分析分成点与多边形叠加、线 与多边形叠加、多边形与多边形叠加,栅格数据叠置分析分为单层与多层栅格 数据叠置分析。要注意的是这里也要对属性进行一定的操作 、所指的属性是 较为简单的属性值,但注解属性、尺度属性、网络属性等均不能作为输人的属 性值。</p><p>28、缓冲区分析的内容</p><p>缓冲区分析是地理信息系统中常用的一种空间分析 方法,是对空间特征进 行度量的一种重要手段。缓冲区分析是研究根据数据库的点、线、面实体,自动 建立其周围一定宽度范围内的缓冲区多边形实体,从而实现空间数据在水平方 向得以扩展的信息分析方法。它是地理信息系统基本的空间操作功能之一。 从 空间变换的观点看、缓冲区分析模型就是将点、线、面地物分布图变换成这些地 物的扩展距离图,图上每一点的值代表该点距离最近的某种地物的距离。实际 上,缓冲区就是地理目标或工程规划目标的一种影响范围。</p><p>缓冲区是地理空间目标的一种影响范围或服 务范围在尺度上的表现。它是 一种因变量,随所研究的要素的形态而改变。从数学的角度来看,缓冲区是给定 空间对象或集合后获得的它们的邻域,而邻域的大小由邻域的半径或缓冲区建 立条件来决定。因此对于一个给定的对象A,它的缓冲区可以定义为 P= {xld(x,A)≤r} 式中:d一般是指欧氏距离,也可以是其他的距离;r为邻域半径或缓冲区建立的 条件。</p><p>缓冲区分析包括缓冲区的建立及区域分析,它首先是对要索根据缓冲的条 件,建立缓冲区,然后将这个缓中区图层与其他图层进行诸如叠置分析、网络分 析服务设施查找等其他分析操作.得到所需要的结果,以便为某项分析或决策 提供依据。缓冲区分析也称缓冲区操作,但有时也将缓冲区的建立称为缓冲区 操作,而建立后采用的分析过程称之为缓中区分析(图8、10)。</p><p>29、网络分析的概念</p><p>在现实世界中,若干线状要素相互连接成网状结构,资源沿着这个线性网流 动,这样就构成了一个网络。在GIS中,作为空间实体的网络与图论中的网络不 同。它作为一种复杂的地理目标,除具有一般网络的边、节点间的抽象的拓扑含 义之外,还具有空间定位上的地理意义和目标复合上的层次意义。具体说来,网 络就是指现实世界中,由链和节点组成的、带有环路,并伴随着一系列支配网络 中流动之约束条件的线网图形,它的基础数据是点与线组成的网络数据。</p><p>网络分析是通过模拟、分析网络的状态以及资源在网络上的流动和分配等, 研究网络结构、流动效率及网络资源等的优化问题的一种方法。对地理网络、城 市基础设施网络进行地理分析和模型化,是地理信息系统中网络分析功能的主 要目的。进行网络分析研究的数学分支是图论和运筹学,它的根本目的是研究、 筹划如何安排项基于网络数据的工程,并使其运行效果最好,如一定资源的最 佳分配,从一地到另一地的花费时间最短等,研究内容主要包括选择最佳路径, 选择最佳布局中心的位置,资源分配,节点弧段的遍历等。其基本思想则在于人 类活动总是趋向于按一定目标选择达到最佳效果的空间位置。这类问题在生 产、社会、经济活动中不胜枚举,因此研究此类问题具有重大意义。</p><h2 id="九"><a class="markdownIt-Anchor" href="#九"></a> 九</h2><p>30、什么叫数字高程模型</p><p>数字高程模型( digital elevation model,简称DEM)是通过有限的地形高程数 据实现对地形曲面的数字化模拟(即地形表面形态的数字化表示) ,高程数据常 常采用绝对高程(即从大地水准面起算的高度)。DEM也常常称为DTM( digial terrain model)。“terrain"-词的含义比较广泛,不同专业背景对“terrain”的理解 也不一样,因此,DTM趋向于表达比DEM更为广泛的内容。</p><p>数学意义上的数字高程模型是定义在二维空间上的连续函数H =f(x,y)。</p><p>由于连续函数的无限性,DEM通常是将有限的采样点用某种规则连接成一系列 的曲面或平面片来逼近原始曲面,因此,DEM的数学定义为区域D的采样点或 内插点P按某种规则ζ连接成的面片M的集合</p><p>DEM= |M =ζ§IP,(x;,y;,H)∈D} j=1,n,i=1,.m</p><p>31、DEM建立的一般步骤</p><p>数字高程模型的建立过程是一个模型建立过程。 从模型论角度讲,就是将 源域(地形)表现在另一个域(目标域或DEM)中的一种结构。建模的目的是对 复杂的客体进行简化和抽象,并把对客体(源域,DEM中为地形起伏)的研究转 移到对模型的研究上来。</p><p>模型建立之初,首先要为模型构造一个合适的空间结构( spatial framework)。空间结构是为把特定区域内的空间目标镶嵌在一起而对区域进行的划 分,划分出的各个空间范围称为位置区域或空间域。空间结构一般是规则的 (如格网),或不规则的(如不规则三角网TIN)。<br>建立在空间结构基础上的模型是由n个空间域的有限集合组成。由于空间数据包含位置特征和属性特征,而属性特征是定义在位置特征上的,因此每- 个 空间域就是由空间结构到属性域的计算函数或城函数。模型的可计算性要求有 两点:一是空间域的数量属性域和空间结构是有限的:二是城函数是可计算的。<br>构筑模型的一般内容和过程为:</p><p>①采用合适的空间模型构造空间结构;</p><p>②采用合适的属性域函数;</p><p>③在空间结构中进行采样,构造空间域函数;</p><p>④利用空间域函数进行分析。</p><p>当空间结构为欧几里得平面,属性域是实数集合时,模型为一自然表面。将 欧几里得平面充当水平的XY平面,属性域给出Z坐标(或高程) ,模型即为数字 高程模型。</p><p>对于数字高程模型而言,空间结构的构造过程即为DEM的格网化过程(形 成格网),属性值为高程,构造空间域函数即为内插函数的确定,利用空间域函 数进行分析就是求取格网点的函数值。</p><h2 id="十一"><a class="markdownIt-Anchor" href="#十一"></a> 十一</h2><p>32、地理信息可视化概念</p><p>可视化的基本含义是将科学计算中产生的大量非直观的、抽象的或者不可 见的数据,借助计算机图形学和图像处理等技术,以图形图像信息的形式,直观、 形象地表达出来,并进行交互处理。地图是空间信息可视化的最主要和最常用 的形式。</p><p>在地理信息系统中,可视化则以地理信息科学、计算机科学、地图学、认 知科学、信息传输学与地理信息系统为基础,并通过计算机技术、数字技术、多媒 体技术,动态、直观、形象地表现、解释、传输地理空间信息并揭示其规律,是关于 信息表达和传输的理论、方法与技术的一门学科。</p><p>地理信息系统中的空间信息可视化从表现内容上来分,有地图(图形)、多 媒体、虚拟现实等;从空间维数上来分有二维可视化、三维可视化、多维动态可视 化等。本章侧重介绍空间信息可视化的基本形式和技术。</p><p>33、什么是地理信息系统输出产品,主要包括哪些类型</p><p>地理信息系统产品是指由系统处理、分析,可以直接供研究、规划和决策人 员使用的产品,</p><p>其形式有地图、图像统计图表以及各种格式的数字产品等。地 理信息系统产品是系统中数据的表现形式,反映了地理实体的空间特征和属性 特征。</p><p>地图 图像 统计图表</p><p>34、专题地图有哪些特点</p><p>专题地图具有下列3个特点:</p><p>①专题地图只将一种或几种与 主题相关联的要 素特别完备而详细地显示,而其他要素的显示则较为概略,甚至不予显示;</p><p>②专题 地图的内容广泛,主题多样,在自然界与人类社会中,除了那些在地表上能见到的 和能直接进行测量的自然现象或人文现象外,还有那些往往不能见到的或不能直 接测量的自然现象或人文现象,均可以作为专题地图的内容;</p><p>③专题地图不仅可 以表示现象的现状及其分布,还能表示现象的动态变化和发展规律。</p><h2 id="十二"><a class="markdownIt-Anchor" href="#十二"></a> 十二</h2><p>35、什么是地理信息的网络服务<br>所谓地理信息的网络服务,就是指通过网络环境所提供的地理信息服务。</p><p>随着网络技术的发展,地理信息的网络服务已逐步拥有了改变GIS开发、访问和 使用方式的潜力,并且借助普及的网络极大地拓展了GIS的应用面。另一方面, 地理信息的网络服务很大程度上依赖网络技术的发展。</p><p>36、地理信息的网络服务内容</p><p>地理数据分发服务</p><p>制图服务</p><p>查询分析与辅助决策服务</p><p>基于位置的服务</p><p>37、什么叫基于位置服务,原理是什么</p><p>近年来兴起的基于位置的服务( lcation-based serice)成为地理信息服务的 又一个新的领域。</p><p>LBS 指的是在移动计算环境下,利用GIS技术、空间定位技术 和网络通信技术,为移动对象提供基于空间地理位置的信息服务。</p><p>LBS的基本原理是:当移动用户需要信息服务或监控管理中心需要对某移 动终端进行移动计算(跟踪监控、导航定位、搜索查询、实时调度等)时,首先移 动终端通过内嵌的定位设备如GPS(全球定位系统)获得终端本身当前的空间 位置数据,并实时地通过无线通信把数据(包括位置坐标、用户需求等)上传到网上的服务管理中心,中心GIS服务器根据终端的地理位置服务项目或运算要 求进行空间分析,分析结果再下传到移动终端或监控中心的计算机上,并在屏幕 上可视化地表示出来。</p><p>LBS服务目前主要分为查询、监控和导航3类。查询服务相对简单,例如, 某人想找一家距离自己所在位置最近而又经济实惠的餐馆,他只要在随身携带 的移动终端上输人最短距离及愿意承受的就餐价位,LBS即可根据用户的当前 位置、就餐条件找出符合条件的餐馆并在终端上显示出行走路线简图,还可询问 用户是否需要更高级的服务(如当出现多目标选择时,为用户提供智能决策 等)。在LBS技术的支持下,以及现在GPS的普及化,监控和导航也成为非常平 常的事情,甚至许多科学家将其用以检测野生动物。导航服务也不仅限服务于 PDA等智能终端,随着手机定位技术的发展,“用手机拨打地图”的服务也已经 可以满足相当精度的要求。</p>]]></content>
<summary type="html">
<h2 id="一"><a class="markdownIt-Anchor" href="#一"></a> 一</h2>
<p>1、 GIS基本概念</p>
<p>数据(data)是人类在认识世界和改造世界过程中,定性或定量对事物和环 境描述的直接或间接原始记录,是一种未经加工
</summary>
<category term="课程学习" scheme="http://yoursite.com/categories/%E8%AF%BE%E7%A8%8B%E5%AD%A6%E4%B9%A0/"/>
<category term="GIS" scheme="http://yoursite.com/tags/GIS/"/>
</entry>
<entry>
<title>Eric6安装和配置</title>
<link href="http://yoursite.com/2019/12/07/Eric6%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/"/>
<id>http://yoursite.com/2019/12/07/Eric6安装和配置/</id>
<published>2019-12-07T11:23:49.000Z</published>
<updated>2020-01-21T06:14:32.123Z</updated>
<content type="html"><![CDATA[<div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/cloud/uuz.jpg" alt="UUZ"></div><h2 id="准备"><a class="markdownIt-Anchor" href="#准备"></a> 准备</h2><p>官网下载:<a href="http://eric-ide.python-projects.org/eric-download.html" target="_blank" rel="noopener">http://eric-ide.python-projects.org/eric-download.html</a></p><p>有人说要先安装qt-tools再安装qt5 不知道有没有道理,我是先装的qt5,后来的qt designer打开路径是我自己加上去的</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#环境</span></span><br><span class="line">C:\Program Files\Python37\Scripts>python -m pip install --upgrade pip</span><br><span class="line">C:\Program Files\Python37\Scripts>pip install PyQt5-tools</span><br><span class="line">C:\Program Files\Python37\Scripts>pip install PyQt5==5.13.0</span><br><span class="line">C:\Program Files\Python37\Scripts>pip install QScintilla</span><br></pre></td></tr></table></figure><h2 id="安装"><a class="markdownIt-Anchor" href="#安装"></a> 安装</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br></pre></td><td class="code"><pre><span class="line">C:\Program Files\Python37\Scripts>python C:\\eric6-19.11\\install.py</span><br><span class="line">Checking dependencies</span><br><span class="line">Python Version: 3.7.4</span><br><span class="line">Found PyQt5</span><br><span class="line">Found pyuic5</span><br><span class="line">PyQtWebEngine could not be detected.</span><br><span class="line">Error: cannot import name <span class="string">'QtWebEngineWidgets'</span> from <span class="string">'PyQt5'</span> (C:\Program Files\Python37\lib\site-packages\PyQt5\__init__.py)</span><br><span class="line"></span><br><span class="line">Shall <span class="string">'PyQtWebEngine'</span> be installed using pip? (Y/n) y</span><br><span class="line">Looking <span class="keyword">in</span> indexes: https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">Collecting PyQtWebEngine</span><br><span class="line"> Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e0/8e/20771122d37e4274eff3c69fc3216b5ddeeef67064d62a1181c78c9a5d58/PyQtWebEngine-5.13.2-5.13.2-cp35.cp36.cp37.cp38-none-win_amd64.whl (54.5MB)</span><br><span class="line"> |████████████████████████████████| 54.5MB 819kB/s</span><br><span class="line">Requirement already satisfied: PyQt5>=5.13 <span class="keyword">in</span> c:\program files\python37\lib\site-packages (from PyQtWebEngine) (5.13.2)</span><br><span class="line">Requirement already satisfied: PyQt5_sip<13,>=4.19.19 <span class="keyword">in</span> c:\program files\python37\lib\site-packages (from PyQt5>=5.13->PyQtWebEngine) (12.7.0)</span><br><span class="line">Installing collected packages: PyQtWebEngine</span><br><span class="line">Successfully installed PyQtWebEngine-5.13.2</span><br><span class="line">PyQtChart could not be detected.</span><br><span class="line">Error: cannot import name <span class="string">'QtChart'</span> from <span class="string">'PyQt5'</span> (C:\Program Files\Python37\lib\site-packages\PyQt5\__init__.py)</span><br><span class="line"></span><br><span class="line">Shall <span class="string">'PyQtChart'</span> be installed using pip? (Y/n) y</span><br><span class="line">Looking <span class="keyword">in</span> indexes: https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">Collecting PyQtChart</span><br><span class="line"> Downloading https://pypi.tuna.tsinghua.edu.cn/packages/02/ea/d4daca481a8da8dfe8dd194ccd773126704744df9e71b55b19e4b8dc988e/PyQtChart-5.13.1-5.13.2-cp35.cp36.cp37.cp38-none-win_amd64.whl (848kB)</span><br><span class="line"> |████████████████████████████████| 849kB 159kB/s</span><br><span class="line">Requirement already satisfied: PyQt5>=5.13 <span class="keyword">in</span> c:\program files\python37\lib\site-packages (from PyQtChart) (5.13.2)</span><br><span class="line">Requirement already satisfied: PyQt5_sip<13,>=4.19.19 <span class="keyword">in</span> c:\program files\python37\lib\site-packages (from PyQt5>=5.13->PyQtChart) (12.7.0)</span><br><span class="line">Installing collected packages: PyQtChart</span><br><span class="line">Successfully installed PyQtChart-5.13.1</span><br><span class="line"></span><br><span class="line">Python Version: 3.7.4</span><br><span class="line">Found PyQt5</span><br><span class="line">Found pyuic5</span><br><span class="line">Found QScintilla2</span><br><span class="line">Found QtGui</span><br><span class="line">Found QtNetwork</span><br><span class="line">Found QtPrintSupport</span><br><span class="line">Found QtSql</span><br><span class="line">Found QtSvg</span><br><span class="line">Found QtWidgets</span><br><span class="line">Found QtWebEngineWidgets</span><br><span class="line">Qt Version: 5.13.0</span><br><span class="line">sip Version: 5.0.0</span><br><span class="line">PyQt Version: 5.13.0</span><br><span class="line">QScintilla Version: 2.11.3</span><br><span class="line">All dependencies ok.</span><br><span class="line"></span><br><span class="line">Cleaning up old installation ...</span><br><span class="line"></span><br><span class="line">Creating configuration file ...</span><br><span class="line"></span><br><span class="line">Compiling user interface files ...</span><br><span class="line"></span><br><span class="line">Compiling <span class="built_in">source</span> files ...</span><br><span class="line"></span><br><span class="line">Installing eric6 ...</span><br><span class="line">Installing Python API files to <span class="string">'C:\Program Files\Python37\Lib\site-packages\PyQt5\Qt\qsci\api\python'</span>.</span><br><span class="line">Installing Ruby API files to <span class="string">'C:\Program Files\Python37\Lib\site-packages\PyQt5\Qt\qsci\api\ruby'</span>.</span><br><span class="line">Installing QSS API files to <span class="string">'C:\Program Files\Python37\Lib\site-packages\PyQt5\Qt\qsci\api\qss'</span>.</span><br><span class="line"></span><br><span class="line">The Python package <span class="string">'pywin32'</span> could not be imported.</span><br><span class="line"></span><br><span class="line">Shall <span class="string">'pywin32'</span> be installed using pip? (Y/n) y</span><br><span class="line">Looking <span class="keyword">in</span> indexes: https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">Collecting pywin32</span><br><span class="line"> Downloading https://pypi.tuna.tsinghua.edu.cn/packages/bb/23/00fe4fbf9963f3bcb34a443eba0d0283fc51e5887d4045552c87490394e4/pywin32-227-cp37-cp37m-win_amd64.whl (9.1MB)</span><br><span class="line"> |████████████████████████████████| 9.1MB 819kB/s</span><br><span class="line">Installing collected packages: pywin32</span><br><span class="line">Successfully installed pywin32-227</span><br><span class="line"></span><br><span class="line">Installation complete.</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Press enter to <span class="built_in">continue</span>...</span><br></pre></td></tr></table></figure><h2 id="配置"><a class="markdownIt-Anchor" href="#配置"></a> 配置</h2><p>大部分和网上的教程一样,比如https://blog.csdn.net/qq_28019591/article/details/84567724<br>补充: 自动替换功能仁者见仁 自己按照自己喜好来 乱勾的话会很难受,网传的别人的截图都感觉很不靠谱的样子,自己多试试</p><p>最新版的是没有汉化的 英文用起来难受的话可以自己去找2017年10月发布的版本 里面有对应的中文汉化文件,但到目前为止我还没找到免费的资源,也就凑合着看8</p><p>如果遇到打不开qt designer的情况,在qt设置中,QT tools的路径设置为C:\Program Files\Python37\Lib\site-packages\pyqt5_tools\Qt\bin,即含有designer.exe的路径,这个exe在那个路径就填哪个路径,好像qt5新版的把它移除了,只能在qt-tools里面找到</p>]]></content>
<summary type="html">
<div align="center">
<img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/cloud/uuz.jpg" alt="UUZ">
</div>
<h2 id="准备"><a
</summary>
<category term="Python" scheme="http://yoursite.com/categories/Python/"/>
<category term="软件安装" scheme="http://yoursite.com/tags/%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/"/>
<category term="桌面开发" scheme="http://yoursite.com/tags/%E6%A1%8C%E9%9D%A2%E5%BC%80%E5%8F%91/"/>
<category term="PyQt" scheme="http://yoursite.com/tags/PyQt/"/>
</entry>
<entry>
<title>基于深度学习的SAR影像分类</title>
<link href="http://yoursite.com/2019/11/13/%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84SAR%E5%BD%B1%E5%83%8F%E5%88%86%E7%B1%BB/"/>
<id>http://yoursite.com/2019/11/13/基于深度学习的SAR影像分类/</id>
<published>2019-11-13T09:33:46.000Z</published>
<updated>2019-11-15T16:58:00.035Z</updated>
<content type="html"><![CDATA[<h2 id="介绍"><a class="markdownIt-Anchor" href="#介绍"></a> 介绍</h2><p>目前应用于高分辨率遥感影像分类的常用算法,其精度已无法满足大数据环境下的分类要求的问题,对于全新方法的探索十分迫切。</p><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/1.png" alt="人工神经网络(ANN)"></div><p>人工神经网络(ANN)是机器学习与人工智能领域的一种模型,ANN分类以其强大的非线性映射能力、自主学习等能力受到人们的欢迎,过往通常的遥感分类方法大多属于浅层结构模型,这些浅层结构模型的共同特点是对于原始的输入信号只经过较少层次或者非线性处理来达到信息处理的目的。但是对于一些有着复杂结构的信息源,浅层结构模型处理信息的局限性就会凸显出来。更深的层次结构意味着中间处理时的通道组合越多,拥有更复杂的多层非线性变换,而具有更强的表达与建模能力,即对于复杂信息结构的适应性更好。高分辨率遥感影像的分类是一个复杂的过程,采用浅层结构模型对其进行分类有很大的局限性,当下的大数据环境下,因为神经网络的对噪声数据的高承受能力,对未经训练的数据的模式分类能力,成为遥感影像分类方法的合理选择。</p><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/2.png" alt="SVM和CNN方法的精度对比"></div><p>卷积神经网络(Convolutional Neural Networks, CNN)是一类是为处理二维形状而特殊设计的,包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一,它的网络结构更接近于实际的生物神经网络。卷积神经网络由日本学者在1980年首次提出,时间延迟网络和LeNet-5是最早出现的卷积神经网络;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域。它使用了局部感知区域、共享权值和空间或者时间域上的降采样,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。</p><h2 id="原理"><a class="markdownIt-Anchor" href="#原理"></a> 原理</h2><p>在生物界,神经元都会将电信号从一段传递到另一端,沿着突触,将电信号从树突传递到树突。一个神经元接受了电信号,当接受信号超过一定阈值(threshold)被激发后链接电路,产生一个输出信号。</p><p>对应的,在建构人工结构时,人工神经网络中的神经元可以接受多个输入信号,并将它们加权相加得到总输入左为输入信号,通过内在的阈值函数计算得到输出结果,可以提供信号给更多的神经元。将这种神经元结构复制并构建形成多个层结构的神经网。对应生物功能,人工神经网络结构拥有一个输入层,接受输入信号之后,在其后隐含的多层结构进行相应的梯度运算,传递到输出层经过一定变换得到输出结果。每一层的节点都与所有下一层的节点通过一定的权重直接相连,通过调整节点之间的连接强度或阈值函数的形状来进行节点之间的强度调节。激活函数又称挤压函数, 因为它将一个较大的输入值域映射到较小的区间0到1。不同的激活函数引入给神经网络模型带入了非线性元素,可以处理更为复杂的问题,实际中较为常用的激活函数主要有三种,Sigmoid, tanh, 和ReLU函数。</p><p>ReLU修正线性单元 是现在在深度学习神经网络模型中使用率最高的激活函数,使用它在实际计算中非常高效,收敛速度非常快,但是函数特性可能会导致有一些神经元永远不会被激活,并且这些神经元参数不能被更新。这一般是由于模型参数在初始化的时候采用了全正或者全负的值,或者在后向传播中设置的学习率过高导致的。可以对模型参数使用更高级的初始化方法,比如Xavier方法,以及设置合理的后向传播速率,使用自适应的算法比如Adam算法</p><p>神经网络算法中,最为流行的是后向传播(Back—Propagation),根据网络实际输出结果和目标结果的差异,通过迭代地处理训练元组数据集, 更新权重和反映网络预测误差的偏倚,向后传播误差, 将每个元组的网络预测与实际知道的类标号相比较进行学习,对于每个训练样本, 修改权重使得网络预测和实际类之间的均方误差最小。这种修改“后向”进行,即由输出层,经由每个隐藏层,到第一个隐藏层(因此称作后向传播)。尽管不能保证,一般地,权重将最终收敛,学习过程停止。</p><p>以一个结构为3x3的,有input、hidden、output层组成的,的神经网络作为例,用wih表示输入层到隐藏层的权重矩阵,who表示隐藏层到输出层的权重矩阵,一次训练运算过程如下</p><figure class="highlight py"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">Inputs:输入函数矩阵</span><br><span class="line">Targets:目标结果矩阵</span><br><span class="line">hidden_inputs = wih*inputs<span class="comment">#传递到隐含层</span></span><br><span class="line">hidden_outputs = activation_function(hidden_inputs)<span class="comment">#激活函数</span></span><br><span class="line">final_inputs = who * hidden_outputs<span class="comment">#传递到输出层</span></span><br><span class="line">final_outputs = activation_function(final_inputs) </span><br><span class="line">output_errors = targets - final_outputs <span class="comment">#目标·偏差值</span></span><br><span class="line">hidden_errors = who.T * output_errors<span class="comment">#后向传播误差</span></span><br><span class="line">who += learningrate * (output_errors * final_outputs * (<span class="number">1.0</span> - final_outputs)) * hidden_outputs.T<span class="comment">#更新权重</span></span><br><span class="line">wih += learningrate * (hidden_errors * hidden_outputs * (<span class="number">1.0</span> - hidden_outputs)) * inputs.T</span><br></pre></td></tr></table></figure><p>卷积神经网络</p><p>卷积神经网络架构主要由卷积层,池化层和全连接层等核心层次构成。<br>卷积层(Convolution Layer)的主要作用是对输入的数据进行特征提取,通过卷积层中的卷积核(Filter),按照指定的步长扫描输入的数据,进行卷积运算,得到增强后的特征信息。</p><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/3.png" alt="卷积层"></div><p>池化层(pooling layer)作为卷积神经网络中的一种提取输入数据的核心特征的方式,不仅实现了原始数据的压缩,也大量减少了参与模型数据的参数,提高了一定的计算效率。池化层通过定义一个与步长相等的滑动窗口,提取目标中的重要信息,使整个窗口内的信息量减少。常被用到的有平均池化层和最大池化层,分别取的是窗口内的平均值和最大值。</p><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/4.png" alt="池化层"></div><p>全连接层的主要作用是将输入图像在经过卷积和池化之后提取的特征进行压缩,并根据压缩的特征完成模型的分类功能,即将输入的图像特征与层内预设好的权重参数相乘,得到一个压缩后的分类结果,并经过激活函数的进一步处理使得结果更明显</p><h2 id="研究实现思路"><a class="markdownIt-Anchor" href="#研究实现思路"></a> 研究实现思路</h2><p>遥感影像是通过亮度值或像元值的高低差异以及空间变化来表示不同的地物。遥感影像分类就是利用计算机对遥感影像中各类地物的光谱信息和空间信息进行分析,选择作为分类判据的特征,并用一定的手段将特征空间划分为互不重叠的子空间,然后将图像中的各个像元划归到各个子空间去。</p><p>CNN将人工神经网络技术和深度学习方法相结合,用一种基于梯度的改进反向传播法来训练网络中的权重,实现了深度学习的多层过滤器网络结构以及过滤器和分类器结合的全局训练算法,其降低了网络模型的复杂度,减少了权值的数量,在视觉图像处理领域进行的实验,得到了很好的效果,目前已成为目前图像识别领域的研究热点。</p><p>CNN利用空间关系减少需要学习的参数数目以提高一般神经网络算法的训练性能。CNN的特征监测层通过训练数据来进行学习,避免了显式的特征提取,而是隐式地从训练数据中学习特征,而且同一特征映射面上的神经元权值相同,网络可以并行学习,这也是卷积神经网络相对于其他神经网络的一个优势。在CNN中,图像的一小部分(局部感受区域)作为层级结构的最低层输入,信息再依次传输到其他不同的层,每层通过一个数字滤波器去获取观测显著特征,同时避免了特征提取和分类过程中数据重建的复杂度。</p><h2 id="尺度网络搭建"><a class="markdownIt-Anchor" href="#尺度网络搭建"></a> 尺度网络搭建</h2><p>获得高质量模型最保险的做法就是增加模型的深度(层数)或者是其宽度(层核或者神经元数但是一般情况下更深或更宽的网络会出现以下问题:<br>-1. 参数太多,容易过拟合,若训练数据集有限,这一问题更加突出;<br>-2. 网络越大计算复杂度越大,难以应用;<br>-3. 网络越深,梯度越往后穿越容易消失,难以优化模型;</p><p>GoogLeNet认为根本方法是将全连接甚至一般的卷积都转化为稀疏连接,提出了名为Inception的模块化结构来实现此目的,依据是大量的文献表明可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能。GoogLeNet做了更大胆的网络上的尝试而不像VGG继承了LENet以及AlexNet的一些框架,该模型虽然有22层,但参数量只有AlexNet的1/12。</p><p>Inception结构在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低feature map厚度的作用。</p><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/6.png" alt="池化层"></div><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/7.png" alt="池化层"></div><h2 id="裁剪样本"><a class="markdownIt-Anchor" href="#裁剪样本"></a> 裁剪样本</h2><p>由于GoogleNet网络模型输入要求为256×256像素,而在分辨率不高的SAR图像中,所代表的范围过大,包含地物很难保持一致,因此对于裁剪后的地物块进行重采样,根据分割对象大小决定对原始数据首先进行2m重采样处理, 并以此为为原始数据。如仍大小不符合输入数据尺寸,可以考虑二次乃至三次的重采样,直到大小符合输入矩阵的大小为止。</p><p>为满足不同尺度下SAR图像样本类别的判定,对预处理之后的图像,分别制作2、1、0.5m的训练样本集,构建多尺度网络模型。其中,利用3种不同重采样分辨率的样本进行不同尺度的网络模型的训练后得到的训练精度分别为94.89%、92.65%和89.57%。可以看到,随着样本尺度的降低,模型训练精度随之降低</p><p>对原始影像进行上采样并没有增加图像本身包含的信息,在同样的像素数标准下,重采样分 辨率越高,其包含的信息越少。而卷积神经网络的工作方式就是对图像进行不断向更高层次的特 征抽象,因此模型分类性能非常依赖图像包含的有效信息量,图像本身包含的有效信息越丰富, 在同样的网络训练条件下,模型分类性能越好。 通过对验证集的预测实验也证实了这个精度下降 的规律。</p><p>针对每个多尺度分割形成的对象,进行内部 样本类别统计,以确定此对象的最终类别属性, 判定原则为多数投票法。即对每个对象中裁取的 所有样本进行类别统计,同一类别样本数最多的 样本类别,即为此对象的类别。实验采用径向基函数神经网络分类算法和经典的复Wishart分类作为对比参考。</p><h2 id="进行分类"><a class="markdownIt-Anchor" href="#进行分类"></a> 进行分类</h2><div align="center"><img src="https://antrovirens-1-1258258000.cos.ap-shanghai.myqcloud.com/post/191113/8.png" alt="池化层"></div><p>将采集到的3种尺度的样本分别输入不同尺度GoogleNet网络模型,进行样本所属类别预测。针对每个多尺度分割形成的对象,进行内部样本类别统计,以确定此对象的最终类别属性,判定原则为多数投票法。即对每个对象中裁取的所有样本进行类别统计,同一类别样本数最多的样本类别,即为此对象的类别。</p><p>算法的分类结果各地物较为完整,可以更多地考虑不同地物类型的纹理特征而不会对同一种地物类型进行割裂,结合了多尺度分割和深度学习,因此在分割结果中不仅保留了良好的不同地物类型之间的边界,也能够得到较高的分类准确性</p><h2 id="精度评定"><a class="markdownIt-Anchor" href="#精度评定"></a> 精度评定</h2><p>若要评价某一变化检测技术的优劣,除了人眼对其产生的结果图主观评判之外,还需要把结果图和标准参考图相对比,并通过几个量化的指标来客观评判。变化检测任务本质上是一个分类问题,因此本文中使用相应分类的评价指标来衡量不同变化检测技术性能的优劣。<br>对一帧遥感影像进行专题分类后需要进行分类精度的评价,评价精度的因子有混淆矩阵、总体分类精度、Kappa系数、错分误差、漏分误差、每一类的制图精度和用户精度等。<br>混淆矩阵(Confusion Matrix)主要用于比较分类结果和地表真实信息的差异,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个地表真实像元的位置和分类与分类图象中的相应位置和分类像比较计算的。混淆矩阵的每一列代表了一个地表真实分类,每一列中的数值等于地表真实像元在分类图象中对应于相应类别的数量,有像元数和百分比表示两种。<br>可以将结果分为四类: 真正(True Positive, TP):被模型分类正确的正样本; 假负(False Negative, FN):被模型分类错误的正样本; 假正(False Positive, FP):被模型分类错误的负样本; 真负(True Negative, TN):被模型分类正确的负样本;</p><p>真正率(True Positive Rate, TPR),又名灵敏度(Sensitivity):分类正确的正样本个数占整个正样本个数的比例,即:</p><pre><code>TPR = TP / (TP + FN)</code></pre><p>假负率(False Negative Rate, FNR):分类错误的正样本的个数占正样本的个数的比例,即:</p><pre><code>TNR = FN / (TP + FN)</code></pre><p>假正率(False Positive Rate, FPR):分类错误的负样本个数占整个负样本个数的比例,即:</p><pre><code>FPR = FP / (FP + TN)</code></pre><p>真负率(True Negative Rate, TNR):分类正确的负样本的个数占负样本的个数的比例,即:</p><pre><code>TNR = TN / (FP + TN)</code></pre><p>准确率(Accuracy):分类正确的样本个数占所有样本个数的比例,即:</p><pre><code>ACCURACY = (TP + TN) / (TP + FN + FP + TN)</code></pre><p>平均准确率(Average per-class accuracy):每个类别下的准确率的算术平均,即:</p><pre><code>AVERAGE_ACCURACY = (TPR + TNR) / 2</code></pre><p>精确率(Precision):分类正确的正样本个数占分类器分成的所有正样本个数的比例(注意:精确率和准确率不同),即:</p><pre><code>P = TP / (TP + FP)</code></pre><p>召回率(Recall):分类正确的正样本个数占正样本个数的比例,即:</p><pre><code>R = TP / (TP + FN)</code></pre><p>Kappa系数(Kappa coefficient, KC)是另外一种计算分类精度的方法。它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类中地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果,再除以总像元数的平方差减去某一类中地表真实像元总数与该类中被分类像元总数之积对所有类别求和的结果所得到的。kappa的值越高,结果越好</p><p>假设图像的总像素为N,参考图像中未改变的像素数量为Nu,改变的像素的数量为Nc。于是我们将参考图像(ground truth)与用算法产生的变化图像进行逐像素比较。<br>则有:</p><pre><code>Nu=FP+TNNc=FN+TPOE=FN+FPKC = (PRA−PRE) / (1−PRE)</code></pre><p>其中:</p><pre><code>PRA = (TP+TN) / NPRE = ((TP + FP) * Nc + (FN + TN) * Nu) / N2</code></pre>]]></content>
<summary type="html">
<h2 id="介绍"><a class="markdownIt-Anchor" href="#介绍"></a> 介绍</h2>
<p>目前应用于高分辨率遥感影像分类的常用算法,其精度已无法满足大数据环境下的分类要求的问题,对于全新方法的探索十分迫切。</p>
<div alig
</summary>
<category term="深度学习" scheme="http://yoursite.com/categories/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/"/>
<category term="遥感影像分类" scheme="http://yoursite.com/tags/%E9%81%A5%E6%84%9F%E5%BD%B1%E5%83%8F%E5%88%86%E7%B1%BB/"/>
<category term="极化SAR影像" scheme="http://yoursite.com/tags/%E6%9E%81%E5%8C%96SAR%E5%BD%B1%E5%83%8F/"/>
<category term="卷积神经网络" scheme="http://yoursite.com/tags/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/"/>
</entry>
<entry>
<title>数字测图实习 - CAD二次开发</title>
<link href="http://yoursite.com/2019/08/31/%E6%95%B0%E5%AD%97%E6%B5%8B%E5%9B%BE%E5%AE%9E%E4%B9%A0-CAD%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91/"/>
<id>http://yoursite.com/2019/08/31/数字测图实习-CAD二次开发/</id>
<published>2019-08-31T04:15:20.000Z</published>
<updated>2019-09-02T13:39:18.678Z</updated>
<content type="html"><![CDATA[<h2 id="基础知识"><a class="markdownIt-Anchor" href="#基础知识"></a> <em>基础知识</em></h2><p><strong>形文件的编写</strong></p><p>形文件的格式: 最后一行一回车结束;形编号取值1-158;形名称必须大写;形文件的每一行最多可包含128个字符;字节数量表示从第二行开始的短句数目,包括最后的结束符0;一个shp文件中可以包括多个形文件,且与文件名没有关系;</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">形编号,字节数量,形名称(大写)</span><br><span class="line">代码1,代码2,···,0</span><br></pre></td></tr></table></figure><p>常用格式</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">标准矢量 格式:0DF</span><br><span class="line">普通矢量 格式:08,( Δx,Δy, )</span><br><span class="line">多段连续的矢量 格式:09,( Δx,Δy ,··· Δxn,Δyn,0,0 )</span><br><span class="line">八分圆弧 格式:0A,R,±0SC</span><br><span class="line">普通圆弧 格式:0B,start_offset,end_offset,high_radius,radius,±0SC</span><br><span class="line">普通圆弧 格式:0C, Δx,Δy, ,±凸度 凸度=±127*2H/D</span><br><span class="line">连续圆弧 格式:0D,(Δx1,Δy1, ,±凸度1,···, Δxn,Δyn, ,±凸度n,0,0)</span><br><span class="line">引用子形 格式:07,子形编号</span><br></pre></td></tr></table></figure><p>绘制过程:compile load shape</p><p><strong>线性文件的编写</strong></p><p>简单线型的定义</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">简单线型的定义</span><br><span class="line">标题行:*linetype-name[,description]</span><br><span class="line">描述行:A,patdesc1,patdesc2,patdesc3,······</span><br><span class="line">*:标题行的标记;</span><br><span class="line">A:表示对齐方式,两端对齐;</span><br><span class="line">Patdesci:短划线的长度。若Patdesci>0,表示是实线段长,若Patdesci<0,表示是虚线段长,若Patdesci=0,表示是一个点。</span><br><span class="line"></span><br><span class="line">定义嵌入文本的线型</span><br><span class="line">标题行:</span><br><span class="line">*linetype-name[,description]</span><br><span class="line">描述行:</span><br><span class="line">A,p1,p2,···,[“string”,stylename,R=n,A=n,S=n,X=n,Y=n],pi,pi+1,···</span><br><span class="line"></span><br><span class="line">R为相对于当前线段的旋转角;A为相对于水平方向的旋转角。两者默认值均为0。</span><br><span class="line">S为比例因子,如果字样为固定高,则S与字样高度相乘;如果字样高度不固定,则S为字样高。S的默认值为1。</span><br><span class="line">X,Y为偏移距离,默认值为0。</span><br><span class="line"></span><br><span class="line">定义嵌入符号的线型</span><br><span class="line">标题行:</span><br><span class="line">*linetype-name[,description]</span><br><span class="line">描述行:</span><br><span class="line">A,p1,p2,···,[shapename,shapefile,R=n,A=n,S=n,X=n,Y=n],pi,pi+1,···</span><br></pre></td></tr></table></figure><p><strong>填充文件的编写</strong></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">定义CAD图案填充符号</span><br><span class="line">*name</span><br><span class="line">Angle,X-0rgin,Y-orgin,D-L,D-offset,L1,L2,…..</span><br><span class="line">Name:图案名称</span><br><span class="line">Angle:填充线的角度</span><br><span class="line">X-orgin:填充线起点X坐标</span><br><span class="line">Y-orgin :填充线起点Y坐标</span><br><span class="line">D-L:下一根线在长度方向的位移</span><br><span class="line">D-offset:下一根线在垂直方向上的位移</span><br><span class="line">L:线型描述</span><br></pre></td></tr></table></figure><h2 id="day1-shp-files"><a class="markdownIt-Anchor" href="#day1-shp-files"></a> DAY1 .shp files</h2><p>窑 32</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">*01,24,Y</span><br><span class="line">3,10</span><br><span class="line">1,0A,11,022,</span><br><span class="line">4,10,</span><br><span class="line">3,5,</span><br><span class="line">2,0B0,</span><br><span class="line">4,5,</span><br><span class="line">3,10,</span><br><span class="line">1,0A,11,002,</span><br><span class="line">0B4,</span><br><span class="line">4,10,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>水塔 30</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">*02,28,ST</span><br><span class="line">2,018,</span><br><span class="line">1,020,</span><br><span class="line">3,5,</span><br><span class="line">2,028,</span><br><span class="line">1,0A4,020,054,058,034,</span><br><span class="line">2,03C,</span><br><span class="line">1,058,05C,020,0AC,</span><br><span class="line">2,0A4,</span><br><span class="line">1,060,</span><br><span class="line">4,5,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>露天设备 32</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">*03,40,LTSB</span><br><span class="line">3,4,</span><br><span class="line">2,058,</span><br><span class="line">4,4,</span><br><span class="line">3,10,</span><br><span class="line">1,0D4,</span><br><span class="line">4,5,</span><br><span class="line">050,</span><br><span class="line">3,5,</span><br><span class="line">0DC,</span><br><span class="line">4,10,</span><br><span class="line">3,4,</span><br><span class="line">2,058,</span><br><span class="line">4,4,</span><br><span class="line">3,10,</span><br><span class="line">0D4,</span><br><span class="line">1,0C4,</span><br><span class="line">4,10,</span><br><span class="line">3,4,</span><br><span class="line">2,058,</span><br><span class="line">1,0A0,</span><br><span class="line">4,4,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>水磨坊,水车34</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">*04,29,SMF</span><br><span class="line">3,10</span><br><span class="line">2,068,</span><br><span class="line">0A,6,040</span><br><span class="line">1,088,084</span><br><span class="line">2,0E0,02C,</span><br><span class="line">1,084,080,</span><br><span class="line">2,0EC,028,</span><br><span class="line">1,080,08C,</span><br><span class="line">2,0E8,024,</span><br><span class="line">1,08C,088,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>气象台(站)42 4.3.78</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">*05,38,QXZ</span><br><span class="line">3,10,</span><br><span class="line">2,068,</span><br><span class="line">1,0C0,</span><br><span class="line">2,068,</span><br><span class="line">4,10,</span><br><span class="line">1,044,</span><br><span class="line">3,10,</span><br><span class="line">1,0F8,066,</span><br><span class="line">2,06E,</span><br><span class="line">1,06A,</span><br><span class="line">2,062,</span><br><span class="line">2,0F0,</span><br><span class="line">1,0F0,030,066,</span><br><span class="line">2,06E,</span><br><span class="line">1,06A,</span><br><span class="line">2,062,</span><br><span class="line">4,10,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>停泊场(锚地)62</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">*06,49,TBC</span><br><span class="line">1,</span><br><span class="line">0A,2,-061,</span><br><span class="line">3,5,</span><br><span class="line">01C,</span><br><span class="line">2,014,</span><br><span class="line">1,01F,</span><br><span class="line">2,017,</span><br><span class="line">4,5,</span><br><span class="line">1,</span><br><span class="line">0A,2,052,</span><br><span class="line">3,5,</span><br><span class="line">01C,</span><br><span class="line">2,014,</span><br><span class="line">1,019,</span><br><span class="line">2,011,</span><br><span class="line">4,5,</span><br><span class="line">0A,2,-071,</span><br><span class="line">3,2,</span><br><span class="line">1,044,</span><br><span class="line">3,5,</span><br><span class="line">068,0C0,068,</span><br><span class="line">044,</span><br><span class="line">0A,6,060,</span><br><span class="line">4,10,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>路标 60</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">*07,23,LB</span><br><span class="line">1,010,</span><br><span class="line">2,018,</span><br><span class="line">1,034,</span><br><span class="line">1,</span><br><span class="line">3,50,</span><br><span class="line">09,69,40,-69,-40,69,-40,-69,40,0,0,</span><br><span class="line">4,50,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>电信交接箱 68</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">*08,43,DXJJX</span><br><span class="line">2,014,1,</span><br><span class="line">3,2,</span><br><span class="line">09,-1,-2,0,4,1,0,0,-2,0,2,1,0,0,-4,-1,2,0,0,</span><br><span class="line">2,02C,</span><br><span class="line">1,028,</span><br><span class="line">2,014,</span><br><span class="line">1,010,</span><br><span class="line">2,020,</span><br><span class="line">1,010,</span><br><span class="line">2,01C,</span><br><span class="line">1,028,</span><br><span class="line">4,2,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>信号杆 62</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">*09,21,XHG</span><br><span class="line">3,2,</span><br><span class="line">1,018,020,018,074,028,040,</span><br><span class="line">3,5,</span><br><span class="line">2,048,</span><br><span class="line">1,08C,</span><br><span class="line">0A,4,020,</span><br><span class="line">4,10,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><p>路灯 48</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">*10,24,LD</span><br><span class="line">3,10,</span><br><span class="line">1,078,03C,</span><br><span class="line">0A,4,020,</span><br><span class="line">034,0E0,03C,</span><br><span class="line">0A,4,020,</span><br><span class="line">034,078,0FC,03C,</span><br><span class="line">0A,5,020,</span><br><span class="line">4,10,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><h2 id="day2-lin-files"><a class="markdownIt-Anchor" href="#day2-lin-files"></a> DAY2 .lin files</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">*xuxian, - - - - -</span><br><span class="line">A,1,-1</span><br><span class="line"></span><br><span class="line">*dianhuaxian, __ . __</span><br><span class="line">A,4,-1,0,-1</span><br><span class="line"></span><br><span class="line">*shui, - water -</span><br><span class="line">A,10,["WATER",standard,R=0,A=0,S=1,X=0.5,Y=-0.5],-6</span><br><span class="line"></span><br><span class="line">*weidingjie,___ _ ___</span><br><span class="line">A,4.5,-1,1.5,-1</span><br><span class="line"></span><br><span class="line">*hot, - hot -</span><br><span class="line">A,8,[HOT,C:\Users\sheld\Desktop\housework\shape for lines.shx],-2,8,["HOT",standard,R=0,A=0,S=1,X=0.5,Y=-0.5],-4,8,[HOT,C:\Users\sheld\Desktop\housework\shape for lines.shx],-2,8</span><br><span class="line"></span><br><span class="line">*shilong</span><br><span class="line">A,0,[SHILEI,C:\Users\sheld\Desktop\housework\shape for lines.shx],-2</span><br><span class="line"></span><br><span class="line">*shui2</span><br><span class="line">A,10,[CIRCLE,C:\Users\sheld\Desktop\housework\shape for lines.shx],-1</span><br><span class="line"></span><br><span class="line">*doubleline2,=(简陋版)</span><br><span class="line">A,0,[DOUBLELINE,C:\Users\sheld\Desktop\housework\shape for lines.shx,Y=1],-1</span><br><span class="line"></span><br><span class="line">*tiesiwang, - X -(简陋版)</span><br><span class="line">A,8,["X",standard,R=0,A=0,S=1,X=0.5,Y=-0.5],-2</span><br><span class="line"></span><br><span class="line">*zhalan, - + -(简陋版)</span><br><span class="line">A,8,["+",standard,R=0,A=0,S=1,X=0.5,Y=-0.5],-2</span><br></pre></td></tr></table></figure><p>shape for lines</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">*1,17,SHILEI</span><br><span class="line">3,10,</span><br><span class="line">1,</span><br><span class="line">09,12,8,8,-8,-8,-8,-12,8,0,0</span><br><span class="line">4,10,</span><br><span class="line">0</span><br><span class="line"></span><br><span class="line">*2,9,CIRCLE</span><br><span class="line">3,2,1,0A,1,040,4,2,0</span><br><span class="line"></span><br><span class="line">*3,21,HOT</span><br><span class="line">1,09,</span><br><span class="line">0,1,</span><br><span class="line">2,0,</span><br><span class="line">0,-2,</span><br><span class="line">-2,0,</span><br><span class="line">0,2,</span><br><span class="line">2,-2,</span><br><span class="line">-2,0,</span><br><span class="line">2,2,</span><br><span class="line">0,0,</span><br><span class="line">0</span><br><span class="line"></span><br><span class="line">*4,9,DOUBLELINE</span><br><span class="line">2,014,</span><br><span class="line">1,010,</span><br><span class="line">2,02C,</span><br><span class="line">1,018,</span><br><span class="line">0</span><br></pre></td></tr></table></figure><h2 id="day3-pat-files"><a class="markdownIt-Anchor" href="#day3-pat-files"></a> DAY3 .pat files</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br></pre></td><td class="code"><pre><span class="line">*HD</span><br><span class="line">0,0,0,10,10,2.5,-17.5</span><br><span class="line">90,0.6,0,10,10,1.3,-18.7</span><br><span class="line">90,1.9,0,10,10,1.3,-18.7</span><br><span class="line"></span><br><span class="line">*SNT</span><br><span class="line">0,0.1,0.1,1.5,1.5,0,-1.5</span><br><span class="line">0,0,0,3.0,1.5,3,-3</span><br><span class="line"></span><br><span class="line">*ST</span><br><span class="line">0,0,0,10,10,1,-19</span><br><span class="line">90,0,0,10,10,2.5,-17.5</span><br><span class="line"></span><br><span class="line">*TC</span><br><span class="line">90,0,0,0,20,3.6,-17</span><br><span class="line">90,1.2,0,0,20,3.6,-17</span><br><span class="line">90,10,10,0,20,3.6,-17</span><br><span class="line">90,11.2,10,0,20,3.6,-17</span><br><span class="line"></span><br><span class="line">*XIAN</span><br><span class="line">90,0,0,0,20,3.6,-17</span><br><span class="line">90,1.2,0,0,20,3.6,-17</span><br><span class="line">90,2.4,0,0,20,3.6,-17</span><br><span class="line">90,10,10,0,20,3.6,-17</span><br><span class="line">90,11.2,10,0,20,3.6,-17</span><br><span class="line">90,12.4,10,0,20,3.6,-17</span><br><span class="line"></span><br><span class="line">*YJD</span><br><span class="line">90,0,0,0,40,3.6,-17</span><br><span class="line">90,1.2,0.6,0,40,3.6,-17</span><br><span class="line">90,2.4,1.2,0,40,3.6,-17</span><br><span class="line">90,10,10,0,40,3.6,-17</span><br><span class="line">90,11.2,10.6,0,40,3.6,-17</span><br><span class="line">90,12.4,11.2,0,40,3.6,-17</span><br><span class="line">90,20,1.2,0,40,3.6,-17</span><br><span class="line">90,21.2,0.6,0,40,3.6,-17</span><br><span class="line">90,22.4,0,0,40,3.6,-17</span><br><span class="line">90,30,11.2,0,40,3.6,-17</span><br><span class="line">90,31.2,10.6,0,40,3.6,-17</span><br><span class="line">90,32.4,10,0,40,3.6,-17</span><br><span class="line"></span><br><span class="line">*YND</span><br><span class="line">0,0,0,3.0,1.5,3,-3</span><br></pre></td></tr></table></figure><h2 id="day4-day6-vlisp"><a class="markdownIt-Anchor" href="#day4-day6-vlisp"></a> DAY4-DAY6 VLISP</h2><p>2.1数据转换程序<br>1,X,Y,H or 1,X Y H -> 1 Y X H</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> c<span class="symbol">:sjzh</span>()</span><br><span class="line"> (<span class="name">setq</span> ff (<span class="name">open</span>(<span class="name">getfiled</span> <span class="string">"请选择需转换数据文件:"</span> <span class="string">""</span> <span class="string">"txt"</span> <span class="number">2</span>) <span class="string">"r"</span>)) <span class="comment">;getfiled 读取模式</span></span><br><span class="line"> (<span class="name">setq</span> rr (<span class="name">open</span> <span class="string">"c:\\Users\\sheld\\Desktop\\housework\\vlisp\\data\\zhjg.txt"</span> <span class="string">"w"</span>)) <span class="comment">;写入模式</span></span><br><span class="line"> <span class="comment">;;;</span></span><br><span class="line"> <span class="comment">;;;;;</span></span><br><span class="line"> (<span class="name">while</span> (<span class="name">setq</span> zb (<span class="name">read-line</span> ff)) <span class="comment">;循环条件</span></span><br><span class="line"></span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">while</span>(<span class="name">vl-string-search</span> <span class="string">","</span> zb) <span class="comment">;vl-string-search;在一个字符串中搜寻特定模式</span></span><br><span class="line"> (<span class="name">setq</span> zb (<span class="name">vl-string-subst</span> <span class="string">" "</span> <span class="string">","</span> zb)) <span class="comment">;v1-string-subset;在一个字符串中,用一个字符串替代另一个字符串</span></span><br><span class="line"> ) <span class="comment">;用空格代替逗号</span></span><br><span class="line"> (<span class="name">setq</span> zb (<span class="name">read</span>(<span class="name">strcat</span> <span class="string">"("</span> zb <span class="string">")"</span>))) <span class="comment">;strcat 字符串合并</span></span><br><span class="line"> (<span class="name">setq</span> n1 (<span class="name">vl-princ-to-string</span>(<span class="name">nth</span> <span class="number">0</span> zb))) <span class="comment">; nth 读取表中的第i+1个元素(从0开始) 1指第二个元素</span></span><br><span class="line"> (<span class="name">setq</span> n2 (<span class="name">vl-princ-to-string</span>(<span class="name">nth</span> <span class="number">2</span> zb))) <span class="comment">;last 获取最后一个元素 vl-price-to-string;返回LISP数据的字符串代表,</span></span><br><span class="line"> (<span class="name">setq</span> n3 (<span class="name">vl-princ-to-string</span>(<span class="name">nth</span> <span class="number">1</span> zb)))</span><br><span class="line"> (<span class="name">setq</span> n4 (<span class="name">vl-princ-to-string</span>(<span class="name">nth</span> <span class="number">3</span> zb)))</span><br><span class="line"> (<span class="name">setq</span> zb (<span class="name">strcat</span> n1 <span class="string">" "</span> n2 <span class="string">" "</span> n3 <span class="string">" "</span> n4)) <span class="comment">;调换顺序</span></span><br><span class="line"> (<span class="name">write-line</span> zb rr) <span class="comment">;按行写入文本文件</span></span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">close</span> rr) <span class="comment">;关闭流</span></span><br><span class="line"> (<span class="name">close</span> ff)</span><br><span class="line"> )</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">2.2创建图层程序</span><br><span class="line"></span><br><span class="line">(<span class="name">defun</span> c<span class="symbol">:xjtc</span>()</span><br><span class="line">(<span class="name">entmake</span> (<span class="name">list</span> '(<span class="number">0</span> . <span class="string">"LAYER"</span>) <span class="comment">;entmake创建实体,0:实体类型</span></span><br><span class="line">(<span class="number">100</span> . <span class="string">"AcDbSymbolTableRecord"</span>) <span class="comment">;子类标记</span></span><br><span class="line">(<span class="number">100</span> . <span class="string">"AcDbLayerTableRecord"</span>) <span class="comment">;子类标记</span></span><br><span class="line">(<span class="number">70</span> . <span class="number">0</span>) <span class="comment">;70:可见</span></span><br><span class="line">(<span class="number">6</span> . <span class="string">"Continuous"</span>) <span class="comment">;6:线型</span></span><br><span class="line">(<span class="number">62</span> . <span class="number">7</span>)<span class="comment">;62:颜色</span></span><br><span class="line">(<span class="number">370</span> . <span class="number">0</span>)<span class="comment">;370:线宽</span></span><br><span class="line">(<span class="name">cons</span> <span class="number">2</span> <span class="string">"new layer"</span>)))<span class="comment">;2:图层名</span></span><br><span class="line"> )</span><br></pre></td></tr></table></figure><p>2.3展点程序<br>点号与点,高程分层</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> c<span class="symbol">:kszd2</span>()</span><br><span class="line">(<span class="name">vl-load</span> com) <span class="comment">;加载支持函数</span></span><br><span class="line">(<span class="name">setq</span> acadObject (<span class="name">vlax-get-acad-object</span>)) <span class="comment">;建立连接</span></span><br><span class="line">(<span class="name">setq</span> acadDocument (<span class="name">vla-get-ActiveDocument</span> acadObject))</span><br><span class="line">(<span class="name">setq</span> mySpace (<span class="name">vla-get-ModelSpace</span> acadDocument))</span><br><span class="line">(<span class="name">setq</span> Layer-pt-Ele <span class="string">"高程注记"</span></span><br><span class="line"> Layer-pt-Sn <span class="string">"点号注记"</span></span><br><span class="line"> Layer-pt <span class="string">"展点"</span></span><br><span class="line">)</span><br><span class="line">(<span class="name">if</span> (<span class="name">=</span>(<span class="name">tblsearch</span> <span class="string">"layer"</span> Layer-pt-Ele)<span class="literal">nil</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"layer"</span> <span class="string">"n"</span> Layer-pt-Ele <span class="string">""</span>))</span><br><span class="line">(<span class="name">if</span> (<span class="name">=</span>(<span class="name">tblsearch</span> <span class="string">"layer"</span> Layer-pt-Sn)<span class="literal">nil</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"layer"</span> <span class="string">"n"</span> Layer-pt-Sn <span class="string">""</span>))</span><br><span class="line">(<span class="name">if</span> (<span class="name">=</span>(<span class="name">tblsearch</span> <span class="string">"layer"</span> Layer-pt)<span class="literal">nil</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"layer"</span> <span class="string">"n"</span> Layer-pt <span class="string">""</span>))</span><br><span class="line">(<span class="name">setvar</span> <span class="string">"cmdecho"</span> <span class="number">0</span>)</span><br><span class="line">(<span class="name">setvar</span> <span class="string">"osmode"</span> <span class="number">0</span>)</span><br><span class="line">(<span class="name">setvar</span> <span class="string">"clayer"</span> Layer-pt)</span><br><span class="line">(<span class="name">setq</span> Pt-list <span class="literal">nil</span>)</span><br><span class="line">(<span class="name">setq</span> F-coordinates (<span class="name">open</span>(<span class="name">getfiled</span> <span class="string">"请选择数据文件:"</span> <span class="string">""</span> <span class="string">"txt"</span> <span class="number">2</span>)<span class="string">"r"</span>))</span><br><span class="line">(<span class="name">while</span> (<span class="name">setq</span> Info-Line(<span class="name">read-line</span> F-coordinates))</span><br><span class="line"> </span><br><span class="line"> (<span class="name">while</span>(<span class="name">vl-string-search</span> <span class="string">","</span> Info-Line)</span><br><span class="line"> (<span class="name">setq</span> Info-Line(<span class="name">vl-string-subst</span> <span class="string">" "</span> <span class="string">","</span> Info-Line)))</span><br><span class="line"></span><br><span class="line"> (<span class="name">setq</span> Info-Line (<span class="name">read</span> (<span class="name">strcat</span> <span class="string">"("</span>Info-Line <span class="string">")"</span>))</span><br><span class="line"></span><br><span class="line"> pt-sigle (<span class="name">list</span></span><br><span class="line">(<span class="name">nth</span> <span class="number">2</span> Info-Line)</span><br><span class="line">(<span class="name">nth</span> <span class="number">1</span> Info-Line)</span><br><span class="line">(<span class="name">nth</span> <span class="number">3</span> Info-Line))</span><br><span class="line"> sn (<span class="name">vl-princ-to-string</span> (<span class="name">car</span> Info-Line))</span><br><span class="line"> ele (<span class="name">vl-princ-to-string</span> (<span class="name">last</span> Info-Line))</span><br><span class="line"> pt-list(<span class="name">append</span> pt-list(<span class="name">list</span>(<span class="name">list</span> pt-sigle sn ele)))</span><br><span class="line">)</span><br><span class="line"> )</span><br><span class="line">(<span class="name">close</span> F-coordinates)</span><br><span class="line">(<span class="name">setq</span> Pt-sort (<span class="name">vl-sort</span> Pt-list</span><br><span class="line"> '(lambda (e1 e2)</span><br><span class="line"> (< (car (car e1))</span><br><span class="line">(car (car e2)))))</span><br><span class="line"> x0 (<span class="name">car</span> (<span class="name">car</span> (<span class="name">car</span> Pt-sort)))</span><br><span class="line"> x1 (<span class="name">car</span> (<span class="name">car</span> (<span class="name">last</span> Pt-sort)))</span><br><span class="line"> Pt-sort (<span class="name">vl-sort</span> Pt-list</span><br><span class="line"> '(lambda (e1 e2)</span><br><span class="line"> (< (cadr (car e1))</span><br><span class="line"> (cadr (car e2))</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> y0 (<span class="name">cadr</span> (<span class="name">car</span> (<span class="name">car</span> Pt-sort)))</span><br><span class="line"> y1 (<span class="name">cadr</span> (<span class="name">car</span> (<span class="name">last</span> Pt-sort)))</span><br><span class="line"> )</span><br><span class="line">(<span class="name">command</span> <span class="string">"zoom"</span> <span class="string">"w"</span>(<span class="name">list</span> x0 y0) (<span class="name">list</span> x1 y1))</span><br><span class="line"></span><br><span class="line">(<span class="name">setq</span> note-ele-set (<span class="name">ssadd</span>)</span><br><span class="line"> note-sn-set (<span class="name">ssadd</span>))</span><br><span class="line">(<span class="name">foreach</span> pt-every Pt-list</span><br><span class="line"> (<span class="name">setq</span> pt1(<span class="name">car</span> pt-every) <span class="comment">;坐标点</span></span><br><span class="line">pt2(<span class="name">mapcar</span> '+ pt1 '( <span class="number">1.5</span> <span class="number">-1.25</span> <span class="number">0.0</span>)) <span class="comment">;高程注记位置</span></span><br><span class="line">pt3(<span class="name">mapcar</span> '+ pt1 '(<span class="number">-5.5</span> <span class="number">-1.25</span> <span class="number">0.0</span>)) <span class="comment">;点号注记位置</span></span><br><span class="line"> )</span><br><span class="line"> (<span class="name">setq</span> note-ele (<span class="name">last</span> pt-every)</span><br><span class="line">note-sn (<span class="name">cadr</span> pt-every)</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">setq</span> pt1-obj (<span class="name">vlax-3d-point</span> pt1)</span><br><span class="line">pt2-obj (<span class="name">vlax-3d-point</span> pt2)</span><br><span class="line">pt3-obj (<span class="name">vlax-3d-point</span> pt3)</span><br><span class="line">)</span><br><span class="line"> (<span class="name">vla-AddPoint</span> mySpace pt1-obj)</span><br><span class="line"> (<span class="name">vla-Addtext</span> mySpace note-ele pt2-obj <span class="number">3</span>)</span><br><span class="line"> (<span class="name">ssadd</span> (<span class="name">entlast</span>) note-ele-set)</span><br><span class="line"> (<span class="name">vla-Addtext</span> mySpace note-sn pt3-obj <span class="number">3</span>)</span><br><span class="line"> (<span class="name">ssadd</span> (<span class="name">entlast</span>) note-sn-set)</span><br><span class="line"> )</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"> (<span class="name">command</span> <span class="string">"select"</span> note-ele-set <span class="string">""</span>)</span><br><span class="line">(<span class="name">setq</span> ss-ele (<span class="name">vla-get-ActiveSelecrtionSet</span> acadDocument))</span><br><span class="line">(<span class="name">vlax-for</span> ele-every ss-ele (<span class="name">vla-put-layer</span> ele-every Layer-Pt-Ele))</span><br><span class="line"></span><br><span class="line">(<span class="name">command</span> <span class="string">"select"</span> note-sn-set <span class="string">""</span>)</span><br><span class="line">(<span class="name">setq</span> ss-sn (<span class="name">vla-get-ActiveSelecrtionSet</span> acadDocument))</span><br><span class="line">(<span class="name">vlax-for</span> sn-every ss-sn (<span class="name">vla-put-layer</span> sn-every Layer-Pt-Sn))</span><br><span class="line">(<span class="name">princ</span>)</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>2.4陡坎绘制程序</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> dk_single() <span class="comment">;定义函数 无参数 绘制单条陡坎</span></span><br><span class="line"> (<span class="name">setq</span> distance_line (<span class="name">distance</span> first_p end_p))<span class="comment">; 赋值函数 例如 setq a 3</span></span><br><span class="line"> (<span class="name">setq</span> repeat_time (<span class="name">fix</span> (<span class="name">/</span> distance_line <span class="number">4</span>))) <span class="comment">;设置重复次数</span></span><br><span class="line"></span><br><span class="line"> (<span class="name">setq</span> angle_line (<span class="name">angle</span> first_p end_p))</span><br><span class="line"> (<span class="name">setq</span> angle_vertical (<span class="name">+</span> angle_line (<span class="name">/</span> (<span class="name">*</span> fx pi) <span class="number">2.0</span>)))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> first_p end_p <span class="string">""</span>)<span class="comment">; 画直线</span></span><br><span class="line"> (<span class="name">setq</span> pt1 first_p)</span><br><span class="line"> (<span class="name">repeat</span> repeat_time</span><br><span class="line"> (<span class="name">setq</span> pt2 (<span class="name">polar</span> pt1 angle_vertical <span class="number">5.0</span>)) <span class="comment">;极坐标获取点坐标</span></span><br><span class="line"> (<span class="name">setq</span> pt3 (<span class="name">polar</span> pt1 angle_line <span class="number">2.0</span>))</span><br><span class="line"> (<span class="name">setq</span> pt4 (<span class="name">polar</span> pt3 angle_vertical <span class="number">1.0</span>))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 pt2 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt3 pt4 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">setq</span> pt1 (<span class="name">polar</span> pt3 angle_line <span class="number">2.0</span>))</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">setq</span> pt1 (<span class="name">polar</span> first_p angle_line (<span class="name">*</span> repeat_time <span class="number">4.0</span>))) <span class="comment">;</span></span><br><span class="line"> (<span class="name">setq</span> distance_rest (<span class="name">distance</span> pt1 end_p))</span><br><span class="line"> (<span class="name">setq</span> pt2 (<span class="name">polar</span> pt1 angle_vertical <span class="number">5.0</span>))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 pt2 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">if</span></span><br><span class="line"> (<span class="name">=</span> (<span class="name">fix</span> (<span class="name">/</span> distance_rest <span class="number">2</span>)) <span class="number">1</span>)</span><br><span class="line"> (<span class="name">progn</span> </span><br><span class="line">(<span class="name">setq</span> pt3 (<span class="name">polar</span> pt1 angle_line <span class="number">2.0</span>))</span><br><span class="line"> (<span class="name">setq</span> pt4 (<span class="name">polar</span> pt3 angle_vertical <span class="number">1.0</span>))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt3 pt4 <span class="string">""</span>)</span><br><span class="line">(<span class="name">command</span> <span class="string">"line"</span> pt1 end_p <span class="string">""</span>)</span><br><span class="line">)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 end_p <span class="string">""</span>)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"></span><br><span class="line">(<span class="name">defun</span> c<span class="symbol">:hzdk</span>()</span><br><span class="line"> (<span class="name">setq</span> old_os (<span class="name">getvar</span> <span class="string">"osmode"</span>))</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> <span class="number">0</span>)</span><br><span class="line"> </span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"Limmin"</span> '(<span class="number">0.0</span> <span class="number">0.0</span>))</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"Limmax"</span> '(<span class="number">420.0</span> <span class="number">297.0</span>))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"zoom"</span> <span class="string">"all"</span>)</span><br><span class="line"></span><br><span class="line"> (<span class="name">setq</span> first_p (<span class="name">getpoint</span> <span class="string">"\n enter a point"</span>))</span><br><span class="line"> (<span class="name">setq</span> end_p (<span class="name">getpoint</span> first_p <span class="string">"\n enter a point"</span>))</span><br><span class="line"> (<span class="name">initget</span> <span class="string">"Left Right"</span>)</span><br><span class="line"> (<span class="name">setq</span> side (<span class="name">getkword</span> <span class="string">"\n choose the side of DP(Left or Right)<Left>"</span>))</span><br><span class="line"> (<span class="name">if</span></span><br><span class="line"> (<span class="name">=</span> side <span class="string">"Right"</span>)</span><br><span class="line"> (<span class="name">setq</span> fx <span class="number">-1.0</span>)</span><br><span class="line"> (<span class="name">setq</span> fx <span class="number">1.0</span>)</span><br><span class="line"> )</span><br><span class="line"></span><br><span class="line"> (<span class="name">while</span> end_p <span class="comment">;点存在</span></span><br><span class="line"> (<span class="name">progn</span> <span class="comment">;语句组</span></span><br><span class="line"> (<span class="name">dk_single</span>)</span><br><span class="line"> (<span class="name">setq</span> first_p end_p)</span><br><span class="line"> (<span class="name">setq</span> end_p (<span class="name">getpoint</span> first_p <span class="string">"\n enter a point"</span>))</span><br><span class="line"> )</span><br><span class="line"> </span><br><span class="line"> )</span><br><span class="line"></span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 pt2 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> old_os)</span><br><span class="line"> )</span><br></pre></td></tr></table></figure><p>2.5旱地绘制程序</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> c<span class="symbol">:tchd</span>()</span><br><span class="line"> (<span class="name">setq</span> os (<span class="name">getvar</span> <span class="string">"osmode"</span>)</span><br><span class="line">cm (<span class="name">getvar</span> <span class="string">"cmdecho"</span>))</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"cmdecho"</span> <span class="number">0</span>)</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> <span class="number">33</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"_undo"</span> <span class="string">"be"</span>)</span><br><span class="line"> (<span class="name">if</span> (<span class="name">setq</span> p1 (<span class="name">getpoint</span> <span class="string">"\n指定第一点p1:"</span>))</span><br><span class="line"> (<span class="name">if</span> (<span class="name">setq</span> p2 (<span class="name">getpoint</span> p1 <span class="string">"\n指定第二点p2:"</span>))</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">if</span> (<span class="name">setq</span> r (<span class="name">distance</span> p1 p2 ))</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> <span class="number">33</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"circle"</span> p1 r)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"_hatch"</span><span class="string">"HD"</span> entlast <span class="string">"0"</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"_chprop"</span> (<span class="name">entlast</span>) <span class="string">""</span> <span class="string">"c"</span> <span class="number">1</span> <span class="string">""</span>))</span><br><span class="line"> ))</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">command</span> <span class="string">"_undo"</span> <span class="string">"e"</span>)</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"cmdecho"</span> cm)</span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> os)(<span class="name">princ</span>)</span><br><span class="line"> )</span><br></pre></td></tr></table></figure><p>2.6绘制平行线程序</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> c<span class="symbol">:hxpxx</span>()</span><br><span class="line">(<span class="name">vl-load-com</span>) <span class="comment">;; load ActiveX support fuction</span></span><br><span class="line">(<span class="name">setq</span> MY_ModelSpace(<span class="name">vla-get-Modelspace</span> (<span class="name">vla-get-activedocument</span> (<span class="name">vlax-get-acad-object</span>)))) <span class="comment">;当下 模型控件对象-文档对象-acad</span></span><br><span class="line"><span class="comment">;;</span></span><br><span class="line">(<span class="name">setq</span> first_p (<span class="name">getpoint</span> <span class="string">"\n input a point:"</span>))</span><br><span class="line">(<span class="name">setq</span> second_p (<span class="name">getpoint</span> first_p <span class="string">"\n input the second point:"</span>))</span><br><span class="line">(<span class="name">setq</span> list_p (<span class="name">list</span> (<span class="name">car</span> first_p) (<span class="name">cadr</span> first_p) <span class="number">0.0</span></span><br><span class="line">(<span class="name">car</span> second_p) (<span class="name">cadr</span> second_p) <span class="number">0.0</span>))</span><br><span class="line"><span class="comment">;;</span></span><br><span class="line">(<span class="name">setq</span> POINTS (<span class="name">vlax-make-safearray</span> vlax-vbdouble '(<span class="number">0</span> . <span class="number">5</span>))) <span class="comment">;;安全数组,double</span></span><br><span class="line">(<span class="name">vlax-safearray-fill</span> POINTS list_p)</span><br><span class="line">(<span class="name">setq</span> PlineObject (<span class="name">vla-addpolyline</span> MY_ModelSpace POINTS)) <span class="comment">;;多段线</span></span><br><span class="line"><span class="comment">;;</span></span><br><span class="line">(<span class="name">setq</span> next_p (<span class="name">getpoint</span> second_p <span class="string">"\n input the next point(enter for end):"</span>))</span><br><span class="line">(<span class="name">while</span> next_p</span><br><span class="line">(<span class="name">progn</span></span><br><span class="line">(<span class="name">setq</span> next_p_Objext (<span class="name">vlax-3d-point</span> next_p))</span><br><span class="line">(<span class="name">vla-AppendVertex</span> PlineObject next_p_Objext) <span class="comment">;添加</span></span><br><span class="line">(<span class="name">setq</span> next_p (<span class="name">getpoint</span> next_p <span class="string">"\n input the next point(enter for end):"</span>))</span><br><span class="line">))</span><br><span class="line"><span class="comment">;;</span></span><br><span class="line"><span class="comment">;;(alert "attention: use + or - to represent width")</span></span><br><span class="line">(<span class="name">setq</span> width (<span class="name">getreal</span> <span class="string">"\n input the width of the line \n attention: use + or - to represent width :"</span>))</span><br><span class="line"><span class="comment">;;</span></span><br><span class="line">(<span class="name">initget</span> <span class="string">"Y N"</span>) <span class="comment">;输入</span></span><br><span class="line">(<span class="name">setq</span> CurveFitting (<span class="name">getkword</span> <span class="string">"\n fit the line? Y or N <N>"</span>))</span><br><span class="line">(<span class="name">if</span> (<span class="name">=</span> CurveFitting <span class="string">"Y"</span>)</span><br><span class="line">(<span class="name">progn</span></span><br><span class="line">(<span class="name">setq</span> CF_Pline (<span class="name">entlast</span>)) <span class="comment">;;返回最后一个未删除的对象</span></span><br><span class="line">(<span class="name">command</span> <span class="string">"pedit"</span> CF_Pline <span class="string">"S"</span> <span class="string">""</span> <span class="string">""</span>)</span><br><span class="line">))</span><br><span class="line"><span class="comment">;;</span></span><br><span class="line">(<span class="name">setq</span> Offset_Object (<span class="name">vla-offset</span> PlineObject width))</span><br><span class="line"><span class="comment">;;(command "ofset" width CF_Pline (getponit) "")</span></span><br><span class="line">(<span class="name">vla-zoomall</span> vlax-get-acad-object)</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p>三点画房程序<br>按照照点号的连接顺序 设置误差阈值 点位误差距离大于精度要求 判断长边 绘制矩形</p><figure class="highlight lisp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br></pre></td><td class="code"><pre><span class="line">(<span class="name">defun</span> c<span class="symbol">:sdhf</span>()</span><br><span class="line"> (<span class="name">setq</span> old_os (<span class="name">getvar</span> <span class="string">"osmode"</span>)) </span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"osmode"</span> <span class="number">0</span>) </span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"limmin"</span> '(<span class="number">0.0</span> <span class="number">0.0</span>)) </span><br><span class="line"> (<span class="name">setvar</span> <span class="string">"limmax"</span> '(<span class="number">420.0</span> <span class="number">297.0</span>)) </span><br><span class="line"> (<span class="name">command</span> <span class="string">"zoom"</span> <span class="string">"all"</span>)</span><br><span class="line"> (<span class="name">setq</span> first_p (<span class="name">getpoint</span> <span class="string">"\n enter a point"</span>))</span><br><span class="line"> (<span class="name">setq</span> second_p (<span class="name">getpoint</span> first_p <span class="string">"\n enter a point"</span>))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> first_p second_p <span class="string">""</span> )</span><br><span class="line"> (<span class="name">setq</span> third_p (<span class="name">getpoint</span> second_p <span class="string">"\n enter a point"</span>))</span><br><span class="line"> (<span class="name">setq</span> d1 (<span class="name">distance</span> first_p second_p)) </span><br><span class="line"> (<span class="name">setq</span> d2 (<span class="name">distance</span> third_p second_p))</span><br><span class="line"> (<span class="name">if</span> (<span class="name">></span> d1 d2)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> cb d1)</span><br><span class="line"> (<span class="name">setq</span> db d2)</span><br><span class="line"> (<span class="name">setq</span> pt1 first_p) <span class="comment">;将第一、第二、第三个点重新排序</span></span><br><span class="line"> (<span class="name">setq</span> pt2 second_p)</span><br><span class="line"> (<span class="name">setq</span> pt3 third_p)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">if</span> (<span class="name">></span> d2 d1)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> cb d2)</span><br><span class="line"> (<span class="name">setq</span> db d1)</span><br><span class="line"> (<span class="name">setq</span> pt1 third_p)</span><br><span class="line"> (<span class="name">setq</span> pt2 second_p)</span><br><span class="line"> (<span class="name">setq</span> pt3 first_p)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">if</span> (<span class="name">=</span> d2 d1)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> cb d2)</span><br><span class="line"> (<span class="name">setq</span> db d1)</span><br><span class="line"> (<span class="name">setq</span> pt1 third_p)</span><br><span class="line"> (<span class="name">setq</span> pt2 second_p)</span><br><span class="line"> (<span class="name">setq</span> pt3 first_p)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">command</span> <span class="string">"erase"</span> <span class="string">"f"</span> first_p second_p <span class="string">""</span> <span class="string">""</span>)</span><br><span class="line"> </span><br><span class="line"> (<span class="name">setq</span> xc (<span class="name">*</span> db <span class="number">0.1</span>))</span><br><span class="line"> (<span class="name">setq</span> pd (<span class="name">*</span> db <span class="number">1.4</span>))</span><br><span class="line"> (<span class="name">setq</span> j1 (<span class="name">angle</span> pt1 pt2))</span><br><span class="line"> (<span class="name">setq</span> j2 (<span class="name">+</span> j1 (<span class="name">/</span> pi <span class="number">2.0</span>)))</span><br><span class="line"> (<span class="name">setq</span> j3 (<span class="name">+</span> j2 pi ))</span><br><span class="line"> (<span class="name">setq</span> pt4 (<span class="name">polar</span> pt2 j2 db))</span><br><span class="line"> (<span class="name">setq</span> pt5 (<span class="name">polar</span> pt2 j3 db))</span><br><span class="line"> (<span class="name">setq</span> d3 (<span class="name">distance</span> pt5 pt3))</span><br><span class="line"> (<span class="name">if</span>(<span class="name">></span> d3 pd)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> pt6 pt4)</span><br><span class="line"> (<span class="name">setq</span> j4 j2)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">if</span>(<span class="name"><</span> d3 pd)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> pt6 pt5)</span><br><span class="line"> (<span class="name">setq</span> j4 j3)</span><br><span class="line"> )</span><br><span class="line"> )</span><br><span class="line"> (<span class="name">setq</span> d4(<span class="name">distance</span> pt3 pt6))</span><br><span class="line"> (<span class="name">if</span>(<span class="name">></span> d4 xc)</span><br><span class="line"> (<span class="name">alert</span> <span class="string">"超限,请重画!"</span>))</span><br><span class="line"> (<span class="name">if</span>(<span class="name"><</span> d4 xc)</span><br><span class="line"> (<span class="name">progn</span></span><br><span class="line"> (<span class="name">setq</span> pt7 (<span class="name">polar</span> pt1 j4 db ))</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 pt2 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt6 pt7 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt2 pt6 <span class="string">""</span>)</span><br><span class="line"> (<span class="name">command</span> <span class="string">"line"</span> pt1 pt7 <span class="string">""</span>)</span><br><span class="line"> )</span><br><span class="line">)</span><br><span class="line">)</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<h2 id="基础知识"><a class="markdownIt-Anchor" href="#基础知识"></a> <em>基础知识</em></h2>
<p><strong>形文件的编写</strong></p>
<p>形文件的格式: 最后一行一回车结束;形编号取值1-1
</summary>
<category term="数字测图" scheme="http://yoursite.com/categories/%E6%95%B0%E5%AD%97%E6%B5%8B%E5%9B%BE/"/>
<category term="CAD二次开发" scheme="http://yoursite.com/tags/CAD%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91/"/>
<category term="Visual Lisp" scheme="http://yoursite.com/tags/Visual-Lisp/"/>
</entry>
<entry>
<title>右键菜单中添加 Open With Code 选项</title>
<link href="http://yoursite.com/2019/08/18/%E5%8F%B3%E9%94%AE%E8%8F%9C%E5%8D%95%E4%B8%AD%E6%B7%BB%E5%8A%A0-Open-With-Code-%E9%80%89%E9%A1%B9/"/>
<id>http://yoursite.com/2019/08/18/右键菜单中添加-Open-With-Code-选项/</id>
<published>2019-08-18T13:35:31.000Z</published>
<updated>2019-08-18T13:42:31.807Z</updated>
<content type="html"><![CDATA[<p>右键直接打开文件是一个非常方便的功能,然而在初次配置的时候错过了,只能利用<br>注册表文件强行重新修改一波,还好所需要改动的东西不多,照着模板套用一下绝对路径就可以了。新建一个注册表文件<strong>vsCodeOpenFolder.reg</strong>,然后点进去运行一下就可以了 文件具体内容如下</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">Windows Registry Editor Version 5.00</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\*\shell\VSCode]</span><br><span class="line">@="Open with Code"</span><br><span class="line">"Icon"="C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\*\shell\VSCode\command]</span><br><span class="line">@="\"C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" \"%1\""</span><br><span class="line"> </span><br><span class="line">Windows Registry Editor Version 5.00</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\Directory\shell\VSCode]</span><br><span class="line">@="Open with Code"</span><br><span class="line">"Icon"="C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\Directory\shell\VSCode\command]</span><br><span class="line">@="\"C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" \"%V\""</span><br><span class="line"></span><br><span class="line">Windows Registry Editor Version 5.00</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]</span><br><span class="line">@="Open with Code"</span><br><span class="line">"Icon"="C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"</span><br><span class="line"></span><br><span class="line">[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode\command]</span><br><span class="line">@="\"C:\\Users\\sheld\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" \"%V\""</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>右键直接打开文件是一个非常方便的功能,然而在初次配置的时候错过了,只能利用<br>
注册表文件强行重新修改一波,还好所需要改动的东西不多,照着模板套用一下绝对路径就可以了。新建一个注册表文件<strong>vsCodeOpenFolder.reg</strong>,然后点进
</summary>
<category term="软件配置" scheme="http://yoursite.com/categories/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/"/>
<category term="vscode" scheme="http://yoursite.com/tags/vscode/"/>
</entry>
<entry>
<title>Python Projext: Reload</title>
<link href="http://yoursite.com/2019/07/26/Python-Projext-Reload/"/>
<id>http://yoursite.com/2019/07/26/Python-Projext-Reload/</id>
<published>2019-07-26T12:56:03.000Z</published>
<updated>2019-08-03T12:11:27.870Z</updated>
<content type="html"><![CDATA[<p>两个计划:</p><ul><li>Windows从源代码编译安装tensorflow-gpu 和 pytorch</li><li>利用wsl安装linux环境的tensorflow-cpu</li></ul><p>win10 python3.7.4环境配置</p><blockquote><p>ps: powershell cd 到的文件夹有空格或者是中文的时候需要用双引号括起来</p></blockquote><p>修改pip下载源到清华源 <a href="https://pypi.tuna.tsinghua.edu.cn/simple" target="_blank" rel="noopener">https://pypi.tuna.tsinghua.edu.cn/simple</a></p><p>windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini</p><p>将文件夹权限设置为完全控制,否则vscode没有权限配置</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">[global]</span><br><span class="line">index-url = https://pypi.tuna.tsinghua.edu.cn/simple</span><br><span class="line">[install]</span><br><span class="line">trusted-host=mirrors.aliyun.com</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">PS C:\WINDOWS\system32> <span class="built_in">cd</span> C:\\<span class="string">"Program Files"</span>\Python37\Scripts\</span><br><span class="line">PS C:\Program Files\Python37\Scripts> python -m pip install --upgrade pip <span class="comment"># 更新pip</span></span><br></pre></td></tr></table></figure><p>在网页上找到下载对应的代码https://pytorch.org/</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">pip3 install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp37-cp37m-win_amd64.whl</span><br><span class="line">pip3 install https://download.pytorch.org/whl/cu100/torchvision-0.3.0-cp37-cp37m-win_amd64.whl</span><br></pre></td></tr></table></figure><p>配置vscode</p><p>python.linting的配置(PEP8)</p><p>所有的变量名字都要大写,一些空格问题可以alt + shift + F 使用ypaf格式化</p><hr><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">jewel@Antrovirens:~$ screenfetch</span><br><span class="line"> _,met$$$$<span class="variable">$gg</span>. jewel@Antrovirens</span><br><span class="line"> ,g$$$$$$$$$$$$$$<span class="variable">$P</span>. OS: Debian</span><br><span class="line"> ,g$<span class="variable">$P</span><span class="string">""</span> <span class="string">""</span><span class="string">"Y$$."</span>. Kernel: x86_64 Linux 4.4.0-17134-Microsoft</span><br><span class="line"> ,$<span class="variable">$P</span><span class="string">' `$$$. Uptime: 5h 1m</span></span><br><span class="line"><span class="string"> '</span>,$<span class="variable">$P</span> ,ggs. `$<span class="variable">$b</span>: Packages: 275</span><br><span class="line"> `d$$<span class="string">' ,$P"'</span> . $$$ Shell: bash l -i</span><br><span class="line"> $<span class="variable">$P</span> d$<span class="string">' , $$P CPU: Intel Core i5-8250U CPU @ 1.8GHz</span></span><br><span class="line"><span class="string"> $$: $$. - ,d$$'</span> RAM: 4959MiB / 8089MiB</span><br><span class="line"> $$\; Y<span class="variable">$b</span>._ _,d<span class="variable">$P</span><span class="string">'</span></span><br><span class="line"><span class="string"> Y$$. `.`"Y$$$$P"'</span></span><br><span class="line"> `$<span class="variable">$b</span> <span class="string">"-.__</span></span><br><span class="line"><span class="string"> `Y$$</span></span><br><span class="line"><span class="string"> `Y$$.</span></span><br><span class="line"><span class="string"> `$<span class="variable">$b</span>.</span></span><br><span class="line"><span class="string"> `Y$<span class="variable">$b</span>.</span></span><br><span class="line"><span class="string"> `"</span>Y<span class="variable">$b</span>._</span><br><span class="line"> `<span class="string">""</span><span class="string">""</span></span><br></pre></td></tr></table></figure><p>接下来是wsl的配置</p><p>首先打开设置中的启用linux subsystem</p><p>然后在应用商店下载所需要的版本</p><p>查看版本号:</p><p>cat /etc/debian_version 9.7 对应名称 stretch</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">jewel@Antrovirens:~$ uname -a</span><br><span class="line"><span class="string">'Linux Antrovirens 4.4.0-17134-Microsoft #706-Microsoft Mon Apr 01 18:13:00 PST 2019 x86_64 GNU/Linux'</span></span><br><span class="line">jewel@Antrovirens:~$ cat /proc/version</span><br><span class="line"><span class="string">'Linux version 4.4.0-17134-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #706-Microsoft Mon Apr 01 18:13:00 PST 2019'</span></span><br><span class="line">jewel@Antrovirens:~$ cat /etc/issue</span><br><span class="line"><span class="string">'Debian GNU/Linux 9 \n \l'</span></span><br></pre></td></tr></table></figure><p>修改apt下载源<br>cp /etc/apt/sources.list /etc/apt/sources.list.bak<br>vi /etc/apt/sources.list</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">deb http://mirrors.163.com/debian/ stretch main non-free contrib</span><br><span class="line">deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib</span><br><span class="line">deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib</span><br><span class="line">deb-src http://mirrors.163.com/debian/ stretch main non-free contrib</span><br><span class="line">deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib</span><br><span class="line">deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib</span><br><span class="line">deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib</span><br><span class="line">deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib</span><br></pre></td></tr></table></figure><p>更新 upgrade update</p><p>安装各种包</p><p>sudo apt install -y python3<br>sudo apt install -y python3-pip</p><p>修改pip下载源</p><p>sudo pip3 install -i <a href="https://pypi.tuna.tsinghua.edu.cn/simple" target="_blank" rel="noopener">https://pypi.tuna.tsinghua.edu.cn/simple</a> opencv-python</p><p>开始pip依赖包</p><p>安装虚拟环境</p><p>配置环境</p><p>安装tf-cpu</p>]]></content>
<summary type="html">
<p>两个计划:</p>
<ul>
<li>Windows从源代码编译安装tensorflow-gpu 和 pytorch</li>
<li>利用wsl安装linux环境的tensorflow-cpu</li>
</ul>
<p>win10 python3.7.4环境配置</p>
</summary>
<category term="环境配置" scheme="http://yoursite.com/categories/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
</entry>
</feed>