2015-02-06 5 views
0

У меня есть проблема, с которой я мог бы воспользоваться. В нашем приложении у нас есть несколько FeatureLayers, и на некоторых из этих слоев пользователь может рисовать новые объекты.ArcGIS найти конфликт между слоем и геометрией

Когда пользователь рисует новый объект, называет его палаткой (любой тип геометрии), мне нужно проверить, действительно ли позиция. Объект действителен, если он не использует ту же позицию, что и здание. Здания хранятся на отдельном слое функций, который хранится на MapServer (и загружается в браузере). Рисунок, палатка, хранится только локально (на данный момент).

Таким образом, чтобы добраться до точки .. то, что думаю, что мне нужно, это услуга, которая находит расстояние между всеми объектами на слое (зданий) и объект, который нарисован на-момент ..

Я действительно посмотрел на услуги SummarizeNearby, но на данный момент у нас нет лицензии на это. Затем я взглянул на GeometryService, и я хотел бы знать, правильно ли это сделать.

Я думаю, что можно использовать метод разностей или пересечений GeometryService, чтобы найти разницу между всеми графики/геометрии на уровне зданий и нарисованного объекта. Если разница в том же размере, что и графика в слое зданий, тогда конфликта нет. Но если результат отличается от слоя зданий, то слой зданий действительно содержит только что нарисованный объект, а там - для нарисованного объекта недействительно.

Пожалуйста, позвольте мне теперь, если это путь, или если есть другие способы расчета/поиска объектов, которые пересекаются/перекрываются.

Большое спасибо!

Нико

ответ

0

Если вы просто хотите, чтобы выяснить, что какой-либо из «палаток» перекрывают любой из зданий, я предложил бы делать запрос на обслуживание здания, используя геометрию палаточного как ваш пространственный фильтр.

Здесь the documentation об использовании объектов Query и QueryTask в API. Вы можете поиграть с различными пространственными отношениями, чтобы увидеть, что работает для вас. Задайте свойство геометрии, равное геометрии шатра, создайте QueryTask и позвоните по номеру executeForCount. Функция обратного вызова даст вам количество функций или, в данном случае, зданий, которые соответствуют пространственному запросу, который вы только что сделали.

Вот quick fiddle Я бросил вместе.

+0

Вот как я это сделал. Работает отлично. – nickoooname