Разработка простого пользовательского инструмента для ArcGIS c помощью среды программирования .NET

Программная разработка инструмента для ArcMap, создающего линейный объект подобный выбранному (с помощью курсора мыши) пользователем. Создание линии с длиной в 2 раза больше заданной. Особенности использования среды программирования Vusial Studio.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 08.08.2020
Размер файла 59,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http: //www. allbest. ru/

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Уфимский государственный авиационный технический университет»

Кафедра геоинформационных систем

Отчет

по лабораторной работе № 1

по дисциплине «Объектно-ориентированные языки»

Разработка простого пользовательского инструмента для ArcGIS c помощью среды программирования .NET

Выполнили: студенты группы ИСТ-403

Рассказов И.А., Кулахметов Т.А.

Проверил: к.т.н., доцент кафедры ГИС,

Атнабаев А.Ф.

Уфа 2016

Цель работы:

Разработать инструмент для ArcMap, создающий линейный объект подобный выбранному (с помощью курсора мыши) пользователем, но с длинной в 2 раза большей.

Ход работы:

В ГДБ создали линейный класс объектов, в котором содержится одна линия (см. рис. 1).

Рисунок 1 Линейный объект

В Vusial Studio разработали инструмент для ArcMap, создающий линейный объект подобный выбранному (с помощью курсора мыши) пользователем, но с длинной в 2 раза большей (см. рис. 2-3).

Рисунок 2 Вывод длины выбранной линии

Рисунок 3 Создание объекта с длинной в 2 раза большей

программный линейный длина пользователь

Вывод

В результате выполнения лабораторной работы был разработан инструмент для ArcMap, создающий линейный объект подобный выбранному (с помощью курсора мыши) пользователем, но с длинной в 2 раза большей.

Приложение А

using System;

using System.Drawing;

using System.Runtime.InteropServices;

using ESRI.ArcGIS.ADF.BaseClasses;

using ESRI.ArcGIS.ADF.CATIDs;

using ESRI.ArcGIS.Framework;

using ESRI.ArcGIS.ArcMapUI;

using System.Windows.Forms;

using ESRI.ArcGIS.Geometry;

using ESRI.ArcGIS.Geodatabase;

using ESRI.ArcGIS.Carto;

namespace project1

