Разработка специализированной системы визуализации и анализа городской среды

Автор работы: Пользователь скрыл имя, 06 Января 2013 в 23:20, реферат

Краткое описание

Цель работы – анализ методов информационной визуализации и визуального анализа и применение их для разработки прототипа системы поддержки конечного пользователя.
В процессе работы проводился анализ возможностей географических информационных систем как средств визуализации и анализа данных, исследовались различные методы представления географических и семантических данных.

Вложенные файлы: 1 файл

Tekst.docx

— 2.90 Мб (Скачать файл)

 

8.3. Окно печати. Форма «MyLayoutForm»

Основой формы является объект класса LayoutForm библиотеки MapWindow. В этой главе опишем основные процедуры и функции, обеспечивающие полноценную работу данного объекта. Большинство из них реализованы в библиотеке, но некоторые были доработаны и изменены, для обеспечения нужной функциональности.

public void NewLayout – создание новой печатной формы.

public void LoadLayout – загрузка существующей печатной формы, сохраненной ранее.

public void SaveLayout – сохранение текущей печатной формы.

public void Print – Печать текущей формы

public void ZoomIn – Увеличение масштаба печатной формы

public void ZoomOut –Уменьшение масштаба печатной формы

public void ZoomFitToScreen- Изначальный масштаб печатной формы

public void ZoomInMap- Увеличение масштаба выбранного фрагмента карты

public void ZoomOutMap- Уменьшение масштаба выбранного фрагмента карты

public void ZoomFullExtentMap- Максимальный масштаб выбранного фрагмента карты, полное отображение слоя.

public void ZoomFullViewExtentMap- Начальный масштаб выбранного фрагмента карты

public void PanMap- Передвижение карты внутри добавленного на форму элемента

 

ЗАКЛЮЧЕНИЕ

В заключении мы хотим описать  поставленную нами задачу визуализации информационной системы городской среды и информационной поддержки пользователей. Основной идеей была послойная организация географических и семантических данных на электронной карте. Вывод данных производится в зависимости от масштаба, установленных фильтров и настроек. Разработан прототип программы, реализующий нашу идею. Программа представляет из себя геоинформационную систему с электронной картой части Екатеринбурга и инструментарием по работе с ней. Реализованы следующие возможности:

    • Поиск объекта по адресу, а так же поиск групп объектов по заданным параметрам (через систему запросов).
  • Измерение расстояния между объектами, их площади.
  • Печать фрагментов карты.
  • Фильтрация отображающихся объектов на карте.
  • Просмотр и анализ транспортной инфраструктуры города (уровень пробок,  движение общественного транспорта).

На следующем этапе  необходимы консультации со специалистами, занимающимися торговлей недвижимостью, и аккуратное опробование на реальных пользователях. Следует отметить, что  данный прототип нуждается в развитии. Отметим основные моменты, требующие доработки:

    • Использование реальных географических карт, связь с координатами.
    • Возможность пользователю самостоятельно создавать и редактировать объекты.

 

ЛИТЕРАТУРА

  1. А.А. Питенко – Нейросетевой анализ в геоинформационных системах, диссертация, Красноярск, 2010г.
  2. http://geofizic.ru
  3. www.dataplus.ru
  4. http://www.gis-tech.ru/
  5. Андрианов В.- Гис для бизнеса, статься журнала ArcReview  №1 (12) 2000г.
  6. Андрианов В. – ГИС на транспорте, статься журнала ArcReview  №1 (24) 2003г.
  7. http://www.yaprobki.ru/
  8. Авербух В.Л. – конспект лекций по спецкурсу «Визуализация программного обеспечения», Уральский Государственный Университет им. А.М.Горького, г.Екатеринбург, 2010г.
  9. http://ru.wikipedia.org/wiki/C_Sharp
  10. Белков А.В. , Грызлова Т.П. , Шаров В.Г. – Проблемы и методы построения эффективных визуальных информационных систем, статья журнала «Програмные продукты и системы», выпуск №3 за 2002г.
  11. Смирнов Н.В. – конспект лекций «Проектирование информационных систем», Балтийский Государственный Технический Университет, С.Петербург, 2008г.
  12. Гохман В. – Общегородские ГИС, статья журнала ArcReview № 3 (46) 2008г.
  13. Скатерщиков С. – ГИС в градостроительном проектировании и управлении территориями, статья журнала ArcReview  №3 (18) 2001г.
  14. Андрианов В. – ГИС в торговле и сфере услуг,  статья журнала ArcReview № 4 (35) 2005г.
  15. Luo Yingwei, Wang Xiaolin, Xu Zhuoqun - Gis Components And Map Visualization Objects, Dept. of Computer Science and Technology, Peking University, Beijing, P.R.China, 100871
  16. Hui Lin, Zhu Qing - Data Visualization: Virtual Geographic Environments combining AEC and GIS, статья журнала « Directions Magazine», 2004г.

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ А

