Автор работы: Пользователь скрыл имя, 01 Ноября 2010 в 17:43, Не определен
Разработка и применение прикладных приложений на базе MapInfo
frmStreetFind.Top := 25; // помещаем форму с выводом результата в правый верхний угол, чтобы она не мешала отображению найденного объекта
frmStreetFind.Left := Screen.Width - frmStreetFind.Width;
CentroidX := OleMapInfo.Eval('CentroidX(
CentroidY := OleMapInfo.Eval('CentroidY(
OleMapInfo.Do('Set Map Center ('+'"'+CentroidX+'",'+'"'+
OleMapInfo.Do('Set Map Scale 1 Units "cm" For 35 Units "m"');
Except
MessageDlg('Указанной улицы нет!', mtInformation, [mbOk], 0);
End;
frmGisFind.StatusBar1.Panels[
end;
Для поиска здания используем следующий код в обработчике событий для кнопки «Найти»:
var
Ndom: String;
NameStreet: String;
CentroidX: String;
CentroidY: String;
Layer: String;
Street: String;
Hom: String;
begin
Try
NameStreet := Edit1.Text; //значение улице присваиваем переменной
Ndom := Edit2.Text; //значение дома присваиваем переменной
Layer := ComboBox1.Items[ComboBox1.
Street := ComboBox2.Items[ComboBox2.
Hom := ComboBox3.Items[ComboBox3.
OleMapInfo.Do ('Select * From '+Layer+' Where '+Street+' Like "%'+NameStreet+'%" and '+Hom+' = "'+Ndom+'" Into Selection'); // составляем SQL-запрос на поиск дома (Выбрать всё из слоя с домами где поле с улицей =Edit1 и поле с домом = Edit 2)
frmSQLdom.Top := 25; // помещаем окно с найденной информацией в правый верхней угол
frmSQLdom.Left := Screen.Width - frmSQLdom.Width;
CentroidX := OleMapInfo.Eval('CentroidX(
CentroidY := OleMapInfo.Eval('CentroidY(
OleMapInfo.Do('Set Map Center ('+'"'+CentroidX+'",'+'"'+
OleMapInfo.Do('Set Map Scale 1 Units "cm" For 5 Units "m"');
Except
MessageDlg('Указанного дома нет!', mtInformation, [mbOk], 0);
End;
frmGisFind.StatusBar1.Panels[
Создание подписей для домов и улиц
Для создание подписей в обработчике событий кнопки «Подписать» напишем следующий код:
begin
try
layerStr := ComboBox1.Items[ComboBox1.
layerHom := ComboBox3.Items[ComboBox3.
PoleStr := ComboBox2.Items[ComboBox2.
PoleHom := ComboBox4.Items[ComboBox4.
OleMapInfo.Do('Set Map Layer '+layerStr+' Label Font ("Arial CYR",1,9,16711680) With '+PoleStr+''); // посылаем команду ( подписать на слое улицы шрифтом Arial CYR, жирным красным цветом) информацию для подписи взять из поля подписи улицы
OleMapInfo.Do('Set Map Layer '+layerStr+' Label Auto On'); // включить подпись
OleMapInfo.Do('Set Map Layer '+layerHom+' Label Font ("Arial CYR",1,9,255) With '+PoleHom+''); // посылаем команду ( подписать на слое дома шрифтом Arial CYR, жирным синим цветом) информацию для подписи взять из поля подписи домов
OleMapInfo.Do('Set Map Layer '+layerHom+' Label Auto On'); // включить подпись
Close;
except
end;
Получение списка улиц и списка домов принадлежащей данной улице
Для получения списка в обработчике событий для кнопки «Список» напишем следующий код:
var
sMsgString : String;
sWinHand,s : String;
d,i : byte;
begin
ListBox1.Items.Clear;
sMsgString:='Select
'+ComboBox2.Items[ComboBox2.
oleMapInfo.Do(sMsgString); // запрос на получение списка из таблицы и поля, результат отсортировать по имени
s:=olemapinfo.eval('TableInfo(
d:=strtoint(s);
for i:=1 to d do
begin
oleMapInfo.Do('Fetch Rec '+ IntToStr(i) +' From TMP');
sMsgString
:= 'tmp.'+ComboBox2.Items[
S := oleMapInfo.Eval(sMsgString);
listbox1.Items.Add(s); // вывести результат запроса в таблицу
end;
2.3. Инструкция пользователя
Для
поиска необходимого дома выбираем на
панели инструментов кнопку
. В открывшемся окне указываем в поле
«Таблица» указываем нужную таблицу, по
которой мы будем искать нужный нам дом.
В «Поле улицы» указываем нужную улицу.
Затем указываем «Поле дома». В значениях
мы пишем «Название улицы» и «Номер дома».
Затем нажимаем кнопку «Найти» и у нас
отображается найденный дом выделенным
цветом. (Рис. 10.)
Рис. 10 Окно
с найденным домом
Для поиска необходимой улицы выбираем кнопку и в открывшемся окне в поле «Таблица» указываем таблицу. Затем указываем поле улицы по которому мы будем искать. В значениях указываем улицу. Далее нажимаем кнопку «Найти» и на экране у нас отображается найденная улица в центре окна. (Рис. 11.)
Рис. 11.
Окно с найденной улицей
Для того чтобы подписать улицы и дома нажимаем кнопку . Указываем в настройках шрифта таблицу с улицами. Затем указываем поле в которой которой хранится информация для подписей. Для подписей домов узазываем таблицу с домами и указываем из какого поля будут подписываться дома. Затем нажимаем кнопку «OK» и мы видим, что улицы подписываются красным цветом, а дома синим. При повторном нажатии на кнопку подписи исчезают. (Рис. 12.)
Рис.
12. Окно с подписями
Чтобы
вывести список улиц, нажимаем кнопку
, затем указываем с какого слоя нам брать
список, и указываем поле. После этого
в списке выбираем любую улицу, и она отображается
у нас на экране. (Рис. 13.)
Рис. 13. Окно со списком улиц
Для того чтобы вывести список с домами также нажимаем кнопку , затем выбираем, с какого слоя нам брать список, и указываем поле. После этого в списке выбираем улицу и у нас будут отображаться дома, принадлежащей указанной улице. (Рис. 14.)
Рис.
14. Окно со списком домов
Вывод:
Пакетом MapInfo можно управлять, используя языки программирования, отличные от языка MapBasic (встроенного в MapInfo языка программирования). Написать интегрированное приложения можно на нескольких языках программирования, например, C/C++, Visual Basic, Borland Delphi.
Можно
создать интерфейс
При создании интеграции MapInfo и Delphi, вместо того чтобы писать большой запрос, где используются различные элементы, мы упрощаем ряд функций. Запрос встраивается в приложение. Это является большим преимуществом. Разработчик сам решает, что будет в его приложении.
Заключение
Геоинформационные
технологии бурно развивающееся
направление современных
С помощью ГИС решается ряд задач:
- ГИС позволяют точнейшим образом учитывать координаты объектов и площади участков. Благодаря возможности комплексного (с учетом множества географических, социальных и других факторов) анализа информации о качестве и ценности территории и объектов на ней, эти системы позволяют наиболее объективно оценивать участки и объекты, а также могут давать точную информацию о налогооблагаемой базе.
- В области транспорта ГИС давно уже показали свою эффективность благодаря возможности построения оптимальных маршрутов, как для отдельных перевозок, так и для целых транспортных систем, в масштабе отдельного города или целой страны.
- ГИС позволяют вести мониторинг экологической ситуации и учет природных ресурсов. Они не только могут дать ответ, где сейчас находятся "тонкие места", но и благодаря возможностям моделирования подсказать, куда нужно направить силы и средства, чтобы такие "тонкие места" не возникали в будущем.
- С помощью ГИС определяются взаимосвязи между различными параметрами (например, почвами, климатом и урожайностью сельскохозяйственных культур), выявляются места разрывов электросетей.
- Компания, занимающаяся инженерными коммуникациями, может четко спланировать ремонтные или профилактические работы, начиная с получения полной информации и отображения на экране компьютера (или на бумажных копиях) соответствующих участков, скажем водопровода, и, заканчивая автоматическим определением жителей, на которых эти работы повлияют, с уведомлением их о сроках предполагаемого отключения или перебоев с водоснабжением.
- ГИС помогает, например, в решении таких задач, как предоставление разнообразной информации по запросам органов планирования, разрешение территориальных конфликтов, выбор оптимальных (с разных точек зрения и по разным критериям) мест для размещения объектов и т. д. Требуемая для принятия решений информация может быть представлена в лаконичной картографической форме с дополнительными текстовыми пояснениями, графиками и диаграммами.
- ГИС служат
для графического построения карт и получения
информации, как об отдельных объектах,
так и пространственных данных об областях,
например о расположении запасов природного
газа, плотности транспортных коммуникаций
или распределении дохода на душу населения
в государстве. Отмеченные на карте области
во многих случаях гораздо нагляднее отражают
требуемую информацию, чем десятки страниц
отчетов с таблицами. [1]
Список
литературы
1. Бугаевский Л. М. Геоинформационные системы / Л. М. Бугаевский, В. Я. Цветков. – Учебное пособие для вузов. – М.: «Златоуст», 2000. - 222с.: ил. 28.
2. Капралов Е. Г. Геоинформатика / Е. Г. Капралов, А. В. Кошкарев, В. С. Тикунов / Под редакцией В. С. Тикунова. – М.: Издательский центр «Академия», 2005. – 480с., с. цв. ил.:ил.
3. Руководство пользователя Map Basic
Информация о работе Разработка модуля для поиска информации в MapInfo с помощью Delphi»