{

[Guid("0fc96cf0-bd14-4487-9241-60d0b05b2485")]

[ClassInterface(ClassInterfaceType.None)]

[ProgId("project1.Tool")]

public sealed class Tool : BaseTool

{

[ComRegisterFunction()]

[ComVisible(false)]

static void RegisterFunction(Type registerType)

{

ArcGISCategoryRegistration(registerType);

}

[ComUnregisterFunction()]

[ComVisible(false)]

static void UnregisterFunction(Type registerType)

{

ArcGISCategoryUnregistration(registerType);

}

private static void ArcGISCategoryRegistration(Type registerType)

{

string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);

MxCommands.Register(regKey);

}

private static void ArcGISCategoryUnregistration(Type registerType)

{

string regKey = string.Format("HKEY_CLASSES_ROOT\\CLSID\\{{{0}}}", registerType.GUID);

MxCommands.Unregister(regKey);

}

private IApplication m_application;

public Tool()

{

base.m_category = "OwnTools";

base.m_caption = "Toolforplochat";

base.m_message = "Инструмент увеличения площади полигона";

base.m_toolTip = "Создание объекта площадью в 2 раза больше исходного";

base.m_name = "Polyline_NOtWORK";

try

{

string bitmapResourceName = GetType().Name + ".bmp";

base.m_bitmap = new Bitmap(GetType(), bitmapResourceName);

base.m_cursor = new System.Windows.Forms.Cursor(GetType(), GetType().Name + ".cur");

}

catch (Exception ex)

{

System.Diagnostics.Trace.WriteLine(ex.Message, "Invalid Bitmap");

}

}

IMxDocument pDoc;

IMap pMap;

IFeatureClass pFtClass;

public override void OnCreate(object hook)

{

m_application = hook as IApplication;

if (hook is IMxApplication)

base.m_enabled = true;

else

base.m_enabled = false;

}

public override void OnMouseDown(int Button, int Shift, int X, int Y)

{

pDoc = m_application.Document as IMxDocument;

pMap = pDoc.Maps.get_Item(0);

IFeatureLayer pFtLayer = pMap.get_Layer(0) as FeatureLayer;

pFtClass = pFtLayer.FeatureClass;

IPoint pBufPt;

pBufPt = new PointClass();

pBufPt.PutCoords(pDoc.CurrentLocation.X, pDoc.CurrentLocation.Y);

ITopologicalOperator pTopoOperator;

pTopoOperator = pBufPt as ITopologicalOperator;

ISpatialFilter pSpatialFilter = new SpatialFilterClass();

pSpatialFilter.Geometry = pTopoOperator.Buffer(100);

pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;

IFeatureCursor pFtCur;

pFtCur = pFtClass.Search(pSpatialFilter, true);

IFeature pFt = pFtCur.NextFeature();

if (pFt != null)

{

ExtendPolygon(ref pFt);

}

}

private void ExtendPolygon(ref IFeature pPolygonFt)

{

IPolycurve pArea;

pArea = pPolygonFt.Shape as IPolycurve;

MessageBox.Show("Длина выбранной линии: " + pArea.Length.ToString(), "Длина", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

IPoint Center = pArea.FromPoint;

ITransform2D pTrans = pPolygonFt.Shape as ITransform2D;

pTrans.Scale(Center, Math.Sqrt(4), Math.Sqrt(4));

IEnvelope pPolyEnvelope = pPolygonFt.Extent;

IFeatureLayer pFtLayer = pMap.get_Layer(1) as FeatureLayer;

IFeatureClass pOutClass = pFtLayer.FeatureClass;

IFeature ExtFt = pOutClass.CreateFeature();

ExtFt.Shape = pPolygonFt.Shape;

pArea = ExtFt.Shape as IPolycurve;

ExtFt.set_Value(2, pArea.Length);

ExtFt.Store(); pDoc.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);

pMap.SelectFeature(pMap.get_Layer(1), ExtFt);

pDoc.ActivatedView.Extent = pPolyEnvelope; pDoc.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);

}

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Разработка родительского компонента для дальнейшего использования при создании приложений "Editip". Иерархия классов и интерфейсов. Применение в качестве инструмента исполнения среды программирования Microsoft Visual Studio.NET. Блок-схемы алгоритмов.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Разработка программы, решающей базовую задачу линейного программирования симплекс-методом с помощью симплекс-таблиц. Выбор языка программирования и среды разработки, программные модули и их взаимодействие между собой. Листинг разработанной программы.

    курсовая работа [415,8 K], добавлен 08.09.2013

  • Аналитический обзор сред программирования: Qt 5.3.0, Delphi, Builder C++ и Visual Studio C++. Разработка программы "Интелектуальное фортепиано", с помощью которой можно проиграть, записать, воспроизвести мелодию. Создание пользовательского интерфейса.

    курсовая работа [296,1 K], добавлен 13.04.2015

  • Среда программирования Embarcadero RAD Studio. Создание окна, которое отображает системную дату и время. Выполнение выбранного действия в определенный промежуток времени, заданный пользователем. Руководство программиста. Минимальные системные требования.

    курсовая работа [85,2 K], добавлен 16.06.2014

  • Назначение и преимущества использования среды программирования LabView. Передняя панель и блок-схема простого виртуального прибора VI. Разработка структурной и принципиальной схем преобразователя напряжения и частоты, алгоритм его функционирования.

    дипломная работа [1,7 M], добавлен 29.01.2013

  • Разработка интерфейса программы, обеспечивающего доступ ко всем возможностям среды структурно-визуального программирования. Реализация инструментальных средств, позволяющих связывать компоненты в единое приложение. Создание иерархии классов представления.

    дипломная работа [2,3 M], добавлен 11.04.2012

  • Разработка программы нахождения значения определенного интеграла с помощью метода трапеций. Оценка абсолютной погрешности метода. Использование среды программирования Visual Studio Community 2015 для написания программы. Работа с графическим интерфейсом.

    курсовая работа [573,8 K], добавлен 17.03.2016

  • Методика и этапы проектирования ядра системы управления сайтом с помощью среды Zend Studio 8. Разработка обработчиков событий, для управления этой системой. Создание каскадных таблиц стилей для оформления панели администрирования с помощью Notepad++.

    дипломная работа [4,6 M], добавлен 30.06.2011

  • Разработка проекта аппаратной реализации сетевой игры "Пинг Понг", рассчитанной на двух игроков на базе микроконтроллеров AVR АТMEGA 128. Выполнение прошивки микроконтроллера с помощью пользовательского интерфейса среды программирования CodeVisionAVR.

    курсовая работа [1,2 M], добавлен 25.04.2012

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.

    контрольная работа [318,0 K], добавлен 13.01.2013

  • Обоснование необходимости систем компьютерного тестирования. Выбор среды программирования. Специфика сферы логистики. Организация программной среды аудита знаний. Используемые элементы среды программирования. Разработка алгоритма работы программы аудита.

    дипломная работа [809,9 K], добавлен 07.01.2017

  • Особенности визуальной среды программирования Microsoft Visual Studio 2015 Enterprise. Средства объектно-ориентированного программирования. Этапы проектирования программного комплекса. Отладка и тестирование программы игры "Виселица".

    курсовая работа [2,4 M], добавлен 31.01.2016

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

    контрольная работа [1,1 M], добавлен 17.08.2010

  • Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.

    курсовая работа [571,9 K], добавлен 14.07.2012

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

    отчет по практике [295,9 K], добавлен 22.05.2013

  • Развитие и классификация языков программирования. Методические рекомендации по изучению языков программирования. Основные понятия объектно-ориентированного программирования. Создание электронного учебного пособия с помощью языка гипертекстовой разметки.

    курсовая работа [331,1 K], добавлен 06.09.2011

  • Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.

    курсовая работа [738,1 K], добавлен 17.05.2010

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Сущность линейного программирования. Математическая формулировка задачи ЛП и алгоритм ее решения с помощью симплекс-метода. Разработка программы для планирования производства с целью обеспечения максимальной прибыли: блок-схема, листинг, результаты.

    курсовая работа [88,9 K], добавлен 11.02.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.