Класс MainForm

 

        public MainForm()

        {

            InitializeComponent();

            map.MapFunctions.Add("SelectInfo", new SelectInfoFunction(map));

            map.MapFunctions.Add("MyZoomOut", new MyZoomOutFunction(map));

            map.MapFunctions.Add("MyZoomIn", new MyZoomInFunction(map));

            map.MapFunctions.Add("MyMeasure", new MyMeasureFunction(map));

            map.FunctionMode = FunctionModes.None;

        }

 

       private void MainForm_Load(object sender, EventArgs e)

        {

           

            loadform lf = new loadform();

            fi = new Icons();

 

            lf.Show();

 

            loadCity();

            lf.loadbar.Value = 10;

            loadRaion();

            lf.loadbar.Value = 20;

            loadMainStreet();

            lf.loadbar.Value = 40;

            loadBigStreet();

            lf.loadbar.Value = 60;

            loadStreets();

            lf.loadbar.Value = 80;

            loadBuildings();

            loadSvetofor();

            loadPeshehod();

            loadPlaces();

            lf.loadbar.Value = 100;

            loadIcons();

 

            lf.Close();

 

            InvisibleLayers();

            editTrue();

            City.IsVisible = true;

            selectedFalse();

            City.SelectionEnabled = true;

 

            road_scheme_create();

            MainStreetTraff.IsVisible = false;

            MainStreetIco.IsVisible = false;

            Svetofor.IsVisible = false;

            Peshehod.IsVisible = false;

            Places.IsVisible = false;

 

            map.Invalidate();

 

            Rectangle r = map.MapFrame.View;

            int w = r.Width;

            int h = r.Height;

            r.Inflate((int)(r.Width / 4), (int)(r.Height / 4));

            map.MapFrame.View = r;

            map.MapFrame.ResetExtents();

        }

 

        public void road_scheme_create()

        {

            road_vih1 = new LineScheme();

            road_vih2 = new LineScheme();

            road_vih3 = new LineScheme();

            road_bud1 = new LineScheme();

            road_bud2 = new LineScheme();

            road_bud3 = new LineScheme();

 

 

            Color color1 = Color.FromArgb(86, 255, 66);

            Color color2 = Color.FromArgb(251, 251, 36);

            Color color3 = Color.FromArgb(242, 177, 57);

            Color color4 = Color.FromArgb(242, 55, 57);

 

            LineCategory traff11 = new LineCategory(color1, 4);

            traff11.FilterExpression = "[vih1] < 3";

 

            LineCategory traff12 = new LineCategory(color2, 4);

            traff12.FilterExpression = "[vih1] >= 3";

 

            LineCategory traff13 = new LineCategory(color3, 4);

            traff13.FilterExpression = "[vih1] >= 6";

 

            LineCategory traff14 = new LineCategory(color4, 4);

            traff14.FilterExpression = "[vih1] >= 8";

 

            road_vih1.ClearCategories();

            road_vih1.AddCategory(traff11);

            road_vih1.AddCategory(traff12);

            road_vih1.AddCategory(traff13);

            road_vih1.AddCategory(traff14);

 

            LineCategory traff21 = new LineCategory(color1, 4);

            traff21.FilterExpression = "[vih2] < 3";

 

            LineCategory traff22 = new LineCategory(color2, 4);

            traff22.FilterExpression = "[vih2] >= 3";

 

            LineCategory traff23 = new LineCategory(color3, 4);

            traff23.FilterExpression = "[vih2] >= 4";

 

            LineCategory traff24 = new LineCategory(color4, 4);

            traff24.FilterExpression = "[vih2] >= 5";

 

            road_vih2.ClearCategories();

            road_vih2.AddCategory(traff21);

            road_vih2.AddCategory(traff22);

            road_vih2.AddCategory(traff23);

            road_vih2.AddCategory(traff24);

 

            LineCategory traff31 = new LineCategory(color1, 5);

            traff31.FilterExpression = "[vih3] < 3";

 

            LineCategory traff32 = new LineCategory(color2, 5);

            traff32.FilterExpression = "[vih3] >= 3";

 

            LineCategory traff33 = new LineCategory(color3, 5);

            traff33.FilterExpression = "[vih3] >= 6";

 

            LineCategory traff34 = new LineCategory(color4, 5);

            traff34.FilterExpression = "[vih3] >= 8";

 

            road_vih3.ClearCategories();

            road_vih3.AddCategory(traff31);

            road_vih3.AddCategory(traff32);

            road_vih3.AddCategory(traff33);

            road_vih3.AddCategory(traff34);

 

            LineCategory traff41 = new LineCategory(color1, 4);

            traff41.FilterExpression = "[bud1] < 3";

 

            LineCategory traff42 = new LineCategory(color2, 4);

            traff42.FilterExpression = "[bud1] >= 3";

 

            LineCategory traff43 = new LineCategory(color3, 4);

            traff43.FilterExpression = "[bud1] >= 6";

 

            LineCategory traff44 = new LineCategory(color4, 4);

            traff44.FilterExpression = "[bud1] >= 8";

 

            road_bud1.ClearCategories();

            road_bud1.AddCategory(traff41);

            road_bud1.AddCategory(traff42);

            road_bud1.AddCategory(traff43);

            road_bud1.AddCategory(traff44);

 

            LineCategory traff51 = new LineCategory(color1, 4);

            traff51.FilterExpression = "[bud2] < 3";

 

            LineCategory traff52 = new LineCategory(color2, 4);

            traff52.FilterExpression = "[bud2] >= 3";

 

            LineCategory traff53 = new LineCategory(color3, 4);

            traff53.FilterExpression = "[bud2] >= 6";

 

            LineCategory traff54 = new LineCategory(color4, 4);

            traff54.FilterExpression = "[bud2] >= 8";

 

            road_bud2.ClearCategories();

            road_bud2.AddCategory(traff41);

            road_bud2.AddCategory(traff42);

            road_bud2.AddCategory(traff43);

            road_bud2.AddCategory(traff44);

 

            LineCategory traff61 = new LineCategory(color1, 4);

            traff61.FilterExpression = "[bud1] < 3";

 

            LineCategory traff62 = new LineCategory(color2, 4);

            traff62.FilterExpression = "[bud1] >= 3";

 

            LineCategory traff63 = new LineCategory(color3, 4);

            traff63.FilterExpression = "[bud1] >= 6";

 

            LineCategory traff64 = new LineCategory(color4, 4);

            traff64.FilterExpression = "[bud1] >= 8";

 

            road_bud3.ClearCategories();

            road_bud3.AddCategory(traff41);

            road_bud3.AddCategory(traff42);

            road_bud3.AddCategory(traff43);

            road_bud3.AddCategory(traff44);

 

        }

 

        private void selectedFalse()

        {

            for (int i = 0; i < mapLayers.Count; i++)

            {

                mapLayers[i].SelectionEnabled = false;

            }

        }

 

        private void editFalse()

        {

            for (int i = 0; i < mapLayers.Count; i++)

            {

                mapLayers[i].EditMode = false;

            }

           

        }

 

        private void editTrue()

        {

            for (int i = 0; i < mapLayers.Count; i++)

            {

                mapLayers[i].EditMode = true;

            }     

        }

 

        private void InvisibleLayers()

        {

            for (int i = 0; i < mapLayers.Count; i++)

            {

                mapLayers[i].IsVisible = false;

            }

        }

 

        private void loadCity()

        {

            Color color1 = Color.FromArgb(250, 240, 145);

            PolygonSymbolizer style = new PolygonSymbolizer(color1);

            style.OutlineSymbolizer = new LineSymbolizer(Color.Black, 2);

            City = map.Layers.Add (DataManager.DefaultDataManager.OpenVector

(@"GisData\City.shp", false, prog));

            preview = map1.Layers.Add(DataManager.DefaultDataManager.OpenVector

(@"GisData\City.shp", false, prog));

            preview.Symbolizer = style;

            mapLayers.Add(City);

 

            IMapLabelLayer labelLayer = new MapLabelLayer();

            lb = new LabelSymbolizer();

            lb.FontSize = 15;

            lb.FontStyle = FontStyle.Bold;

            lb.FontFamily = "Arial";

            ILabelCategory category = labelLayer.Symbology.Categories[0];

            category.Expression = "[name]";

            labelLayer.Symbolizer = lb;

            category.Symbolizer.Orientation = ContentAlignment.MiddleCenter;

            City.LabelLayer = labelLayer;

            City.ShowLabels = true;

            City.Symbolizer = style;

        }

 

        private void CityAsImage()

        {

            City.IsVisible = true;

            City.SelectionEnabled = false;

            City.EditMode = false;

            City.ShowLabels = false;

        }

 

        public void loadRaion()

        {          

            scheme = new PolygonScheme();

 

            Color color1 = Color.FromArgb(250, 240, 145);

            PolygonCategory pop1 = new PolygonCategory(color1, Color.Black, 2);

            pop1.FilterExpression = "[population] < 150000";

 

            Color color2 = Color.FromArgb(250, 230, 90);

            PolygonCategory pop2 = new PolygonCategory(color2, Color.Black, 2);

            pop2.FilterExpression = "  [population] > 150000 ";

 

            Color color3 = Color.FromArgb(240, 215, 10);

            PolygonCategory pop3 = new PolygonCategory(color3, Color.Black, 2);

            pop3.FilterExpression = "  [population] > 200000 ";

 

            Color color4 = Color.FromArgb(215, 190, 5);

            PolygonCategory pop4 = new PolygonCategory(color4, Color.Black, 2);

            pop4.FilterExpression = "  [population] > 250000 ";

 

            scheme.ClearCategories();

            scheme.AddCategory(pop1);

            scheme.AddCategory(pop2);

            scheme.AddCategory(pop3);

            scheme.AddCategory(pop4);

 

            scheme2 = new PolygonScheme();

 

            PolygonCategory pop12 = new PolygonCategory(color1, Color.Black, 2);

            pop12.FilterExpression = "[area] < 3";

 

            PolygonCategory pop22 = new PolygonCategory(color2, Color.Black, 2);

            pop22.FilterExpression = "  [area] > 2 ";

 

            PolygonCategory pop32 = new PolygonCategory(color3, Color.Black, 2);

            pop32.FilterExpression = "  [area] > 3 ";

 

            PolygonCategory pop42 = new PolygonCategory(color4, Color.Black, 2);

            pop42.FilterExpression = "  [area] > 5 ";

 

            scheme2.ClearCategories();

            scheme2.AddCategory(pop12);

            scheme2.AddCategory(pop22);

            scheme2.AddCategory(pop32);

            scheme2.AddCategory(pop42);

 

            Raions = map.Layers.Add(DataManager.DefaultDataManager.OpenVector

(@"GisData\Raion.shp", false, prog));

            mapLayers.Add(Raions);

Информация о работе Разработка специализированной системы визуализации и анализа городской среды