| | Поиск объекта по координатам [ Дмитрий Глубоков ]Пятница, 4 марта 2011, 16:40
Добрый день.
У меня такой вопрос:
На карте есть точечная геометрия - "Светофор", рядом с ней есть текст, никак не связанный с геометрией (текст лежит в своем слое - "Тексты" и имеет свой тип - "Номер светофора").
Можно ли по координатам геометрии определить есть-ли рядом с ней текст,(т.е. задать критерий поиска с приращением от координат геометрии +\- dX, dY)?
Или придется делать перебор всех текстов и сравнивать координаты текста с координатами геометрии +\- dX, dY?
Если возможно первое, то был-бы благодарен за код.
Спасибо. |
|
| | [ Objectland Support ]Пятница, 4 марта 2011, 17:13
| Возможно, Вам поможет селекция геометрий по буферной зоне. См. в справке по COM-интерфейсам объект FeaturesetCondition. Код Вы можете найти в примерах для демонстрации работы с COM-интерфейсами, доступных на странице "Скачать". |
|
| | [ Дмитрий Глубоков ]Среда, 23 марта 2011, 13:17
У меня не получается селекция по буферной зоне геометрии.
Смотрел и примеры работы с COM-интерфейсами, но что-то до меня не доходит(((
Был-бы очень благодарен за фрагмент кода, где по определенной точечной геометрии происходит селекция всех объектов в буферной зоне геометрии, с возможностью выбора геометрий определенного типа.
Мой код: (МояГеометрия-объект Feature)
Dim objGDBFeaturesetCondition As GDBEngineLib.GDBFeaturesetCondition
objGDBFeaturesetCondition = Тема.CreateFeaturesetCondition(GDBEngineLib.GdbLogicalOps.gdbLogicalOr, GDBEngineLib.GdbFeaturesetOperations.gdbFeaturesetByFeatureBuffer)
objGDBFeaturesetCondition.Feature = МояГеометрия
objGDBFeaturesetCondition.Feature.BufferZone(5, 10)
Тема.FeaturesetConditions.Append(objGDBFeaturesetCondition)
ОкноПросмотра.Featureset = Тема.OpenFeatureset()
ОкноПросмотра.Theme.SetWindow(crdY, crdX, 50, 50, 0)
ОкноПросмотра.Update()
ОкноПросмотра.Theme.FeaturesetConditions.Delete(1)
У меня при выполнении кода выделяются все геометрии, кроме текущей.
Не пойму где ошибка? |
|
| | [ Дмитрий Глубоков ]Пятница, 25 марта 2011, 13:29
Код заработал.
Поменял логический оператор GDBEngineLib.GdbLogicalOps.gdbLogicalOr на GDBEngineLib.GdbLogicalOps.gdbLogicalNone,
и вместо objGDBFeaturesetCondition.Feature.BufferZone(5, 10) ввел objGDBFeaturesetCondition.ZoneWidth = 5
.BufferZone(5, 10) почему-то не работает!? |
|
| | [ Objectland Support ]Четверг, 7 апреля 2011, 18:53
| Дмитрий, Вы правильно использовали свойство objGDBFeaturesetCondition.ZoneWidth, именно оно возвращает/устанавливает ширину буферной зоны при селекции по буферной зоне. Метод .BufferZone() строит и возвращает геометрии, представляющие собой буферную зону геометрии-получателя, т.е. используется, например, в случае, когда на карте нужно построить буферные зоны для объектов и отобразить их, или получить буферные зоны для каких-либо расчетов и т.д. |
|
| | [ Евгений ]Четверг, 7 апреля 2011, 19:41
| Подскажите пожалуйста, есть ли какой-либо учебник по Objectland написанный так чтобы даже полный ламер понял о чем идет речь!!! Типа на какую кнопку нажать чтобы получить то-то и то-то. Конкретнее мне нужно создать карту в несколько слоев где на одном слое будет рельеф изучаемой территории, на другом точки с указывающие места обнаружения животных, так же наложить на карту рельефа карту биоклимата и т.п. Заранее благодарен!!!!!!!!! |
|
| | [ Petr27 ]Четверг, 7 апреля 2011, 21:09
| Справка по ObjectLand написана очень популярно, от 17 года. Про существование учебников не слышал. |
|
ОтветитьЗнаком «*» отмечены обязательные для заполнения поля. |