Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Программный запрос по семантическим данным

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Николаускас



Зарегистрирован: 27.11.2013
Сообщения: 52

СообщениеДобавлено: Ср 25 Ноя 2015 17:39    Заголовок сообщения: Программный запрос по семантическим данным Ответить с цитатой

Добрый день, знатокиSmile

В интерфейсе ИнГЕО предусмотрена возможность выполнения запросов по семантическим данным.
Однако есть ли возможность выполнения таких запросов программными средствами?
То есть, мне, например, при переносе участка из файла на карту необходимо проверить, есть ли уже на карте участок с указанным кадастровым номером. Наверняка кто-то этим уже озадачивался. Как это можно сделать?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 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    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ. Мне нужно выяснить, содержит ли уже карта указанный участок, поэтому я рассматриваю варианты как с пространственным запросом, так и по семантике, а то и в комплексе.
За выдержку из документации спасибо, но я указал, что уже читал ее и у меня проблемы с ее пониманиемSmile
Как мне, если такое возможно, указать в параметрах этого метода, что я ищу именно те контуры, которые полностью, идеально и точно, совпадают с указанным?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Николаускас



Зарегистрирован: 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;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB