 |
www.integro.ru ЦСИ ИНТЕГРО
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Ср 25 Ноя 2015 17:39 Заголовок сообщения: Программный запрос по семантическим данным |
|
|
Добрый день, знатоки
В интерфейсе ИнГЕО предусмотрена возможность выполнения запросов по семантическим данным.
Однако есть ли возможность выполнения таких запросов программными средствами?
То есть, мне, например, при переносе участка из файла на карту необходимо проверить, есть ли уже на карте участок с указанным кадастровым номером. Наверняка кто-то этим уже озадачивался. Как это можно сделать? |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Ср 25 Ноя 2015 19:35 Заголовок сообщения: |
|
|
Пока думал над этим вопросом, нашел интересный метод QueryByContour объекта IIngeoMapObjects. Он облегчает поиск существующих участков на карте, однако не до конца понятно, как следует поступать с условиями поиска (последние два параметра метода: aRelationMask и aRelation).
Если бы был один из указанных параметров, было бы более или менее понятно, но для чего эта маска (aRelationMask) или для чего aRelation? Читал документацию, не понял. Может кто-нибудь объяснить доходчиво? |
|
Вернуться к началу |
|
 |
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Чт 26 Ноя 2015 12:20 Заголовок сообщения: |
|
|
определитесь, вам пространственный запрос или по семантике?
Метод QueryByContour (Объект IIngeoMapObjects)
--------------------------------------------------------------------------------
Поиск пространственных объектов имеющих указанное пространственное отношение к заданному контуру.
Параметры
aLayerIDs
Список идентификаторов слоев, в которых следует производить поиск. Данный параметр может содержать строку или массив строк.
aContour
Контур, по отношению к которому производится поиск.
aRelationMask
Маска пространственных отношений, на которые необходимо производить проверку.
aRelation
Значения пространственных отношений, удовлетворяющих поиску. Пространственные отношения, не указанные в параметре aRelationMask игнорируются.
Возвращаемое значение
Объект для перебора результатов поиска.
Примечания
При анализе каждого пространственного объекта производится вычисление пространственного отношения заданного контура с контурами форм объекта, определяющими геометрию.
Затем к вычисленному отношению применяется маска aRelationMask и результат сравнивается с aRelation. Если значения совпали, то объект считается удовлетворяющим поиску.
Пример
Пример 1
aRelationMask incrIntersected + incrTouched
aRelation incrIntersected
Будут найдены все объекты имеющие пересечения, но не имеющие точек соприкосновения с заданным контуром.
Пример 2
aRelationMask incrContains + incrTouched
aRelation incrTouched
Будут найдены все объекты имеющие точки соприкосновения, но не лежащие внутри заданного контура.
Пример 3
aRelationMask incrContained
aRelation incrContained
Будут найдены все объекты, содержащие внутри себя указанный контур. |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Чт 26 Ноя 2015 13:14 Заголовок сообщения: |
|
|
Спасибо за ответ. Мне нужно выяснить, содержит ли уже карта указанный участок, поэтому я рассматриваю варианты как с пространственным запросом, так и по семантике, а то и в комплексе.
За выдержку из документации спасибо, но я указал, что уже читал ее и у меня проблемы с ее пониманием
Как мне, если такое возможно, указать в параметрах этого метода, что я ищу именно те контуры, которые полностью, идеально и точно, совпадают с указанным? |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Чт 26 Ноя 2015 16:51 Заголовок сообщения: |
|
|
В общем я применил app.ActiveDb.MapObjects.QueryByContour(layerID, contour, TIngeoContourRelation.incrContained | TIngeoContourRelation.incrContains | TIngeoContourRelation.incrTouched , TIngeoContourRelation.incrContained | TIngeoContourRelation.incrContains | TIngeoContourRelation.incrTouched );
Почти то, что нужно, однако, например,два одинаковых контура, различающихся только тем, что в одном из них вырезана "дырка", этот метод считает удовлетворяющими условию. То есть вопрос, как задать условие, чтобы найти только полностью совпадающие контуры, остается открытым. |
|
Вернуться к началу |
|
 |
Николаускас
Зарегистрирован: 27.11.2013 Сообщения: 52
|
Добавлено: Чт 26 Ноя 2015 18:11 Заголовок сообщения: |
|
|
Вопрос о запросе по семантике также в силе. |
|
Вернуться к началу |
|
 |
Foton
Зарегистрирован: 09.10.2006 Сообщения: 158 Откуда: Ярославль
|
Добавлено: Чт 26 Ноя 2015 18:22 Заголовок сообщения: |
|
|
для "дырок" сравнить периметр и площадь
для поиску в семантике можно использовать
function ExecSQL(const aSQL: WideString; aParams: OleVariant; aParamTypes: OleVariant): IIngeoSemDbDataSet; |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|