MAPINFO + MS SQL + и QGIS
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 04 окт 2012, 12:07
- Репутация: 0
MAPINFO + MS SQL + и QGIS
Здравствуйте!
К сожалению не являюсь специалистом ни в области ИТ, ни ГИС, но дело полезное сделать хочу.
QGIS 1.7.4
Mapinfo 11.0.3
MS SQL Express 2005
Пытаюсь собрать следующую схему:
1 Создать базу данных на MS SQL. Именно MS SQL потому, что имеются в штате разработчики, которые смогут в случае необходимости дописать пользовательское ПО. В базе планирую хранить как картографические данные, так и различные другие.
2 Часть пользователей требует для работы Mapinfo, поэтому планирую, что эти пользователи будут подключаться к базе с помощью Mapinfo, а все остальные - QGIS.
3 Есть определенный набор картографии в виде файлов в уже работающем QGIS - его необходимо передать в MS SQL.
Ситуация следующая. Часть имеющейся картографии я уже передал в MS SQL через Mapinfo. База MS SQL успешно подключается в Mapinfo и отображается. Пытаюсь подключить базу к QGIS - подключение происходит, соответствующую таблицу базы выбираю, но на карте она никак не отображается. Если открыть таблицу атрибутов, то видно, что в определенных полях записаны географические координаты - то есть в QGIS они попали. Подозреваю, что нужно QGIS как-то объяснить, что в данных столбцах таблицы записаны координаты, но никак не могу понять как это делается. После чтения инструкции появилось подозрение, что должна быть колонка "geometry_columns" с описанием координат объектов, но у меня этой колонки нет и заводить ее смысла не вижу, так как координаты уже есть в других колонках.
В итоге не могу решить уже не первый день вопрос - как QGIS заставить использовать в качестве координат объектов имеющиеся в таблице колонки? Или может имеются более правильные и простые схемы организации совместной работы в базе данных?
К сожалению не являюсь специалистом ни в области ИТ, ни ГИС, но дело полезное сделать хочу.
QGIS 1.7.4
Mapinfo 11.0.3
MS SQL Express 2005
Пытаюсь собрать следующую схему:
1 Создать базу данных на MS SQL. Именно MS SQL потому, что имеются в штате разработчики, которые смогут в случае необходимости дописать пользовательское ПО. В базе планирую хранить как картографические данные, так и различные другие.
2 Часть пользователей требует для работы Mapinfo, поэтому планирую, что эти пользователи будут подключаться к базе с помощью Mapinfo, а все остальные - QGIS.
3 Есть определенный набор картографии в виде файлов в уже работающем QGIS - его необходимо передать в MS SQL.
Ситуация следующая. Часть имеющейся картографии я уже передал в MS SQL через Mapinfo. База MS SQL успешно подключается в Mapinfo и отображается. Пытаюсь подключить базу к QGIS - подключение происходит, соответствующую таблицу базы выбираю, но на карте она никак не отображается. Если открыть таблицу атрибутов, то видно, что в определенных полях записаны географические координаты - то есть в QGIS они попали. Подозреваю, что нужно QGIS как-то объяснить, что в данных столбцах таблицы записаны координаты, но никак не могу понять как это делается. После чтения инструкции появилось подозрение, что должна быть колонка "geometry_columns" с описанием координат объектов, но у меня этой колонки нет и заводить ее смысла не вижу, так как координаты уже есть в других колонках.
В итоге не могу решить уже не первый день вопрос - как QGIS заставить использовать в качестве координат объектов имеющиеся в таблице колонки? Или может имеются более правильные и простые схемы организации совместной работы в базе данных?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: MAPINFO + MS SQL + и QGIS
Выбросьте версию 1.7.4, установите 1.8.0, а ещё лучше ночную сборку 1.9.0
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: MAPINFO + MS SQL + и QGIS
Таблица, а не колонка.После чтения инструкции появилось подозрение, что должна быть колонка "geometry_columns"
Таблица geometry_columns быть должна в любом случае. Делайте импорт через ogr2ogr.как QGIS заставить использовать в качестве координат объектов имеющиеся в таблице колонки?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 588
- Зарегистрирован: 30 мар 2009, 21:53
- Репутация: 55
- Откуда: Королев
Re: MAPINFO + MS SQL + и QGIS
Хотя вы и не описали, как вы конвертировали данные в таблицы MS SQL, но попробую предположить, что вы создали таблицы с двумя полями - XY, либо с одним полем, в котором записан WKT или WKB. Это конечно работоспособный вариант, но не оптимальный.yazhko писал(а):Или может имеются более правильные и простые схемы организации совместной работы в базе данных?
Если вы работаете с MS SQL 2008, то лучше использовать его родные типы - geometry/geography. Насколько я знаю, Mapinfo поддерживает эти типу начиная с версии 10. QGIS так же поддерживает этот формат, начиная с версии 1.8 (хотя разрабатываемая версия поддерживает конечно намного лучше).
Для конвертирования данных в родной тип MSSQL из Mapinfo можно воспользоваться EasyLoader.
Вот зачем писать то, о чем ни разу не знаешь? MSSQL провайдер в QGIS не требует этой таблицы! У него есть свое детектирование таблиц с географическими полями.rhot писал(а):Таблица geometry_columns быть должна в любом случае. Делайте импорт через ogr2ogr.
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: MAPINFO + MS SQL + и QGIS
Вот здесь зачем, объясните мне, возврат SRID происходит через geometry_columns?
/************************************************************************/
/* FetchSRSId() */
/************************************************************************/
int OGRMSSQLSpatialTableLayer::FetchSRSId()
{
CPLODBCStatement oStatement = CPLODBCStatement( poDS->GetSession() );
oStatement.Appendf( "select srid from geometry_columns "
"where f_table_schema = '%s' and f_table_name = '%s'",
pszSchemaName, pszTableName );
if( oStatement.ExecuteSQL() && oStatement.Fetch() )
{
if ( oStatement.GetColData( 0 ) )
nSRSId = atoi( oStatement.GetColData( 0 ) );
}
return nSRSId;
}
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: MAPINFO + MS SQL + и QGIS
Мсье не видит разницы между QGIS и GDAL?
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: MAPINFO + MS SQL + и QGIS
ээ, моя вина, говорим о разном: я думал, qgis всё ещё gdal использует для mssql
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: MAPINFO + MS SQL + и QGIS
Всё ещё? Внезапно, провайдер НИКОГДА не использовал GDAL
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: MAPINFO + MS SQL + и QGIS
А как же тогда подключался QGIS?!
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 04 окт 2012, 12:07
- Репутация: 0
Re: MAPINFO + MS SQL + и QGIS
Спасибо огромное за ответы! Данные действительно перекидывал в базу через Mapinfo с помощью EasyLoader. Версию QGIS 1.9 не нашел, поэтому скачал и установил 1.8. QGIS перестала цепляться к базе - разбираюсь в причинах.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 04 окт 2012, 12:07
- Репутация: 0
Re: MAPINFO + MS SQL + и QGIS
Подключился к базе. Проблема осталась. Есть база, в которой имеется совокупность объектов. В таблице базы описываются объекты - имя, тип, символ и т.д. В таблице есть кроме всего прочего 3 колонки - MI_SQL_X, MI_SQL_Y, и MI_SQL_MICODE. В колонках MI_SQL_X и MI_SQL_Y записаны географические координаты объектов. При перекидывании данных в базу руководствовался инструкцией:
http://npk-kaluga.ru/Util_EasyLoader.htm
В QGIS база открывается, в таблице атрибутов видны все данные, но при этом на карте ничего не отображается. Подскажите пожалуйста, куда копать дальше? Что еще можно "покрутить", проверить? Или, быть может, порекомендуете литературу для устранения пробелов в знаниях?
http://npk-kaluga.ru/Util_EasyLoader.htm
В QGIS база открывается, в таблице атрибутов видны все данные, но при этом на карте ничего не отображается. Подскажите пожалуйста, куда копать дальше? Что еще можно "покрутить", проверить? Или, быть может, порекомендуете литературу для устранения пробелов в знаниях?
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 04 окт 2012, 12:07
- Репутация: 0
Re: MAPINFO + MS SQL + и QGIS
Всем большое спасибо за ответы - вовремя навели на правильный путь.
Проблему для себя решил так:
если установить SQL Server 2008 (версии выше не проверял), то при перекидывании данных из Mapinfo в базу в EasyLoader появляется возможность сохранять географические данные в "SQL server spatial". Перекинутые данные великолепно подхватываются в QGIS через "Слой"-"Добавить слой MSSQL Spatial".
Проблему для себя решил так:
если установить SQL Server 2008 (версии выше не проверял), то при перекидывании данных из Mapinfo в базу в EasyLoader появляется возможность сохранять географические данные в "SQL server spatial". Перекинутые данные великолепно подхватываются в QGIS через "Слой"-"Добавить слой MSSQL Spatial".
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей