SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.04.2008 12:26:48

chessplayer
Завсегдатай
Зарегистрирован: 20.11.2007
Сообщений: 43

ГИС MapInfo и СУБД MySQL

Всем доброго дня!

Пытаюсь наладить взаимодействие ГИС MapInfo и базы данных формата СУБД MySQL.
Для этого я использую mysql-connector-odbc-3.51.24-win32.

Составил запрос, который проверяет первую цифру кода на ‘0’:

Код:

SELECT `kbd1`.`theme`.`id_theme`,CONCAT(IF(((ORD(MID(`kbd1`.`t1`.`str_msk`,1,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,1,1)))=ORD(MID(`kbd1`.`t2`.`str`,1,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,2,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,2,1)))=ORD(MID(`kbd1`.`t2`.`str`,2,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,3,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,3,1)))=ORD(MID(`kbd1`.`t2`.`str`,3,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,4,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,4,1)))=ORD(MID(`kbd1`.`t2`.`str`,4,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,5,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,5,1)))=ORD(MID(`kbd1`.`t2`.`str`,5,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,6,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,6,1)))=ORD(MID(`kbd1`.`t2`.`str`,6,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,7,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,7,1)))=ORD(MID(`kbd1`.`t2`.`str`,7,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,8,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,8,1)))=ORD(MID(`kbd1`.`t2`.`str`,8,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,9,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,9,1)))=ORD(MID(`kbd1`.`t2`.`str`,9,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,10,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,10,1)))=ORD(MID(`kbd1`.`t2`.`str`,10,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,11,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,11,1)))=ORD(MID(`kbd1`.`t2`.`str`,11,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,12,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,12,1)))=ORD(MID(`kbd1`.`t2`.`str`,12,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,13,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,13,1)))=ORD(MID(`kbd1`.`t2`.`str`,13,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,14,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,14,1)))=ORD(MID(`kbd1`.`t2`.`str`,14,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,15,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,15,1)))=ORD(MID(`kbd1`.`t2`.`str`,15,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,16,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,16,1)))=ORD(MID(`kbd1`.`t2`.`str`,16,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,17,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,17,1)))=ORD(MID(`kbd1`.`t2`.`str`,17,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,18,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,18,1)))=ORD(MID(`kbd1`.`t2`.`str`,18,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,19,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,19,1)))=ORD(MID(`kbd1`.`t2`.`str`,19,1))),"0","?"))
as code_theme_decode FROM `kbd1`.`theme`, (SELECT `kbd1`.`tabl`.`m` as str_msk FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t1,(SELECT `kbd1`.`tabl`.`m_o` as str FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t2 ORDER BY `kbd1`.`theme`.`id_theme`;

MySQL сервер не тратит и одной миллисекунды на выполнение данного запроса.
Результатом является строка с двумя значениями ‘1’ и ‘0’.
MapInfo, пытаясь выполнить данный запрос, зависает и выдает ошибку.

Я попробовал урезать этот запрос до следующего вида:

Код:

SELECT `kbd1`.`theme`.`id_theme`,CONCAT(IF(((ORD(MID(`kbd1`.`t1`.`str_msk`,1,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,1,1)))=ORD(MID(`kbd1`.`t2`.`str`,1,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,2,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,2,1)))=ORD(MID(`kbd1`.`t2`.`str`,2,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,3,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,3,1)))=ORD(MID(`kbd1`.`t2`.`str`,3,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,4,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,4,1)))=ORD(MID(`kbd1`.`t2`.`str`,4,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,5,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,5,1)))=ORD(MID(`kbd1`.`t2`.`str`,5,1)) AND
 (ORD(MID(`kbd1`.`t1`.`str_msk`,19,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,19,1)))=ORD(MID(`kbd1`.`t2`.`str`,19,1))),"0","?"))
as code_theme_decode FROM `kbd1`.`theme`, (SELECT `kbd1`.`tabl`.`m` as str_msk FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t1,(SELECT `kbd1`.`tabl`.`m_o` as str FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t2 ORDER BY `kbd1`.`theme`.`id_theme`;

MapInfo справился. Но стоит только увеличить запрос до вида:

Код:

SELECT `kbd1`.`theme`.`id_theme`,CONCAT(IF(((ORD(MID(`kbd1`.`t1`.`str_msk`,1,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,1,1)))=ORD(MID(`kbd1`.`t2`.`str`,1,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,2,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,2,1)))=ORD(MID(`kbd1`.`t2`.`str`,2,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,3,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,3,1)))=ORD(MID(`kbd1`.`t2`.`str`,3,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,4,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,4,1)))=ORD(MID(`kbd1`.`t2`.`str`,4,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,5,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,5,1)))=ORD(MID(`kbd1`.`t2`.`str`,5,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,6,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,6,1)))=ORD(MID(`kbd1`.`t2`.`str`,6,1)) AND
(ORD(MID(`kbd1`.`t1`.`str_msk`,19,1))&ORD(MID(`kbd1`.`theme`.`code_theme`,19,1)))=ORD(MID(`kbd1`.`t2`.`str`,19,1))),"0","?"))
as code_theme_decode FROM `kbd1`.`theme`, (SELECT `kbd1`.`tabl`.`m` as str_msk FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t1,(SELECT `kbd1`.`tabl`.`m_o` as str FROM `kbd1`.`tabl` WHERE `kbd1`.`tabl`.`id`=31) as t2 ORDER BY `kbd1`.`theme`.`id_theme`;

И на экране выдается: “MapInfo Professional(TM) for Windows application file - обнаружена ошибка. Приложение будет закрыто.

Профессионалы, работающие со средой MapInfo, считают, что проблема в
ODBC-драйвере. Они советовали проверить ODBC-драйвер на этом запросе
без MapInfo. Что я и сделал. Я попробовал выполнить этот запрос через другое
средство, которое позволяет работать через ODBC, например, через Excel. Все
прошло успешно. А следовательно ODBC-драйвер работает исправно.

Похоже, придется искать другую ГИС для визуализации пространственных данных.

Какого ваше мнение в отношении всего этого? Спасибо.

Неактивен

 

#2 15.04.2008 18:22:56

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ГИС MapInfo и СУБД MySQL

Из того, что Вы написали можно предположить, что в ГИС Mapinfo переполнение строки или аналогичная ошибка. Другого ничего в голоку не приходит.

Неактивен

 

#3 11.12.2009 16:19:35

sasa85
Участник
Зарегистрирован: 11.12.2009
Сообщений: 1

Re: ГИС MapInfo и СУБД MySQL

Я тоже мучал МапИнфо и май скл и потом аксесс еще - дохлый номер!
Пользуйся mysql и flex. Пример готового продукта Экологический мониторинг с картографией. Получилось что в вебе можно мониторить любые показатели, делать заливки и т.п.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson