2009-08-12 2 views
0

Я пытаюсь использовать инструмент MakeRouteEventLayer, но, похоже, не может получить разные предварительные условия. Маршруты размещаются в базе данных SDE. До сих пор я устанавливаю рабочее пространство, создавая соединение с сервером базы данных, но я не знаю, как получить аргументы, необходимые MakeBouteEventLayer constructor. Кажется, я не могу найти, как я должен использовать Feature Layer для использования в качестве функций входного маршрута. Кроме того, я не понимаю, как правильно создать таблицу событий. Я не могу найти какой-либо пример, связанный с тем, что я пытаюсь выполнить, кроме this one, который я не понимаю, так как он не документирован/прокомментирован очень сильно, и типы данных не упоминаются.Использование «MakeRouteEventLayer» в ArcGIS

Для вашей информации инструмент, над которым я работаю, написан на C#.

ответ

0

Может быть полезно прочитать файл справки для настольного приложения, так как он объясняет это немного лучше: ESRI WebHelp for ArcGIS 9.3.1.

Мне приходилось сталкиваться с подобными проблемами в прошлом, работая с личными базами геоданных. Итак, в основном, это то, что вам нужно сделать:

  1. Установите рабочее пространство в базу данных (после того, как вы создали для нее подключение). Используйте эквивалент C# для gp.Workspace = "connection here"
  2. Первый аргумент (обязательно) - это имя слоя с характеристиками маршрута в соответствии с вашим рабочим пространством (если рабочее пространство является dbName, а внутри - routeFL, тогда имя слоя будет только routeFL).
  3. Второй аргумент (обязательно) - это идентификатор для каждого уникального маршрута. Это может быть определенный вами RouteID или уникальный идентификатор для каждой функции вашего уровня маршрута.
  4. Третий аргумент (обязательно) - это таблица с событиями, которые вы хотите найти на маршрутах.
  5. Четвертый аргумент (обязательно) - это тип событий, будь то POINT или LINE. Он состоит из идентификатора routeID, в котором находится событие (поле в таблице событий, которое идентифицирует маршрут, на котором вы должны быть), тип события (POINT или LINE), а затем поля From и To measure. Если вы используете точку, то from используется только один и называется полем измерения.
  6. Пятый аргумент (обязательно) - это ваш выходной уровень. Обратите внимание, что это слой IN-MEMORY, поэтому он не принимает путь и не будет постоянно сохранен. Затем вы можете запустить команду, чтобы сохранить его.
  7. Остальные аргументы являются необязательными и включают: (a) поле смещения в файле событий, (b) поле ошибки, которое должно быть добавлено и заполнено возможными ошибками, (c) угол, который должен быть добавлен для указания угол между маршрутом и событием Point - не работает с событиями линии, поскольку они включены в маршрут), (d) тип угла, перпендикулярный или касательный, (e) следует ли записывать угол комплимента (только если вы включаете измерение угла в первую очередь), (f) направление смещения влево/вправо от маршрута, только если вы включили смещение раньше и, наконец, (g) тип точки, которую вы имеете (многоточечная или точка).

Надеемся, это позволит вам лучше понять поля для выполнения вашей задачи. Пример из Python может помочь вам немного:

gp.workspace = "myDB.mdb" 
# Route file to use 
routeFC = "myRoutes" 
# The identifier for each route 
routeID = "rID" 
# Where my events are stored 
eventTable = "accidents" 
# My events use a routeID to identify route they are on, are POINTS and their measure field is called "mile" 
eventProperties = "routeID POINT mile" 
# Temporary layer to save everything to 
outputLayer = "accidentEvents" 
# Have no offset 
offset = "#" 
# Need to add the errors for verification purposes 
error = "ERROR_FIELD" 
# Need to store angles 
angles = "ANGLE_FIELD" 
# Need perpendicular angle 
angleType = "NORMAL" 
# Run the command now to create the layer 
gp.MakeRouteEventLayer(routeFC, routeID, eventTable, eventProperties, outputLayer, offset, error, angles, angleType) 

Приведенный выше код позволяет создать слой маршрута событий во временном, в памяти слоя. Чтобы сохранить слой, просто запустите команду SaveToLayerFile (inLayer, outLayer), и все готово.