-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathEx12_NetworkAnalysis_Transport.Rmd
398 lines (224 loc) · 29.4 KB
/
Ex12_NetworkAnalysis_Transport.Rmd
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
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
# Транспортные сети {#network-analysis}
[Скачать данные и файл отчета](https://carto.geogr.msu.ru/gis/data/Ex12.zip)
## Введение {#network-analysis-intro}
**Цель** --- научиться решать различные задачи логистики и оптимизации размещения с помощью сетевого анализа.
Параметр Значение
-------------------------- --------
*Теоретическая подготовка* Понятие о сетевой модели данных, граф дорожной сети, сетевой анализ и его основные задачи: кратчайший маршрут, зона обслуживания, ближайший пункт обслуживания, размещение-распределение, управление парком транспортных средств.
*Практическая подготовка* Знание основных компонент интерфейса ArcGIS Desktop (каталог, таблица содержания, карта). Инструмент геообработки. Настройка символики и подписей объектов. Выделение объектов на карте. Пространственные и атрибутивные запросы. Оверлей. Инструменты ArcToolbox.
*Исходные данные* Cлои картографической основы OpenStreetMap, граф дорожной сети на основе данных OpenStreetMap на территорию Москвы.
*Результат* Маршрут до магазина. Зоны обслуживания магазина от 1 до 5 минут. Маршруты до ближайших магазинов. Результат размещения магазинов. Зонирование территории по принадлежности к магазинам. Проект карты зонирования с компоновкой
*Ключевые слова* Сетевой анализ, граф дорожной сети, оптимизация размещения, логистика.
### Контрольный лист {#network-analysis-control}
* Добавить на карту, слой улиц и слой зданий, граф дорожной сети
* Поставить точку магазина и точку потребителя, построить маршрут
* Поставить барьер на маршруте и перестроить маршрут с учетом барьера
* Рассчитать зоны обслуживания магазина от 1 до 5 минут движения на автомобиле
* Поставить еще одну точку магазина и 5 точек потребителя, рассчитать маршруты до ближайшего магазина
* Добавить на карту точки потребителей, расставить 7 точек потенциальных магазинов, выполнить анализ с выбором 4 мест из потенциальных
* Выполнить районирование территории по зонам обслуживания магазинов.
* Оформить карту с основными элементами компоновки (легенда, масштаб и т.д.)
### Аннотация {#network-analysis-annotation}
Задание посвящено знакомству с сетевым анализом. Задачи, предлагаемые в задании, связаны с определением оптимальных маршрутов, построением зон обслуживания, определением ближайших сервисных точек, размещением сервисных точек. Данные задачи активно используются в логистике — оптимизации перевозок, а также в геомаркетинге и оптимизации местоположения пунктов обслуживания (магазинов, складов, пожарных депо и т.д.). В основе решения этих задач лежит сетевая модель данных, являющаяся частным случаем векторной модели. В сетевой модели дорожная сеть представляется в виде графа.
## Оформление базовых слоев {#network-analysis-basemap}
[В начало упражнения ⇡](#network-analysis)
1. Подключитесь к базе геоданных *Ex12.gdb* в вашей папке *Ex12*.
2. Добавьте на карту слои *Buildings* (здания) и *Streets* (улицы).
3. Присвойте зданиям цвет серый (20%), уберите обводку (**Outline Color > No Color**).
4. Установите масштаб равным 1:10 000 для удобной работы с картой.
5. Включите подписи зданий со следующими параметрами:
Параметр Значение
----------------- --------
*Поле подписи* A_HSNMBR
*Цвет подписи* Серый 80%
*Размер подписи* 6 пунктов
1. Присвойте дорогам серый цвет (60%) и включите их подписи со следующими параметрами:
Параметр Значение
----------------- --------
*Поле подписи* Name (tag value)
*Цвет подписи* Черный
*Размер подписи* 8 пунктов
*Начертание* Жирное
1. Добавьте на карту граф дорожной сети *OSM*, который находится в наборе данных *OSM_nd* базы геоданных *Ex12*. В появившемся диалоге скажите *No* (Нет), чтобы не добавлять на карту поворотные точки и прочие вспомогательные элементы графа.
2. Задайте линиям графа такой же символ как и дорогам.
3. Сохраните документ карты в свою директорию *Ex12* под названием *Ex12_Network.mxd*.
Примерный результат должен выглядеть так:
![](images/Ex12/image6.png)
<kbd>**Снимок экрана №1** --- Базовые слои: улицы, здания, граф дорожной сети</kbd>
## Построение маршрута {#network-analysis-route}
[В начало упражнения ⇡](#network-analysis)
1. Включите модуль **Network Analyst** с помощью команды главного меню
**Customize—Extensions**
2. Включите панель инструментов **Network Analyst**:
![](images/Ex12/image7.png)
Если все правильно, в ниспадающем списке панели будет отображаться граф дорожной сети *OSM_nd*
1. Создайте слой вычисления маршрутов с помощью команды **Network Analyst > New Route**:
![](images/Ex12/image8.png)
1. Откройте окно **Network Analyst Window**:
![](images/Ex12/image9.png)
Предположим, что по адресу ул. Профсоюзная, д.9 находится магазин. Вы проживаете по адресу ул. Шверника, д. 19. Необходимо построить прямой и обратный автомобильный маршрут.
1. Выделите в списке набор **Stops**, и, используя инструмент **Create Network Location**, поставьте на графе дорожной сети 2 точки:
* Рядом со зданием ул. Профсоюзная, д. 9
* Рядом со зданием ул. Шверника, д. 19
![](images/Ex12/image10.png)
1. Нажмите **Solve**, чтобы построить прямой маршрут:
![](images/Ex12/image11.png)
<kbd>**Снимок экрана №2.** Прямой маршрут</kbd>
1. Поменяйте точки местами в окне **Network Analyst** чтобы построить обратный маршрут. Для этого перетащите нижнюю точку вверх списка. Запустите еще раз **Solve**:
![](images/Ex12/image12.png)
<kbd> **Снимок экрана №3.** Обратный маршрут</kbd>
Допустим, по адресу проспект 60-летия Октября, д.29к1 ведутся ремонтные работы и движение перекрыто. Поставьте в этом месте барьер и перестройте маршрут. Для этого:
1. Выделите в окне **Network Analyst** пункт **Point Barriers > Restriction** и поставьте точку на граф рядом со зданием проспект 60-летия Октября, д.29к1.
2. Перестройте маршрут:
![](images/Ex12/image13.png)
<kbd>**Снимок экрана №4** Обратный маршрут с барьером</kbd>
3. Сохраните документ карты.
## Определение зоны обслуживания {#network-analysis-servicearea}
[В начало упражнения ⇡](#network-analysis)
Необходимо определить, какие здания попадают в зону доступности магазина в пределах 1-5 минут движения на автомобиле.
1. Отключите в таблице содержания слой **Route** (снимите галочку).
2. Создайте слой вычисления зон обслуживания с помощью команды **Network Analyst > New Service Area**.
3. Выделите в окне **Network Analyst** слой *Facilities* (пункты обслуживания) и используя тот же инструмент **Create Network Location**, поставьте точку по адресу ул. Профсоюзная, д. 2/22 (пересечение с ул. Дмитрия Ульянова).
![](images/Ex12/image14.png)
1. Установите время езды до магазина равным 2 минуты. Для этого дважды щелкните на слое *Service Area* в таблице содержания, перейдите на вкладку **Analysis Settings** и поменяйте следующие настройки:
Параметр Значение
----------------- --------
*Default Breaks* 2
*Direction* Towards Facility
> Режим *Towards Facility* означает, что движение будет моделироваться от потребителя к точке обслуживания
1. Нажмите **Solve** на панели **Network Analyst**, чтобы построить зону обслуживания:
![](images/Ex12/image15.png)
<kbd>**Снимок экрана №5**. Зона обслуживания 2 мин</kbd>
1. Постройте иерархию зон обслуживания от 1 до 5 минут. Для этого поменяйте значение параметра **Breaks** в настройках слоя *Service Area* на *1 2 3 4 5* (через пробелы):
![](images/Ex12/image16.png)
1. Перезапустите расчет зон обслуживания.
Примерный результат должен выглядеть следующим образом:
![](images/Ex12/image17.png)
<kbd>**Снимок экрана №6** Иерархия зон обслуживания от 1 до 5 мин</kbd>
Получив зоны обслуживания, вы можете выделить с их помощью здания и провести экономико-географический анализ. Для этого можно воспользоваться пространственной выборкой.
1. Раскройте список **Polygons** в окне **Network Analyst**, чтобы увидеть легенду слоя. Выберите зону *Graphic Pick 1: 1 – 2*, она соответствует интервалу движения от 1 до 2 минут до магазина. Соответствующий полигон подсветится на карте.
2. Откройте диалог пространственной выборки (**Selection > Select By Location**). Задайте в качестве целевого слоя *(Target) Buildings*, а в качестве слоя-источника (**Source**) — *Polygons* из группы **Service Area**. Отметьте галочкой **Use selected features**, чтобы пространственный запрос осуществлялся выбранной зоной. Диалог пространственной выборки примет следующий вид:
![](images/Ex12/image18.png)
1. Нажмите **ОК**. На карте будут отобраны здания, попадающие в заданный интервал транспортной доступности:
![](images/Ex12/image19.png)
<kbd>**Снимок экрана №7.** Выборка зданий</kbd>
Полученную выборку зданий вы можете далее использовать для проведения статистического и географического анализа.
1. Сохраните документ карты
## Определение ближайшего пункта обслуживания {#network-analysis-facility}
[В начало упражнения ⇡](#network-analysis)
Предположим, что есть 2 магазина и 5 семей, которые живут в разных районах. Необходимо определить, какой магазин является ближайшим для каждой семьи и построить маршрут.
1. Отключите слой *Service Area* в таблице содержания и снимите выборку со всех объектов.
2. Создайте слой определения ближайшего пункта обслуживания с помощью команды **Network Analyst > New Closest Facility**.
3. Используя навыки предыдущего анализа, поставьте два пункта обслуживания (*Facilities*) по адресам:
* Ул. Вавилова д. 48
* Ул. Новочеремушкинская, д. 23
4. Поставьте 5 пунктов потребления (*Incidents*) по адресам:
* Ул Шверника, д. 19
* Ленинский проспект, д. 44
* Нахимовский проспект, д. 67
* Проспект 60-летия Октября, д. 19
* Ул. Кржижановского, д. 16к1
5. Нажмите **Solve**, чтобы запустить расчет маршрутов.
Инструмент выберет ближайшие пункты обслуживания (магазины) для каждого потребителя и построит маршруты:
![](images/Ex12/image20.png)
<kbd> **Снимок экрана №8**. Ближайшие пункты обслуживания</kbd>
## Размещение—распределение {#network-analysis-allocation}
[В начало упражнения ⇡](#network-analysis)
Задача размещения—распределения (location-allocation) звучит следующим образом: есть *N* потенциальных точек для размещения пунктов обслуживания (магазины, кафе, пожарные станции, транспортные узлы, сервисные центры и т.д.), а также *K* точек потребления (обычно это здания, из которых выезжают люди за услугами, или к которым эти услуги поставляются). Необходимо из *N* точек обслуживания выбрать *n* ≤ *N* точек таким образом, чтобы минимизировать некую стоимостную функцию (например, суммарное время движения от каждого пункта потребления до ближайшего пункта обслуживания). После чего распределить точки по ближайшим пунктам обслуживания. Данный тип анализа позволяет также моделировать противостояние конкурирующих сетей обслуживания и подбирать оптимальные места размещения пунктов для максимального охвата рынка.
1. Отключите слой Closest Facility в таблице содержания
2. Создайте слой размещения—распределения с помощью команды **Network Analyst > New Location-Allocation**.
3. Расставьте потенциальные пункты обслуживания (*Facilities*) по
следующим адресам:
* Ул. Большая Черемушкинская, д.11к3
* Ул. Дмитрия Ульянова, д. 42
* Ул. Профсоюзная, д. 19
* Ленинский проспект, д. 67
* Ленинский проспект, д. 44
* Проспект 60-летия Октября, д. 19к1
* Ул. Дмитрия Ульянова, 26к1
4. Добавьте на карту слой *Points* из базы геоданных *Ex12*. Это слой центроидов зданий, необходимый для загрузки точек потребления.
5. Сделайте точки черного цвета диаметром 3 пункта
Изображение примет следующий вид:
![](images/Ex12/image21.png)
1. Загрузите точки в пункты потребления. Для этого щелкните правой кнопкой мыши на строке *Demand Points* окна **Network Analyst** и выберите команду **Load Locations**:
![](images/Ex12/image22.png)
2. В появившемся диалоге выберите в списке **Load From** слой *Points* и нажмите *ОК*. Потребуется некоторое время, чтобы точки привязались к графу дорожной сети. За процессом вы можете следить в строке состояния приложения (внизу).
![](images/Ex12/image23.png)
1. Дважды щелкните на слое *Location-Allocation* в таблице содержания, чтобы изменить настройки анализа. Перейдите на вкладку **Advanced Settings**:
![](images/Ex12/image24.png)
1. Попробуйте выбрать различные варианты решения задачи в списке **Problem Type** и прочитайте их описание. Подумайте, где можно применить такой анализ.
2. Выберите режим *Minimize Impedance* (минимизировать суммарное время движения от потребителей к ближайшим пунктам обслуживания).
3. Установите количество отбираемых кандидатов (**Facilities to Choose**) равное *4*.
![](images/Ex12/image25.png)
1. Установите направление движения *Demand to Facility* (потребитель к услугам) на вкладке **Analysis Settings**:
![](images/Ex12/image26.png)
1. Нажмите **ОК** и запустите решение задачи на панели **Network Analyst**. Будут выбраны 4 наиболее оптимальных пункта обслуживания, а здания будут распределены между ними в виде веерной диаграммы. Программа выдаст предупреждение, что некоторые точки оказались непривязанными — проигнорируйте его. Это связано с тем, что некоторые здания по краям области транспортно недоступны, поскольку к ним требуется подъезд извне изучаемого района. Вы можете их видеть по отсутствию исходящих линий.
![](images/Ex12/image27.png)
<kbd>**Снимок экрана №9.** Результат размещения---распределения</kbd>
1. Сохраните документ карты
## Районирование города по зонам обслуживания {#network-analysis-zoning}
[В начало упражнения ⇡](#network-analysis)
На основе полученного распределения можно произвести районирования территории. Для этого вы построите диаграмму Вороного точек потребления и объедините полигоны, отнесенные к одному пункту обслуживания.
1. Исключите нераспределенные точки. Для этого дважды щелкните на слое *Demand Points* в таблице содержания, перейдите на вкладку **Definition Query**, нажмите **Query Builder** и введите следующий запрос:
```
"FacilityID" IS NOT NULL
```
![](images/Ex12/image28.png)
1. Создайте в вашем каталоге *Ex12* базу геоданных *Regions.gdb* и назначьте ее базой данных по умолчанию:
![](images/Ex12/image29.png)
1. Откройте **ArcToolbox**.
2. Запустите инструмент геообработки **Analysis Tools > Proximity > Create Thiessen Polygons** и заполните его параметры следующим образом:
Параметр Значение
----------------- --------
*Input Features* `Location-Allocation\Demand Points`
*Output Features* `…\Ex12\Regions.gdb\DemandPoints_Voronoy`
*Output Fields* `ALL`
Запустите инструмент. Полученный слой будет добавлен на карту и будет иметь следующую структуру:
![](images/Ex12/image30.png)
> *Диаграмма Вороного* обладает следующим свойством: какую бы точку мы не взяли внутри каждого полигона, она будет ближе к центроиду этого полигона, чем к любому другому центроиду.
Объединив полигоны Вороного, точки которых отнесены к одному и тому же пункту обслуживания, вы получите районирование территории по зонам обслуживания. Для этого:
1. Запустите инструмент **Data Management Tools > Generalization > Dissolve** и заполните его параметры следующим образом:
Параметр Значение
---------------------- --------
*Input Features* `DemandPoints_Voronoy`
*Output Feature Class* `…\Ex12\Regions.gdb\Regions`
*Dissolve Field(s)* FacilityID
Остальные параметры оставьте по умолчанию. Диалог инструмента примет следующий вид:
![](images/Ex12/image31.png)
1. Нажмите **ОК**. После обработки слой районирования будет добавлен на карту.
2. Отключите слои диаграммы Вороного, а также точек зданий.
3. Переместите слой Regions под слои зданий и дорог.
4. Измените оформление слоя Regions следующим образом:
* Способ изображения **Categories > Unique Values**
* Поле отображения *Facility ID*
* Цвета отображения спокойные, пастельные, одинаковые по насыщенности.
* Обводка полигонов отсутствует. Чтобы убрать обводку сразу у всех плашек, щелкните на заголовке столбца **Symbol**, выберите пункт **Properties for All Symbols** и установите параметр **Outline Color** в положение **No Color**.
Примерный вид диалога свойств слоя *Regions* выглядит следующим образом:
![](images/Ex12/image32.png)
1. Нажмите **ОК**, чтобы завершить оформление
2. В группе *Location-Allocation* оставьте включенным только слой *Facilities*.
3. Выгрузите отобранные пункты в отдельный слой. Для этого в окне **Network Analyst** выделите в списке *Facilities* пункты, помеченные звездочками (зажав клавишу <kbd>Ctrl</kbd>). Далее в контекстном меню слоя *Facilities* выберите команду **Export Data**.
![](images/Ex12/image33.png)
4. Сохраните выборку в базу геоданных *Regions.gdb* под названием
*Selected*:
![](images/Ex12/image34.png)
1. На вопрос добавить ли созданный слой на карту, ответьте утвердительно. Переименуйте слой в «*Пункты обслуживания*». Визуализируйте слой методом категорий (**Categories — Unique Values**) по полю *Name*. В качестве символа используйте кружки диаметром 16 пунктов. Цвет кружков приведите в соответствии с цветом зоны, но сделайте его более ярким и насыщенным.
2. Проделайте аналогичную операцию для не выбранных пунктов обслуживания, выделив их в списке. Сохраните их в базу геоданных под названием Rejected. Полученный слой на карте назовите «*Не выбранные пункты обслуживания*» Присвойте полученному слою единый символ в виде темно-серого кружка диаметром 12 пунктов.
3. Включите подписи номеров районов по полю *FacilityID* (размер шрифта 18)
4. Отключите слой *Location-Allocation* целиком.
Ваш проект примет следующий вид:
![](images/Ex12/image35.png)
<kbd>**Снимок экрана №10.** Районирование территории</kbd>
## Компоновка карты {#network-analysis-layout}
[В начало упражнения ⇡](#network-analysis)
Оформите карту в режиме компоновки в соответствии с нижеприведенным образцом. Экспортируйте результат в графический файл и вставьте его в отчет.
![](images/Ex12/image36.png)
## Контрольные вопросы {#network-analysis-questions}
[В начало упражнения ⇡](#network-analysis)
1. Какой слой необходим для проведения сетевого анализа?
2. Какую задачу позволяет решить инструмент *Route*?
3. Какую задачу позволяет решить инструмент *Service Area*?
4. Можно ли построить сразу несколько зон обслуживания? Как это сделать?
5. Какую задачу позволяет решить инструмент *Closest Facility*?
6. Какую задачу позволяет решить инструмент *Location-Allocation*?
7. Какая последовательность действий позволяет перейти от распределений точек к площадному районированию территории?