Разработка простого пользовательского инструмента для 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