не определена переменная или поле mapinfo
Форумы GIS-Lab.info
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
Запрос в Mapinfo
Запрос в Mapinfo
Сообщение Foxxxy » 01 авг 2012, 09:32
Re: Запрос в Mapinfo
Сообщение Sibit » 01 авг 2012, 11:56
Re: Запрос в Mapinfo
Сообщение Foxxxy » 01 авг 2012, 13:14
Re: Запрос в Mapinfo
Сообщение Пётр Дубоделов » 01 авг 2012, 13:57
позволю себе встрять:
также можете воспользоваться вкладкой «вложения» в стандартной форме ответа. Задача типична, например, простое решение для QGis
поэтому стандарт её решения интересен любому для экономии времени.
Re: Запрос в Mapinfo
Сообщение Foxxxy » 01 авг 2012, 14:15
Re: Запрос в Mapinfo
Сообщение Пётр Дубоделов » 01 авг 2012, 15:42
Re: Запрос в Mapinfo
Сообщение Foxxxy » 01 авг 2012, 15:49
Re: Запрос в Mapinfo
Сообщение Пётр Дубоделов » 01 авг 2012, 15:51
сделать слой изменяемым, выбрать его, далее меню Объекты>выбрать изменяемый. затем выбрать слой лесничеств, далее Объекты>разрезать.
правда результат подобной операции не совсем подойдет для описанного выше запроса: будет много брака. в этот раз специально не проверял: как-никак ваши данные, но, как говорится, по опыту.
мне важно было показать существование возможности (думается, не единственной) и способ ее реализации.
Re: Запрос в Mapinfo
Сообщение Boris » 01 авг 2012, 22:55
Re: Запрос в Mapinfo
Сообщение Sibit » 02 авг 2012, 07:34
Re: Запрос в Mapinfo
Сообщение Пётр Дубоделов » 02 авг 2012, 08:13
Re: Запрос в Mapinfo
Сообщение Foxxxy » 02 авг 2012, 08:45
Re: Запрос в Mapinfo
Сообщение Sibit » 02 авг 2012, 09:13
Форумы GIS-Lab.info
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
SQL запросы в мапинфо
SQL запросы в мапинфо
Сообщение cskq » 30 сен 2014, 17:10
Re: SQL запросы в мапинфо
Сообщение Игорь Белов » 30 сен 2014, 18:48
Re: SQL запросы в мапинфо
Сообщение ginpetr » 30 сен 2014, 20:10
Re: SQL запросы в мапинфо
Сообщение cskq » 01 окт 2014, 09:47
Re: SQL запросы в мапинфо
Сообщение Екатерина2016 » 24 апр 2018, 20:30
Re: SQL запросы в мапинфо
Сообщение trir » 24 апр 2018, 20:36
Re: SQL запросы в мапинфо
Сообщение Екатерина2016 » 24 апр 2018, 20:46
Re: SQL запросы в мапинфо
Сообщение Игорь Белов » 24 апр 2018, 21:08
Re: SQL запросы в мапинфо
Сообщение freeExec » 24 апр 2018, 21:13
Re: SQL запросы в мапинфо
Сообщение Игорь Белов » 24 апр 2018, 21:24
Re: SQL запросы в мапинфо
Сообщение Екатерина2016 » 25 апр 2018, 06:22
Кто сейчас на конференции
Сейчас этот форум просматривают: ZoeScott и 5 гостей
Форумы GIS-Lab.info
Геоинформационные системы (ГИС) и Дистанционное зондирование Земли
Сообщение nikomuro » 24 мар 2015, 14:32
Сообщение Игорь Белов » 24 мар 2015, 16:08
Сообщение Slinger » 24 мар 2015, 16:46
Сообщение nikomuro » 24 мар 2015, 20:48
Сообщение nikomuro » 24 мар 2015, 21:31
Сообщение Sibit » 25 мар 2015, 06:42
ErnieBoyd, как вы делали?
Сообщение Игорь Белов » 25 мар 2015, 09:17
Сообщение Sibit » 25 мар 2015, 09:35
А можно этот момент подробнее? А то, я совсем не понимаю, что было сделано(сам попробовал импорт в шейп, но не вышло).
Там скорей всего как-то грохнули часть файла с данными, индекс и Map сохранился как есть(или подсунули DAT от другой таблицы). Отсюда такой эффект. Соответственно семантику восстановить невозможно.
Сообщение nikomuro » 25 мар 2015, 09:45
Сообщение Игорь Белов » 25 мар 2015, 10:45
Сообщение Slinger » 25 мар 2015, 10:58
Я поступил так же, как и описывал в трёх предыдущих темах по MI, у авторов которых были аналогичные ошибки:
В исходном dat файле было прописано 36 объектов (36 в шестнадцатеричной системе счисления = 54 в десятеричной). Мне нужно было прописать 441 объект, то есть 01B9 в hex системе счисления. А поскольку в 95% процентах любого файла на ПК используется метод записи байт little endian, то есть старший бит должен быть справа, то я записываю это число справа налево, то есть «B9 01». Тем самым я сказал MI, чтобы он отобразил мне 441 запись в списке таблицы. Если я задам число, большее чем 441, то первые 441 объект будут связаны с графикой, а остальные будут просто пустые строки.
Не определена переменная или поле mapinfo
Set miNewApp = CreateObject(«MapInfo.Application»)
strAction = «Open Table «»» & strPath & «»»»
miNewApp.RunCommand («Browse * From Точки»)
miNewApp.RunCommand («Insert Into Точки (idsPOINT_LEG_ID, idsDISTRICT_ID, chrPOINT_LEG_NAME, lngLAT_DEG, » & _
«lngLAT_MIN, lngLAT_SEC, sngLAT_DEC, lngLON_DEG, lngLON_MIN, lngLON_SEC, sngLON_DEC) VALUES (» & strValues & «)»)
Все хорошо, точка вставляется, но в некоторые поля (секунды и десятичные градусы) передаются дробные числа, а отображается почему-то только целая их часть.
Пришлось добавить сюда оператор, который отвечал за изменение информации:
miNewApp.RunCommand («Select * From Точки Where idsPOINT_LEG_ID = » & intValue & «»)
miNewApp.RunCommand («Update Selection Set idsDISTRICT_ID = «»» & intCodeDistrict & «»», » & _
«chrPOINT_LEG_NAME = «»» & strPointName & «»», lngLAT_DEG = «»» & varLatitudeDeg & «»», » & _
«lngLAT_MIN = «»» & varLatitudeMin & «»», lngLAT_SEC = «»» & varLatitudeSec & «»», » & _
«sngLAT_DEC = «»» & varLatitudeDec & «»», lngLON_DEG = «»» & varLongitudeDeg & «»», » & _
«lngLON_MIN = «»» & varLongitudeMin & «»», lngLON_SEC = «»» & varLongitudeSec & «»», » & _
«sngLON_DEC = «»» & varLongitudeDec & «»»»)
Проблема исчезла, а вопрос остался. Кто-н. в курсе, что это за глюки?
Далее, пытаюсь удалить точку (несколько строк кода не привожу, они как в предыдущем модуле):
Dim intRowID As Integer
miNewApp.RunCommand («Select * From Точки_сбора Where idsPOINT_LEG_ID = » & varNumber & «»)
miNewApp.RunCommand («intRowID = Selection.RowID»)
strValues = «»»» & intValue & «»», «»» & intCodeDistrict & «»», «»» & strPointName & «»», » & _
«»»» & varLatitudeDeg & «»», «»» & varLatitudeMin & «»», «»» & varLatitudeSec & «»», » & _
«»»» & varLatitudeDec & «»», «»» & varLongitudeDeg & «»», «»» & varLongitudeMin & «»», » & _
«»»» & varLongitudeSec & «»», «»» & varLongitudeDec & «»»»
strValues = Replace(strValues, «.», «,») ‘причем эту строку можно и не выполнять, все равно вставятся только целые части дробных чисел.
Проблемы здесь, кажется, нет. В strValues просто собраны все переменные, которые по отдельности участвуют в операторе Update, а там результат вполне адекватный.
2.
> Переменная intRowID где объявлена? Правильно в Access. А присвоение ей где происходит? Правильно в MapInfo. Не путайте контекст MapInfo с контекстом Access, MapInfo ничего неизвестно про переменные, объявленные в Access.
Ну это да, это я прошляпил.
3.
> miNewApp.RunCommand («Select * From Точки_сбора Where idsPOINT_LEG_ID = » & varNumber & » Into DeletePointTable NoSelect»)
miNewApp.RunCommand («Delete From DeletePointTable»)
Да, я бы до этого сам не допер. Я-то просто пытался повторить пример из справки, а там вроде бы не так?
Sub Main
Dim obj as Object
Include «mapbasic.def»
Open Table «C:\Точки»
Browse * From Точки
Insert Into Точки (idsDISTRICT_ID, chrPOINT_LEG_NAME, lngLAT_DEG, lngLAT_MIN, lngLAT_SEC, sngLAT_DEC, lngLON_DEG, lngLON_MIN, lngLON_SEC, sngLON_DEC) VALUES («7», «Быковка», «49», «30», «10,6», «49,5029», «43», «20», «13,8», «43,3372»)
Update Точки
Set obj = CreatePoint(43.3372, 49.5029,) ‘здесь происходит ошибка!
Commit Table Точки
Close Table Точки
Include «mapbasic.def»
Open Table «C:\Точки»
Browse * From Точки
Insert Into Точки (idsPOINT_LEG_ID, idsDISTRICT_ID, chrPOINT_LEG_NAME, lngLAT_DEG, lngLAT_MIN, lngLAT_SEC, sngLAT_DEC, lngLON_DEG, lngLON_MIN, lngLON_SEC, sngLON_DEC) VALUES («500», «7», «Быковка», «48», «50», «50.0», «48.8472», «43», «50», «50.0», «43.8472»)
Select * From Точки Where idsPOINT_LEG_ID = 500
Update Selection Set lngLAT_SEC = «50.0», sngLAT_DEC = «48.8472», lngLON_SEC = «50.0», sngLON_DEC = «43.8472»
Insert Into Точки (idsPOINT_LEG_ID)
Values ( CreatePoint (43.8472, 48.8472) ) ‘на этой строке ошибка – пишет, что не удалось преобразовать данные
Commit Table Точки
Close Table Точки
> еще вопрос. Как таблицу закрывать, я знаю. А как сам MapInfo закрыть? Попытка выполнить
miNewApp.RunCommand («Run Menu Command M_FILE_EXIT») к желаемому результату не привела.
Команда
End MapInfo
Include «mapbasic.def»
Open Table «C:\Точки»
Browse * From Точки
Insert Into Точки (idsPOINT_LEG_ID, idsDISTRICT_ID, chrPOINT_LEG_NAME, lngLAT_DEG, lngLAT_MIN, lngLAT_SEC, sngLAT_DEC, lngLON_DEG, lngLON_MIN, lngLON_SEC, sngLON_DEC) VALUES («500», «7», «Быковка», «48», «50», «50.0», «48.8472», «43», «50», «50.0», «43.8472»)
Select * From Точки Where idsPOINT_LEG_ID = 500
Update Selection Set obj = CreatePoint (43.8472, 48.8472)
Commit Table Точки
Close Table Точки
Просто не сразу понял, что obj – это название колонки, которая не отображается. Читаю Руководство пользователя MapBasic. На порядок лучше чем хелп.
О закрывании MapInfo
> Команда
End MapInfo
А можно так:
miNewApp.RunCommand («Run Menu Command 113»)
Оказывается, объявленная константа Public Const M_FILE_EXIT = 113 не помогает. Надо передавать непосредственно число.
Возник вопрос с удалением записи. Чтобы в таблице не оставалось серой строки, ее надо упаковать:
Include «mapbasic.def»
Open Table «C:\Точки»
Browse * From Точки
Select * From Точки Where idsPOINT_LEG_ID = 500 Into DeletePointTable NoSelect
Delete From DeletePointTable
Commit Table Точки
Pack Table Точки
Close Table Точки
End Sub
но почему-то все равно серая строка на месте удаленной записи остается. Почему?
Задайте имя файлу запроса, укажите каталог и нажмите кнопку
сохраняются с расширением QRY и размещаются в каталоге, определенном в меню
Настройки (Настройки > Режимы > Каталоги).
Для сохранения запроса в шаблоне не надо проверять синтаксис или
логическую завершенность самого запроса.
Чтобы удалить шаблон:
• выберите шаблон по имени и нажмите клавишу
отмены/подтверждения удаления выбранного шаблона.. Если шаблонов данного типа не
существует, то появится кнопка для восстановления шаблона по умолчанию.
Вычисляемая колонка – это такая колонка, которая содержит результат применения запроса.
В приведенном выше примере колонка «Плотность» является вычисляемой колонкой. По
умолчанию поле
содержит звездочку (*), что означает выбор всех колонок
из базовой таблицы и их включение в таблицу запроса. Если для вычислений не требуются
все колонки, удалите звездочку и введите имена нужных колонок. Можно создавать несколько
вычисляемых колонок. Нет ограничений на количество вычисляемых колонок. Помните, чем
больше создается вычисляемых колонок, тем дольше обрабатывается запрос в MapInfo Pro.
Можно создавать вычисляемые колонки, используя функции обобщения
будет содержать в результате население всего земного шара.
вычислит площадь всего земного шара.
Создание псевдонимов колонок
При создании вычисляемой колонки MapInfo Pro использует определенное выражение в
качестве названия колонки. Оно может быть неудобочитаемым. Вы можете задать
– свое название колонки. Например, колонка плотности населения в окне списка из
предыдущего примера будет иметь название:
• Population / Area(obj, “sq mi”)
Мы можем дать этой колонке более содержательное название.