ArcGIS网络分析最短路径分析源代码(VB6.0)
1![](/Images/OutliningIndicators/None.gif)
2
' Copyright 1995-2005 ESRI
3![](/Images/OutliningIndicators/None.gif)
4
' All rights reserved under the copyright laws of the United States.
5![](/Images/OutliningIndicators/None.gif)
6
' You may freely redistribute and use this sample code, with or without modification.
7![](/Images/OutliningIndicators/None.gif)
8
' Disclaimer: THE SAMPLE CODE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
9
' WARRANTIES, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
10
' FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ESRI OR
11
' CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
12
' OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
13
' SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
14
' INTERRUPTION) SUSTAINED BY YOU OR A THIRD PARTY, HOWEVER CAUSED AND ON ANY
15
' THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ARISING IN ANY
16
' WAY OUT OF THE USE OF THIS SAMPLE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF
17
' SUCH DAMAGE.
18![](/Images/OutliningIndicators/None.gif)
19
' For additional information contact: Environmental Systems Research Institute, Inc.
20![](/Images/OutliningIndicators/None.gif)
21
' Attn: Contracts Dept.
22![](/Images/OutliningIndicators/None.gif)
23
' 380 New York Street
24![](/Images/OutliningIndicators/None.gif)
25
' Redlands, California, U.S.A. 92373
26![](/Images/OutliningIndicators/None.gif)
27
' Email: contracts@esri.com
28![](/Images/OutliningIndicators/None.gif)
29
Option Explicit
30![](/Images/OutliningIndicators/None.gif)
31
' vb version of the PathFinder object
32![](/Images/OutliningIndicators/None.gif)
33
' 本地变量
34
Private m_ipGeometricNetwork As esriGeoDatabase.IGeometricNetwork
35
Private m_ipMap As esriCarto.IMap
36
Private m_ipPoints As esriGeometry.IPointCollection
37
Private m_ipPointToEID As esriNetworkAnalysis.IPointToEID
38
' 返回结果变量
39
Private m_dblPathCost As Double
40
Private m_ipEnumNetEID_Junctions As esriGeoDatabase.IEnumNetEID
41
Private m_ipEnumNetEID_Edges As esriGeoDatabase.IEnumNetEID
42
Private m_ipPolyline As esriGeometry.IPolyline
43![](/Images/OutliningIndicators/None.gif)
44![](/Images/OutliningIndicators/None.gif)
45
' Optionally set the Map (e.g. the current map in ArcMap),
46
' otherwise a default map will be made (for IPointToEID).
47![](/Images/OutliningIndicators/None.gif)
48
Public Property Set Map(Map As esriCarto.IMap)
49
Set m_ipMap = Map
50
End Property
51![](/Images/OutliningIndicators/None.gif)
52
Public Property Get Map() As esriCarto.IMap
53
Set Map = m_ipMap
54
End Property
55![](/Images/OutliningIndicators/None.gif)
56
' Either OpenAccessNetwork or OpenFeatureDatasetNetwork
57
' needs to be called.
58![](/Images/OutliningIndicators/None.gif)
59
Public Sub OpenAccessNetwork(AccessFileName As String, FeatureDatasetName As String)
60
61
Dim ipWorkspaceFactory As esriGeoDatabase.IWorkspaceFactory
62
Dim ipWorkspace As esriGeoDatabase.IWorkspace
63
Dim ipFeatureWorkspace As esriGeoDatabase.IFeatureWorkspace
64
Dim ipFeatureDataset As esriGeoDatabase.IFeatureDataset
65![](/Images/OutliningIndicators/None.gif)
66
' After this Sub exits, we'll have an INetwork interface
67
' and an IMap interface initialized for the network we'll be using.
68![](/Images/OutliningIndicators/None.gif)
69
' close down the last one if opened
70
CloseWorkspace
71![](/Images/OutliningIndicators/None.gif)
72
' open the mdb
73
Set ipWorkspaceFactory = New esriDataSourcesGDB.AccessWorkspaceFactory
74
Set ipWorkspace = ipWorkspaceFactory.OpenFromFile(AccessFileName, 0)
75![](/Images/OutliningIndicators/None.gif)
76
' get the FeatureWorkspace
77
Set ipFeatureWorkspace = ipWorkspace
78
79
' open the FeatureDataset
80
Set ipFeatureDataset = ipFeatureWorkspace.OpenFeatureDataset(FeatureDatasetName)
81![](/Images/OutliningIndicators/None.gif)
82
' initialize Network and Map (m_ipNetwork, m_ipMap)
83
If Not InitializeNetworkAndMap(ipFeatureDataset) Then Err.Raise 0, "OpenAccessNetwork", "Error initializing Network and Map"
84![](/Images/OutliningIndicators/None.gif)
85
End Sub
86![](/Images/OutliningIndicators/None.gif)
87
Public Sub OpenFeatureDatasetNetwork(FeatureDataset As esriGeoDatabase.IFeatureDataset)
88
' close down the last one if opened
89
CloseWorkspace
90
91
' we assume that the caller has passed a valid FeatureDataset
92![](/Images/OutliningIndicators/None.gif)
93
' initialize Network and Map (m_ipNetwork, m_ipMap)
94
If Not InitializeNetworkAndMap(FeatureDataset) Then Err.Raise 0, "OpenFeatureDatasetNetwork", "Error initializing Network and Map"
95![](/Images/OutliningIndicators/None.gif)
96
End Sub
97![](/Images/OutliningIndicators/None.gif)
98
' The collection of points to travel through must be set.
99![](/Images/OutliningIndicators/None.gif)
100
Public Property Set StopPoints(Points As esriGeometry.IPointCollection)
101
Set m_ipPoints = Points
102
End Property
103![](/Images/OutliningIndicators/None.gif)
104
Public Property Get StopPoints() As esriGeometry.IPointCollection
105
Set StopPoints = m_ipPoints
106
End Property
107![](/Images/OutliningIndicators/None.gif)
108
' Calculate the path
109![](/Images/OutliningIndicators/None.gif)
110
Public Sub SolvePath(WeightName As String)
111
112
Dim ipNetwork As esriGeoDatabase.INetwork
113
Dim ipTraceFlowSolver As esriNetworkAnalysis.ITraceFlowSolver
114
Dim ipNetSolver As esriNetworkAnalysis.INetSolver
115
Dim ipNetFlag As esriNetworkAnalysis.INetFlag
116
Dim ipaNetFlag() As esriNetworkAnalysis.IEdgeFlag
117
Dim ipEdgePoint As esriGeometry.IPoint
118
Dim ipNetElements As esriGeoDatabase.INetElements
119
Dim intEdgeUserClassID As Long
120
Dim intEdgeUserID As Long
121
Dim intEdgeUserSubID As Long
122
Dim intEdgeID As Long
123
Dim ipFoundEdgePoint As esriGeometry.IPoint
124
Dim dblEdgePercent As Double
125
Dim ipNetWeight As esriGeoDatabase.INetWeight
126
Dim ipNetSolverWeights As esriNetworkAnalysis.INetSolverWeights
127
Dim ipNetSchema As esriGeoDatabase.INetSchema
128
Dim intCount As Long
129
Dim i As Long
130
Dim vaRes() As Variant
131![](/Images/OutliningIndicators/None.gif)
132
' make sure we are ready
133
Debug.Assert Not m_ipPoints Is Nothing
134
Debug.Assert Not m_ipGeometricNetwork Is Nothing
135![](/Images/OutliningIndicators/None.gif)
136
' instantiate a trace flow solver
137
Set ipTraceFlowSolver = New esriNetworkAnalysis.TraceFlowSolver
138![](/Images/OutliningIndicators/None.gif)
139
' get the INetSolver interface
140
Set ipNetSolver = ipTraceFlowSolver
141![](/Images/OutliningIndicators/None.gif)
142
' set the source network to solve on
143
Set ipNetwork = m_ipGeometricNetwork.Network
144
Set ipNetSolver.SourceNetwork = ipNetwork
145![](/Images/OutliningIndicators/None.gif)
146
' make edge flags from the points
147![](/Images/OutliningIndicators/None.gif)
148
' the INetElements interface is needed to get UserID, UserClassID,
149
' and UserSubID from an element id
150
Set ipNetElements = ipNetwork
151![](/Images/OutliningIndicators/None.gif)
152
' get the count
153
intCount = m_ipPoints.PointCount
154
Debug.Assert intCount > 1
155![](/Images/OutliningIndicators/None.gif)
156
' dimension our IEdgeFlag array
157
ReDim ipaNetFlag(intCount)
158
159
For i = 0 To intCount - 1
160
' make a new Edge Flag
161
Set ipNetFlag = New esriNetworkAnalysis.EdgeFlag
162
Set ipEdgePoint = m_ipPoints.Point(i)
163
' look up the EID for the current point (this will populate intEdgeID and dblEdgePercent)
164
m_ipPointToEID.GetNearestEdge ipEdgePoint, intEdgeID, ipFoundEdgePoint, dblEdgePercent
165
Debug.Assert intEdgeID > 0 ' else Point (eid) not found
166
ipNetElements.QueryIDs intEdgeID, esriETEdge, intEdgeUserClassID, intEdgeUserID, intEdgeUserSubID
167
Debug.Assert (intEdgeUserClassID > 0) And (intEdgeUserID > 0) ' else Point not found
168
ipNetFlag.UserClassID = intEdgeUserClassID
169
ipNetFlag.UserID = intEdgeUserID
170
ipNetFlag.UserSubID = intEdgeUserSubID
171
Set ipaNetFlag(i) = ipNetFlag
172
Next
173![](/Images/OutliningIndicators/None.gif)
174
' add these edge flags
175
ipTraceFlowSolver.PutEdgeOrigins intCount, ipaNetFlag(0)
176![](/Images/OutliningIndicators/None.gif)
177
' set the weight (cost field) to solve on
178![](/Images/OutliningIndicators/None.gif)
179
' get the INetSchema interface
180
Set ipNetSchema = ipNetwork
181
Set ipNetWeight = ipNetSchema.WeightByName(WeightName)
182
Debug.Assert Not ipNetWeight Is Nothing
183![](/Images/OutliningIndicators/None.gif)
184
' set the weight (use the same for both directions)
185
Set ipNetSolverWeights = ipTraceFlowSolver
186
Set ipNetSolverWeights.FromToEdgeWeight = ipNetWeight
187
Set ipNetSolverWeights.ToFromEdgeWeight = ipNetWeight
188![](/Images/OutliningIndicators/None.gif)
189
' initialize array for results to number of segments in result
190
ReDim vaRes(intCount - 1)
191![](/Images/OutliningIndicators/None.gif)
192
' solve it
193
ipTraceFlowSolver.FindPath esriFMConnected, esriSPObjFnMinSum, m_ipEnumNetEID_Junctions, m_ipEnumNetEID_Edges, intCount - 1, vaRes(0)
194![](/Images/OutliningIndicators/None.gif)
195
' compute total cost
196
m_dblPathCost = 0
197
For i = LBound(vaRes) To UBound(vaRes)
198
m_dblPathCost = m_dblPathCost + vaRes(i)
199
Next
200![](/Images/OutliningIndicators/None.gif)
201
' clear the last polyline result
202
Set m_ipPolyline = Nothing
203
204
End Sub
205![](/Images/OutliningIndicators/None.gif)
206
' Property to get the cost
207![](/Images/OutliningIndicators/None.gif)
208
Public Property Get PathCost() As Double
209
PathCost = m_dblPathCost
210
End Property
211![](/Images/OutliningIndicators/None.gif)
212
' Property to get the shape
213![](/Images/OutliningIndicators/None.gif)
214
Public Property Get PathPolyLine() As esriGeometry.IPolyline
215![](/Images/OutliningIndicators/None.gif)
216
Dim ipEIDHelper As esriNetworkAnalysis.IEIDHelper
217
Dim count As Long, i As Long
218
Dim ipEIDInfo As esriNetworkAnalysis.IEIDInfo
219
Dim ipEnumEIDInfo As esriNetworkAnalysis.IEnumEIDInfo
220
Dim ipGeometry As esriGeometry.IGeometry
221
Dim ipNewGeometryColl As esriGeometry.IGeometryCollection
222
Dim ipSpatialReference As esriGeometry.ISpatialReference
223![](/Images/OutliningIndicators/None.gif)
224
' if the line is already computed since the last path, just return it
225
If Not m_ipPolyline Is Nothing Then
226
Set PathPolyLine = m_ipPolyline
227
Exit Property
228
End If
229![](/Images/OutliningIndicators/None.gif)
230
Set m_ipPolyline = New esriGeometry.Polyline
231
Set ipNewGeometryColl = m_ipPolyline
232![](/Images/OutliningIndicators/None.gif)
233
' a path should be solved first
234
Debug.Assert Not m_ipEnumNetEID_Edges Is Nothing
235![](/Images/OutliningIndicators/None.gif)
236
' make an EIDHelper object to translate edges to geometric features
237
Set ipEIDHelper = New esriNetworkAnalysis.EIDHelper
238
Set ipEIDHelper.GeometricNetwork = m_ipGeometricNetwork
239
Set ipSpatialReference = m_ipMap.SpatialReference
240
Set ipEIDHelper.OutputSpatialReference = ipSpatialReference
241
ipEIDHelper.ReturnGeometries = True
242![](/Images/OutliningIndicators/None.gif)
243
' get the details using the IEIDHelper classes
244
Set ipEnumEIDInfo = ipEIDHelper.CreateEnumEIDInfo(m_ipEnumNetEID_Edges)
245
count = ipEnumEIDInfo.count
246![](/Images/OutliningIndicators/None.gif)
247
' set the iterator to beginning
248
ipEnumEIDInfo.Reset
249![](/Images/OutliningIndicators/None.gif)
250
For i = 1 To count
251
252
' get the next EID and a copy of its geometry (it makes a Clone)
253
Set ipEIDInfo = ipEnumEIDInfo.Next
254
Set ipGeometry = ipEIDInfo.Geometry
255![](/Images/OutliningIndicators/None.gif)
256
ipNewGeometryColl.AddGeometryCollection ipGeometry
257![](/Images/OutliningIndicators/None.gif)
258
Next ' EID
259![](/Images/OutliningIndicators/None.gif)
260
' return the merged geometry as a Polyline
261
Set PathPolyLine = m_ipPolyline
262
263
End Property
264![](/Images/OutliningIndicators/None.gif)
265
' Private
266![](/Images/OutliningIndicators/None.gif)
267
Private Sub CloseWorkspace()
268
' make sure we let go of everything and start with new results
269
Set m_ipGeometricNetwork = Nothing
270
Set m_ipPoints = Nothing
271
Set m_ipPointToEID = Nothing
272
Set m_ipEnumNetEID_Junctions = Nothing
273
Set m_ipEnumNetEID_Edges = Nothing
274
Set m_ipPolyline = Nothing
275
End Sub
276![](/Images/OutliningIndicators/None.gif)
277
Private Function InitializeNetworkAndMap(FeatureDataset As esriGeoDatabase.IFeatureDataset) As Boolean
278![](/Images/OutliningIndicators/None.gif)
279
Dim ipNetworkCollection As esriGeoDatabase.INetworkCollection
280
Dim ipNetwork As esriGeoDatabase.INetwork
281
Dim count As Long, i As Long
282
Dim ipFeatureClassContainer As esriGeoDatabase.IFeatureClassContainer
283
Dim ipFeatureClass As esriGeoDatabase.IFeatureClass
284
Dim ipGeoDataset As esriGeoDatabase.IGeoDataset
285
Dim ipLayer As esriCarto.ILayer
286
Dim ipFeatureLayer As esriCarto.IFeatureLayer
287
Dim ipEnvelope As esriGeometry.IEnvelope, ipMaxEnvelope As esriGeometry.IEnvelope
288
Dim dblSearchTol As Double
289
Dim dblWidth As Double, dblHeight As Double
290![](/Images/OutliningIndicators/None.gif)
291
On Error GoTo Trouble
292![](/Images/OutliningIndicators/None.gif)
293
' get the networks
294
Set ipNetworkCollection = FeatureDataset
295![](/Images/OutliningIndicators/None.gif)
296
' even though a FeatureDataset can have many networks, we'll just
297
' assume the first one (otherwise you would pass the network name in, etc.)
298![](/Images/OutliningIndicators/None.gif)
299
' get the count of networks
300
count = ipNetworkCollection.GeometricNetworkCount
301![](/Images/OutliningIndicators/None.gif)
302
Debug.Assert count > 0 ' then Exception.Create('No networks found');
303![](/Images/OutliningIndicators/None.gif)
304
' get the first Geometric Newtork (0 - based)
305
Set m_ipGeometricNetwork = ipNetworkCollection.GeometricNetwork(0)
306![](/Images/OutliningIndicators/None.gif)
307
' get the Network
308
Set ipNetwork = m_ipGeometricNetwork.Network
309![](/Images/OutliningIndicators/None.gif)
310
' The EID Helper class that converts points to EIDs needs a
311
' IMap, so we'll need one around with all our layers added.
312
' This Pathfinder object has an optional Map property than may be set
313
' before opening the Network.
314
If m_ipMap Is Nothing Then
315
Set m_ipMap = New esriCarto.Map
316![](/Images/OutliningIndicators/None.gif)
317
' Add each of the Feature Classes in this Geometric Network as a map Layer
318
Set ipFeatureClassContainer = m_ipGeometricNetwork
319
count = ipFeatureClassContainer.ClassCount
320
Debug.Assert count > 0 ' then Exception.Create('No (network) feature classes found');
321![](/Images/OutliningIndicators/None.gif)
322
For i = 0 To count - 1
323
' get the feature class
324
Set ipFeatureClass = ipFeatureClassContainer.Class(i)
325
' make a layer
326
Set ipFeatureLayer = New esriCarto.FeatureLayer
327
Set ipFeatureLayer.FeatureClass = ipFeatureClass
328
' add layer to the map
329
m_ipMap.AddLayer ipFeatureLayer
330
Next
331
End If ' we needed to make a Map
332![](/Images/OutliningIndicators/None.gif)
333![](/Images/OutliningIndicators/None.gif)
334
' Calculate point snap tolerance as 1/100 of map width.
335
count = m_ipMap.LayerCount
336
Set ipMaxEnvelope = New esriGeometry.Envelope
337
For i = 0 To count - 1
338
Set ipLayer = m_ipMap.Layer(i)
339
Set ipFeatureLayer = ipLayer
340
' get its dimensions (for setting search tolerance)
341
Set ipGeoDataset = ipFeatureLayer
342
Set ipEnvelope = ipGeoDataset.Extent
343
' merge with max dimensions
344
ipMaxEnvelope.Union ipEnvelope
345
Next
346![](/Images/OutliningIndicators/None.gif)
347
' finally, we can set up the IPointToEID ![](https://www.cnblogs.com/Images/dot.gif)
348
Set m_ipPointToEID = New esriNetworkAnalysis.PointToEID
349
Set m_ipPointToEID.SourceMap = m_ipMap
350
Set m_ipPointToEID.GeometricNetwork = m_ipGeometricNetwork
351![](/Images/OutliningIndicators/None.gif)
352
' set snap tolerance
353
dblWidth = ipMaxEnvelope.Width
354
dblHeight = ipMaxEnvelope.Height
355![](/Images/OutliningIndicators/None.gif)
356
If dblWidth > dblHeight Then
357
dblSearchTol = dblWidth / 100#
358
Else
359
dblSearchTol = dblHeight / 100#
360
End If
361![](/Images/OutliningIndicators/None.gif)
362
m_ipPointToEID.SnapTolerance = dblSearchTol
363![](/Images/OutliningIndicators/None.gif)
364
InitializeNetworkAndMap = True ' good to go
365
Exit Function
366![](/Images/OutliningIndicators/None.gif)
367
Trouble:
368
InitializeNetworkAndMap = False ' we had an error
369
End Function
370![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
74
![](/Images/OutliningIndicators/None.gif)
75
![](/Images/OutliningIndicators/None.gif)
76
![](/Images/OutliningIndicators/None.gif)
77
![](/Images/OutliningIndicators/None.gif)
78
![](/Images/OutliningIndicators/None.gif)
79
![](/Images/OutliningIndicators/None.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/None.gif)
90
![](/Images/OutliningIndicators/None.gif)
91
![](/Images/OutliningIndicators/None.gif)
92
![](/Images/OutliningIndicators/None.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/None.gif)
101
![](/Images/OutliningIndicators/None.gif)
102
![](/Images/OutliningIndicators/None.gif)
103
![](/Images/OutliningIndicators/None.gif)
104
![](/Images/OutliningIndicators/None.gif)
105
![](/Images/OutliningIndicators/None.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/None.gif)
116
![](/Images/OutliningIndicators/None.gif)
117
![](/Images/OutliningIndicators/None.gif)
118
![](/Images/OutliningIndicators/None.gif)
119
![](/Images/OutliningIndicators/None.gif)
120
![](/Images/OutliningIndicators/None.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/None.gif)
223
![](/Images/OutliningIndicators/None.gif)
224
![](/Images/OutliningIndicators/None.gif)
225
![](/Images/OutliningIndicators/None.gif)
226
![](/Images/OutliningIndicators/None.gif)
227
![](/Images/OutliningIndicators/None.gif)
228
![](/Images/OutliningIndicators/None.gif)
229
![](/Images/OutliningIndicators/None.gif)
230
![](/Images/OutliningIndicators/None.gif)
231
![](/Images/OutliningIndicators/None.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/None.gif)
239
![](/Images/OutliningIndicators/None.gif)
240
![](/Images/OutliningIndicators/None.gif)
241
![](/Images/OutliningIndicators/None.gif)
242
![](/Images/OutliningIndicators/None.gif)
243
![](/Images/OutliningIndicators/None.gif)
244
![](/Images/OutliningIndicators/None.gif)
245
![](/Images/OutliningIndicators/None.gif)
246
![](/Images/OutliningIndicators/None.gif)
247
![](/Images/OutliningIndicators/None.gif)
248
![](/Images/OutliningIndicators/None.gif)
249
![](/Images/OutliningIndicators/None.gif)
250
![](/Images/OutliningIndicators/None.gif)
251
![](/Images/OutliningIndicators/None.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/None.gif)
258
![](/Images/OutliningIndicators/None.gif)
259
![](/Images/OutliningIndicators/None.gif)
260
![](/Images/OutliningIndicators/None.gif)
261
![](/Images/OutliningIndicators/None.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/None.gif)
270
![](/Images/OutliningIndicators/None.gif)
271
![](/Images/OutliningIndicators/None.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/None.gif)
281
![](/Images/OutliningIndicators/None.gif)
282
![](/Images/OutliningIndicators/None.gif)
283
![](/Images/OutliningIndicators/None.gif)
284
![](/Images/OutliningIndicators/None.gif)
285
![](/Images/OutliningIndicators/None.gif)
286
![](/Images/OutliningIndicators/None.gif)
287
![](/Images/OutliningIndicators/None.gif)
288
![](/Images/OutliningIndicators/None.gif)
289
![](/Images/OutliningIndicators/None.gif)
290
![](/Images/OutliningIndicators/None.gif)
291
![](/Images/OutliningIndicators/None.gif)
292
![](/Images/OutliningIndicators/None.gif)
293
![](/Images/OutliningIndicators/None.gif)
294
![](/Images/OutliningIndicators/None.gif)
295
![](/Images/OutliningIndicators/None.gif)
296
![](/Images/OutliningIndicators/None.gif)
297
![](/Images/OutliningIndicators/None.gif)
298
![](/Images/OutliningIndicators/None.gif)
299
![](/Images/OutliningIndicators/None.gif)
300
![](/Images/OutliningIndicators/None.gif)
301
![](/Images/OutliningIndicators/None.gif)
302
![](/Images/OutliningIndicators/None.gif)
303
![](/Images/OutliningIndicators/None.gif)
304
![](/Images/OutliningIndicators/None.gif)
305
![](/Images/OutliningIndicators/None.gif)
306
![](/Images/OutliningIndicators/None.gif)
307
![](/Images/OutliningIndicators/None.gif)
308
![](/Images/OutliningIndicators/None.gif)
309
![](/Images/OutliningIndicators/None.gif)
310
![](/Images/OutliningIndicators/None.gif)
311
![](/Images/OutliningIndicators/None.gif)
312
![](/Images/OutliningIndicators/None.gif)
313
![](/Images/OutliningIndicators/None.gif)
314
![](/Images/OutliningIndicators/None.gif)
315
![](/Images/OutliningIndicators/None.gif)
316
![](/Images/OutliningIndicators/None.gif)
317
![](/Images/OutliningIndicators/None.gif)
318
![](/Images/OutliningIndicators/None.gif)
319
![](/Images/OutliningIndicators/None.gif)
320
![](/Images/OutliningIndicators/None.gif)
321
![](/Images/OutliningIndicators/None.gif)
322
![](/Images/OutliningIndicators/None.gif)
323
![](/Images/OutliningIndicators/None.gif)
324
![](/Images/OutliningIndicators/None.gif)
325
![](/Images/OutliningIndicators/None.gif)
326
![](/Images/OutliningIndicators/None.gif)
327
![](/Images/OutliningIndicators/None.gif)
328
![](/Images/OutliningIndicators/None.gif)
329
![](/Images/OutliningIndicators/None.gif)
330
![](/Images/OutliningIndicators/None.gif)
331
![](/Images/OutliningIndicators/None.gif)
332
![](/Images/OutliningIndicators/None.gif)
333
![](/Images/OutliningIndicators/None.gif)
334
![](/Images/OutliningIndicators/None.gif)
335
![](/Images/OutliningIndicators/None.gif)
336
![](/Images/OutliningIndicators/None.gif)
337
![](/Images/OutliningIndicators/None.gif)
338
![](/Images/OutliningIndicators/None.gif)
339
![](/Images/OutliningIndicators/None.gif)
340
![](/Images/OutliningIndicators/None.gif)
341
![](/Images/OutliningIndicators/None.gif)
342
![](/Images/OutliningIndicators/None.gif)
343
![](/Images/OutliningIndicators/None.gif)
344
![](/Images/OutliningIndicators/None.gif)
345
![](/Images/OutliningIndicators/None.gif)
346
![](/Images/OutliningIndicators/None.gif)
347
![](/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
348
![](/Images/OutliningIndicators/None.gif)
349
![](/Images/OutliningIndicators/None.gif)
350
![](/Images/OutliningIndicators/None.gif)
351
![](/Images/OutliningIndicators/None.gif)
352
![](/Images/OutliningIndicators/None.gif)
353
![](/Images/OutliningIndicators/None.gif)
354
![](/Images/OutliningIndicators/None.gif)
355
![](/Images/OutliningIndicators/None.gif)
356
![](/Images/OutliningIndicators/None.gif)
357
![](/Images/OutliningIndicators/None.gif)
358
![](/Images/OutliningIndicators/None.gif)
359
![](/Images/OutliningIndicators/None.gif)
360
![](/Images/OutliningIndicators/None.gif)
361
![](/Images/OutliningIndicators/None.gif)
362
![](/Images/OutliningIndicators/None.gif)
363
![](/Images/OutliningIndicators/None.gif)
364
![](/Images/OutliningIndicators/None.gif)
365
![](/Images/OutliningIndicators/None.gif)
366
![](/Images/OutliningIndicators/None.gif)
367
![](/Images/OutliningIndicators/None.gif)
368
![](/Images/OutliningIndicators/None.gif)
369
![](/Images/OutliningIndicators/None.gif)
370
![](/Images/OutliningIndicators/None.gif)