Движок геоинформационной системы (ГИС)
Geographic information system (GIS)
Использует функционал:
- Qt 5;
- кватернионно-векторно-матричной библиотеки QuatVectMatr;
- библиотеки логических манипуляций над множествами Multitude.
Реализует основные возможности геоинформационной системы, необходимые для создания приложений, интерфейс пользователя которых основан на действиях с электронной картой местности.
Состоит из 8 классов: TCartography, TView, TScene, TFrame, TLayer, TMapData, TGISLib, TShellGIS.
В подкаталоге HowToUse находится программа "Астроном", демонстрирующая работу с движком геоинформационной системы.
"Астроном" использует функционал:
- Qt 5;
- кватернионно-векторно-матричной библиотеки QuatVectMatr;
- класса статических методов конвертации времени Calendar;
- библиотеки работы с числовыми данными Num;
- библиотеки логических манипуляций над множествами Multitude;
- движка геоинформационной системы GIS.
Является основным аппаратом вычислительной математики в движке геоинформационной системы.
1.1. ScreenXYToPZ90BL переводит сценические координаты в геодезические координаты эллипсоида ПЗ-90, используя текущую проекцию
На вход подаются:
- абсцисса ScreenX сценических координат;
- ордината ScreenY сценических координат.
На выходе можно получить:
- геодезическая широта B [рад];
- геодезическая долгота L [рад].
Синтаксис:
void ScreenXYToPZ90BL(double ScreenX, double ScreenY, double* B, double* L)
1.2. PZ90BLToScreenXY переводит геодезические координаты эллипсоида ПЗ-90 в сценические координаты, используя текущую проекцию
На вход подаются:
- геодезическая широта B [рад];
- геодезическая долгота L [рад].
На выходе можно получить:
- абсцисса ScreenX сценических координат;
- ордината ScreenY сценических координат.
Синтаксис:
void PZ90BLToScreenXY(double B, double L, double* ScreenX, double* ScreenY)
1.3. RulerLength вычисляет длину геодезической линии между указанными точками
На вход подаются:
- геодезическая широта B начала линии [рад];
- геодезическая долгота L начала линии [рад];
- геодезическая широта B конца линии [рад];
- геодезическая долгота L конца линии [рад].
На выходе можно получить:
- длину геодезической линии на эллипсоиде ПЗ-90 [м].
Синтаксис:
double RulerLength(double StartB, double StartL, double StopB, double StopL)
1.4. OWNER свойство Указатель на объект класса-владельца
Синтаксис:
void* OWNER
Расширяет возможности «вида» из Qt для отрисовки картографической сцены.
//Инструменты по работе с картой
enum TTool
{
MOVE = 1, //Движение карты
RULER = 2, //Линейка
ARROW = 3 //Стрелка
};
2.1. SetCursor устанавливает вид курсора в соответствии с инструментом по работе с картой
Синтаксис:
void SetCursor(TTool Value)
2.2. CloseHint закрывает всплывающую подсказку
Синтаксис:
void CloseHint(void)
2.3. OWNER свойство Указатель на объект класса-владельца
Синтаксис:
void* OWNER
Расширяет возможности графической сцены из Qt.
3.1. GetDataRightMouse сигнал Обработка события щелчка правой кнопки "мыши"
Возвращает экранные и геодезические координаты, список объектов карты по координатам
Синтаксис:
void GetDataRightMouse(QPoint Value1, TOnePoint Value2, TMapData::TObjList Objects)
3.2. OWNER свойство Указатель на объект класса-владельца
Синтаксис:
void* OWNER
4.1. Add добавить рамку на карту
Синтаксис:
void Add(void)
4.2. Del удалить рамку карты
Синтаксис:
void Del(void)
4.3. RePaint перерисовать рамку
Синтаксис:
void RePaint(void)
4.4. AddGrid добавить 15-градусную сетку на карту
Синтаксис:
void AddGrid(void)
4.5. DelGrid удалить 15-градусную сетку
Синтаксис:
void DelGrid(void)
4.6. RePaintGrid перерисовать 15-градусную сетку
Синтаксис:
void RePaintGrid(void)
4.7. GetGrid возвращает 15-градусную сетку
Синтаксис:
TArraySpot GetGrid(void)
4.8. OWNER свойство Указатель на объект класса-владельца
Синтаксис:
void* OWNER
Слой – основное понятие, с которым сталкивается пользователь при выведении графической информации на электронную карту.
//Тип символа, изображающего объект "точка" в слое
enum TTypeSymbol
{
NONE_SYMBOL = 0, //Не задан
CIRCLE_SYMBOL = 1, //Круг
RECT_SYMBOL = 2 //Квадрат
};
//Тип объекта в слое
enum TTypeObj
{
NONE_OBJ = 0, //Не задан
POINT_OBJ = 1, //Точка
POLYLINE_OBJ = 2, //Полилиния
REGION_OBJ = 3 //Регион
};
//Полушарие Земли, в котором располагается объект
enum THemisphere
{
NONE_HEM = 0, //Не задано
NORTH_HEM = 1, //Северное полушарие
SOUTH_HEM = 2, //Южное полушарие
BOTH_HEM = 3 //Оба полушария (северное и южное)
};
//Тип описывает параметры объекта "точка" в слое
struct ObjPoint
{
ObjPoint() : Type(NONE_SYMBOL), Pen(NULL), Brush(NULL) {}
TTypeSymbol Type; //Тип символа, изображающего объект "точка"
TOnePoint Point; //Геодезические координаты объекта "точка"
QPen *Pen; //Перо для рисования объекта "точка"
QBrush *Brush; //Заливка для рисования объекта "точка"
};
typedef struct ObjPoint TObjPoint;
//Тип описывает параметры объекта "полилиния" в слое
struct ObjPolyLine
{
ObjPolyLine() : Pen(NULL) {}
TSpot Spot; //Геодезические координаты узловых точек полилинии
QPen *Pen; //Перо для рисования объекта "полилиния"
};
typedef struct ObjPolyLine TObjPolyLine;
//Тип описывает параметры объекта "регион" в слое
struct ObjRegion
{
ObjRegion() : Pen(NULL), Brush(NULL) {}
TSpot Spot; //Геодезические координаты узловых точек региона
QPen *Pen; //Перо для рисования объекта "регион"
QBrush *Brush; //Заливка для рисования объекта "регион"
};
typedef struct ObjRegion TObjRegion;
//Тип описывает заголовок одного объекта в слое
struct HeaderOfObj
{
HeaderOfObj() : ID(0), Name("") {}
unsigned int ID; //Идентификатор объекта
std::string Name; //Наименование объекта
};
typedef struct HeaderOfObj THeaderOfObj;
//Тип описывает все заголовки объектов в слое
typedef std::vector<THeaderOfObj> THeadersObjects;
//Тип описывает параметры одного объекта в слое
struct Obj
{
Obj() : HandlePointAsEllipse(NULL), HandlePointAsRect(NULL),
HandleRegion(NULL), HandlePolyLine(NULL), Hemisphere(NONE_HEM),
Type(NONE_OBJ) {}
QGraphicsEllipseItem *HandlePointAsEllipse; //Указатель на item кружочка,
// помещенного на сцену. Пользователь не заполняет
QGraphicsRectItem *HandlePointAsRect; //Указатель на item квадрата,
// помещенного на сцену. Пользователь не заполняет
QGraphicsPolygonItem *HandleRegion; //Указатель на item полигона,
// помещенного на сцену. Пользователь не заполняет
QGraphicsPathItem *HandlePolyLine; //Указатель на item полилинии,
// помещенной на сцену. Пользователь не заполняет
THeaderOfObj Header; //Заголовок объекта
THemisphere Hemisphere; //Полушарие Земли, в котором располагается объект
TTypeObj Type; //Тип объекта
TObjPoint Point; //Тип объекта POINT_OBJ - "точка"
TObjPolyLine PolyLine; //Тип объекта POLYLINE_OBJ - "полилиния"
TObjRegion Region; //Тип объекта REGION_OBJ - "регион"
};
typedef struct Obj TObj;
//Тип описывает параметры всех объектов в слое
typedef std::vector<TObj> TObjects;
5.1. RGBToMI переводит цвета R, G, B в код цвета MapInfo
На вход подаются:
- красный;
- зеленый;
- синий.
На выходе можно получить:
- цвет в формате MapInfo.
Синтаксис:
void RGBToMI(int R, int G, int B, int* MI)
5.2. MIToRGB переводит цвета R, G, B в код цвета MapInfo
На вход подаются:
- цвет в формате MapInfo.
На выходе можно получить:
- красный;
- зеленый;
- синий.
Синтаксис:
void MIToRGB(int MI, int* R, int* G, int* B)
5.3. PenMIToQPen переводит перо формата MapInfo в формат QPen
На вход подаются:
- ширина линии в формате MapInfo;
- тип линии в формате MapInfo;
- цвет линии в формате MapInfo.
На выходе можно получить:
- перо QPen.
Синтаксис:
QPen PenMIToQPen(int WidthMI, int PatternMI, int ColorMI)
5.4. BrushMIToQBrush переводит заливку формата MapInfo в формат QBrush
На вход подаются:
- тип штриховки в формате MapInfo;
- цвет штриховки в формате MapInfo.
На выходе можно получить:
- заливку QBrush.
Синтаксис:
QBrush BrushMIToQBrush(int PatternMI, int ColorMI)
5.5. RePaint быстро перерисовать слой
Синтаксис:
void RePaint(void)
5.6. CoolRePaint перерисовать слой путем удаления и создания всех его объектов
Синтаксис:
void CoolRePaint(void)
5.7. Hide скрыть (девизуализировать) слой
Синтаксис:
void Hide(void)
5.8. Show показать (визуализировать) слой
Синтаксис:
void Show(void)
5.9. GetVisible возвращает признак визуализации слоя
Синтаксис:
bool GetVisible(void)
5.10. GetStringObj возвращает строку (содержащую имя слоя и имя объекта) по указателю, если такой объект найдется в слое
Синтаксис:
std::string GetStringObj(QGraphicsItem* ID)
5.11. GetHeaderObj возвращает заголовок объекта по указателю, если такой объект найдется в слое
Синтаксис:
THeaderOfObj GetHeaderObj(QGraphicsItem* ID)
5.12. GetFreeID возвращает минимальное свободное значение идентификатора для размещения нового объекта в слое
На выходе можно получить:
- свободное значение идентификатора объекта.
Синтаксис:
unsigned int GetFreeID(void)
5.13. GetObjList возвращает список заголовков объектов в слое
Синтаксис:
THeadersObjects GetObjList(void)
5.14. FindObj ищет объект, обратившись к нему по идентификатору
Синтаксис:
int FindObj(unsigned int ID);
5.15. AddPolyLineQuick добавляет в слой объект типа "полилиния"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек полилинии на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "полилиния".
Синтаксис:
void AddPolyLineQuick(unsigned int ID, std::string Name, TSpot Spot, QPen Pen)
5.16. AddRegionQuick добавляет в слой объект типа "регион"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек региона на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "регион";
- заливка для рисования объекта "регион".
Синтаксис:
void AddRegionQuick(unsigned int ID, std::string Name, TSpot Spot, QPen Pen, QBrush Brush)
5.17. AddPointQuick добавляет в слой объект типа "точка"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- тип символа, изображающего объект "точка";
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "точка";
- заливка для рисования объекта "точка".
Синтаксис:
void AddPointQuick(unsigned int ID, std::string Name, TTypeSymbol Type,
TOnePoint Point, QPen Pen, QBrush Brush)
5.18. AddPoint добавляет в слой объект типа "точка"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- тип символа, изображающего объект "точка";
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "точка";
- заливка для рисования объекта "точка".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPoint(unsigned int ID, std::string Name, TTypeSymbol Type,
TOnePoint Point, QPen Pen, QBrush Brush)
5.19. AddPolyLine добавляет в слой объект типа "полилиния"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек полилинии на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "полилиния".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPolyLine(unsigned int ID, std::string Name, TSpot Spot, QPen Pen)
5.20. AddRegion добавляет в слой объект типа "регион"
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек региона на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "регион";
- заливка для рисования объекта "регион".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddRegion(unsigned int ID, std::string Name, TSpot Spot, QPen Pen, QBrush Brush)
5.21. DelObj удаляет объект любого типа из слоя
На вход подаются:
- идентификатор объекта.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool DelObj(unsigned int ID)
5.22. Objects свойство Объекты, содержащиеся в слое
Синтаксис:
TObjects Objects
5.23. Name свойство Имя слоя (обязательно к заполнению)
Синтаксис:
std::string Name
5.24. OWNER свойство Указатель на объект класса-владельца
Синтаксис:
void* OWNER
Класс является держателем всех картографических данных, которые пользователь размещает на карте.
//Тип описывает список слоев (не сами слои)
struct OneLayer
{
OneLayer() : Name(""), Visible(false) {}
std::string Name;
bool Visible;
};
typedef std::vector<struct OneLayer> TLayerList;
//Тип описывает возвращаемый из карты список объектов
struct Obj
{
Obj() : LayerName(""), ObjID(0), ObjName("") {}
std::string LayerName; //Имя слоя
unsigned int ObjID; //Идентификатор объекта в указанном слое
std::string ObjName; //Имя объекта
};
typedef std::vector<struct Obj> TObjList;
6.1. GetStringHintUnderCursor возвращает строку всплывающей подсказки, используя данные под курсором
Синтаксис:
QString GetStringHintUnderCursor(QList<QGraphicsItem *> Arr)
6.2. GetObjListUnderCursor возвращает список объектов, используя данные под курсором
Синтаксис:
TObjList GetObjListUnderCursor(QList<QGraphicsItem *> Arr)
6.3. RePaint быстро перерисовать картографические данные
Синтаксис:
void RePaint(void)
6.4. CoolRePaint перерисовать картографические данные путем удаления и создания объектов слоев
Синтаксис:
void CoolRePaint(void)
6.5. WhatIsShow устанавливает признаки отображения тех или иных типов картографических данных
Синтаксис:
void WhatIsShow(bool _Frame, bool _Grid15)
6.6. GetLayerList возвращает список слоев
Синтаксис:
TLayerList GetLayerList(void)
6.7. ShowLayer показать слой, обратившись к нему по имени
Синтаксис:
bool ShowLayer(std::string Name)
6.8. HideLayer скрыть слой, обратившись к нему по имени
Синтаксис:
bool HideLayer(std::string Name)
6.9. AddLayer добавить новый слой, задав ему имя
Синтаксис:
bool AddLayer(std::string Name)
6.10. DelLayer удалить существующий слой, обратившись к нему по имени
Синтаксис:
bool DelLayer(std::string Name)
6.11. DelAllUserLayers удаляет все пользовательские слои и перерисовывает карту
Синтаксис:
void DelAllUserLayers(void)
6.12. AddLayerFromMIF добавить новый слой, создав его из MIF-файла формата MapInfo
На вход подаются:
- имя слоя;
- путь и имя MIF-файла.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddLayerFromMIF(std::string LayerName, std::string FilePathName)
6.13. AddLayerDymanicPoint добавить новый слой, содержащий данные по часто перерисовываемым точечным объектам
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки
Синтаксис:
bool AddLayerDynamicPoint(void)
6.14. GetFreeID возвращает минимальное свободное значение идентификатора для размещения нового объекта в слое.
Обращается к слою по имени
На выходе можно получить:
- свободное значение идентификатора объекта.
Синтаксис:
unsigned int GetFreeID(std::string Name)
6.15. GetObjList возвращает список заголовков объектов в существующем слое
Обращается к слою по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- список заголовков объектов в указанном слое.
Синтаксис:
TLayer::THeadersObjects GetObjList(std::string Name)
6.16. AddInDynamicPoint добавляет в слой с динамическими точками новый объект
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- описание объекта;
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- код цвета MapInfo.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки
Синтаксис:
bool AddInDynamicPoint(unsigned int ID, std::string Comment,
TOnePoint Point, int ColorMI)
6.17. MoveInDynamicPoint быстро сдвигает объект в слое с динамическими точками
На вход подаются:
- идентификатор объекта;
- описание объекта;
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад]
Синтаксис:
void MoveInDynamicPoint(unsigned int ID, std::string Comment, TOnePoint Point)
6.18. AddPointInLayer добавляет в существующий слой объект типа "точка"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- тип символа, изображающего объект "точка";
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "точка";
- заливка для рисования объекта "точка".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPointInLayer(std::string Name, unsigned int ID, std::string ObjName,
TLayer::TTypeSymbol Type, TOnePoint Point,
QPen Pen, QBrush Brush)
6.19. AddPolyLineInLayer добавляет в существующий слой объект типа "полилиния"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек полилинии на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "полилиния".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPolyLineInLayer(std::string Name, unsigned int ID,
std::string ObjName, TSpot Spot, QPen Pen)
6.20. AddRegionInLayer добавляет в существующий слой объект типа "регион"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек региона на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "регион";
- заливка для рисования объекта "регион".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddRegionInLayer(std::string Name, unsigned int ID, std::string ObjName,
TSpot Spot, QPen Pen, QBrush Brush)
6.21. DelObjFromLayer удаляет объект любого типа из существующего слоя. Обращается к слою по имени
На вход подаются:
- имя слоя;
- идентификатор объекта.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool DelObjFromLayer(std::string Name, unsigned int ID)
6.22. FindLayer найти слой, обратившись к нему по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- индекс слоя в массиве слоев, либо (-1), если такой слой не найден.
Синтаксис:
int FindLayer(std::string Name)
//Тип описывает данные, возвращаемые в пользовательскую программу по событию
// щелчка левой кнопки "мыши" при активированном инструменте TView::ARROW
struct DataLeftMouse
{
TMultitude::TOnePoint CoordDown; //Геодезические координаты (на эллипсоиде ПЗ-90) нажатия кнопки
TMapData::TObjList ObjectsDown; //Список объектов карты по координатам нажтия кнопки
TMultitude::TOnePoint CoordUp; //Геодезические координаты (на эллипсоиде ПЗ-90) отпускания кнопки
TMapData::TObjList ObjectsUp; //Список объектов карты по координатам отпускания кнопки
};
typedef struct DataLeftMouse TDataLeftMouse;
//Картографические проекции
enum TProj
{
NONEPROJECTION = 0, //Проекция НЕ установлена
CYLINDRICAL = 1, //Цилиндрическая равнопромежуточная проекция Плате-Карре
NORTHPOLE = 2, //Азимутальная ортографическая проекция Северного Полюса
SOUTHPOLE = 3, //Азимутальная ортографическая проекция Южного Полюса
MERCATOR = 4, //Равноугольная цилиндрическая проекция Меркатора
KAVRAYSKIY = 5 //Псевдоцилиндрическая проекция Каврайского
};
7.1. GetDataLeftMouse сигнал Обработка события щелчка левой кнопки "мыши" при активированном инструменте «стрелка»
Синтаксис:
void GetDataLeftMouse(TGISLib::TDataLeftMouse Value)
7.2. PlusScale увеличивает масштаб на шаг
Синтаксис:
void PlusScale(void)
7.3. MinusScale уменьшает масштаб на шаг
Синтаксис:
void MinusScale(void)
7.4. NormalizeScale нормализует масштаб (приводит к начальному)
Синтаксис:
void NormalizeScale(void)
7.5. GetScale возвращает текущий масштаб
Синтаксис:
double GetScale(void)
7.6. OnSceneMouseMove обработчик OnMouseMove графической сцены
Синтаксис:
void OnSceneMouseMove(QGraphicsSceneMouseEvent *event)
7.7. OnViewResize обработчик OnResize вида
Синтаксис:
void OnViewResize(QResizeEvent *event)
7.8. OnSceneMouseWheel обработчик OnMouseWheel графической сцены
Синтаксис:
void OnSceneMouseWheel(QGraphicsSceneWheelEvent *event)
7.9. OnSceneDragAndDrop обработчик OnDragAndDrop графической сцены
Синтаксис:
void OnSceneDragAndDrop(double DownSceneX, double DownSceneY, double UpSceneX,
double UpSceneY, double DownViewX, double DownViewY,
double UpViewX, double UpViewY)
7.10. GetCurrentTool возвращает текущий инструмент по работе с картой
Синтаксис:
TView::TTool GetCurrentTool(void)
7.11. Scene свойство Графическая сцена
Синтаксис:
TScene* Scene
7.12. View свойство Вид, на котором производится отрисовка сцены
Синтаксис:
TView* View
7.13. MapData свойство Картографические данные
Синтаксис:
TMapData* MapData
7.14. Projection свойство Параметры текущей картографической проекции
Синтаксис:
TProjection Projection
7.15. Screen свойство Текущие границы области отображения карты (координаты сцены)
Синтаксис:
TScreen Screen
7.16. PlaneCoord свойство Текущие размеры области отображения карты (плановые координаты)
Синтаксис:
TScreen PlaneCoord
7.17. ProportionX свойство Пропорции окна отображения карты по оси X
Взаимные отношения величин ProportionX и ProportionY задают соотношение сторон экрана (пропорциональность картинки).
Синтаксис:
double ProportionX
7.18. ProportionY свойство Пропорции окна отображения карты по оси Y
Взаимные отношения величин ProportionX и ProportionY задают соотношение сторон экрана (пропорциональность картинки).
Синтаксис:
double ProportionY
7.19. Cartography свойство Объект Cartography осуществляет картографические преобразования
Синтаксис:
TCartography* Cartography
Предоставляет пользователю программный интерфейс по взаимодействию с движком геоинформационной системы.
8.1. GetDataLeftMouseARROW сигнал Обработка события щелчка левой кнопки "мыши" при активированном инструменте «стрелка»
Передает в пользовательскую программу данные, описываемые типом TDataLeftMouse.
Синтаксис:
void GetDataLeftMouseARROW(TGISLib::TDataLeftMouse Value)
8.2. GetDataRightMouseALL сигнал Обработка события щелчка правой кнопки "мыши" при любом активированном инструменте
Возвращает экранные и геодезические координаты, список объектов карты по координатам
Синтаксис:
void GetDataRightMouseALL(QPoint Value1, TOnePoint Value2, TMapData::TObjList Objects)
8.3. SetProjection установить картографическую проекцию
Допускаются следующие значения:
- TGISLib::CYLINDRICAL - Цилиндрическая равнопромежуточная проекция Плате-Карре;
- TGISLib::NORTHPOLE - Азимутальная ортографическая проекция Северного Полюса;
- TGISLib::SOUTHPOLE - Азимутальная ортографическая проекция Южного Полюса;
- TGISLib::MERCATOR - Равноугольная цилиндрическая проекция Меркатора;
- TGISLib::KAVRAYSKIY - Псевдоцилиндрическая проекция Каврайского.
Синтаксис:
void SetProjection(TGISLib::TProj Value)
8.4. ConnectWindow подключить EngineGIS к окну пользовательского интерфейса, на котором будет отображаться карта
На вход подаются:
- указатель на компоновщик (layout) окна;
- указатель на поле строки состояния (status bar) окна для вывода координат указателя "мыши" (эллипсоид ПЗ-90);
- указатель на поле строки состояния (status bar) окна для вывода текущего условного масштаба;
- указатель на поле строки состояния (status bar) окна для вывода величины измеренного расстояния (на поверхности эллипсоида ПЗ-90).
Синтаксис:
void ConnectWindow(QGridLayout* FLayout, QLabel* FCurCoord, QLabel* FScale, QLabel* FRuler)
8.5. DisconnectWindow отключить EngineGIS от окна пользовательского интерфейса (метод вызвать перед деструктором вышеназванного окна)
Синтаксис:
void DisconnectWindow(void)
8.6. ShowAllMap показать всю карту
Синтаксис:
void ShowAllMap(void)
8.7. SetTool устанавливает (активирует) инструмент по работе с картой
Допускаются следующие значения:
- TView::ARROW - Информация по объектам карты;
- TView::MOVE - Движение карты (сдвиг и изменение масштаба);
- TView::RULER - Линейка (вычисление расстояния на поверхности эллипсоида ПЗ-90).
Синтаксис:
void SetTool(TView::TTool Value)
8.8. GetTool возвращает текущий инструмент по работе с картой
Синтаксис:
TView::TTool GetTool(void)
8.9. WhatIsShow устанавливает признаки отображения тех или иных типов картографических данных
На вход подаются:
- признак отображения рамки карты;
- признак отображения 15-градусной сетки.
Синтаксис:
void WhatIsShow(bool Frame, bool Grid15)
8.10. RePaint перерисовать картографические данные
Синтаксис:
void RePaint(void)
8.11. GetLayerList возвращает список слоев с данными
На выходе можно получить:
- список слоев.
Синтаксис:
TMapData::TLayerList GetLayerList(void)
8.12. FindLayer найти слой, обратившись к нему по имени
На выходе можно получить:
- true слой существует;
- false такого слоя нет
Синтаксис:
bool FindLayer(std::string Name)
8.13. ShowLayer показать слой с данными, обратившись к нему по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool ShowLayer(std::string Name)
8.14. HideLayer скрыть слой с данными, обратившись к нему по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool HideLayer(std::string Name)
8.15. AddLayer добавить новый слой с данными, задав ему имя
На вход подаются:
- имя слоя.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddLayer(std::string Name)
8.16. DelLayer удалить существующий слой с данными, обратившись к нему по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool DelLayer(std::string Name)
8.17. DelAllUserLayers удаляет все пользовательские слои и перерисовывает карту
Синтаксис:
void DelAllUserLayers(void)
8.18. AddLayerFromMIF добавить новый слой, создав его из MIF-файла формата MapInfo
На вход подаются:
- имя слоя;
- путь и имя MIF-файла.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddLayerFromMIF(std::string LayerName, std::string FilePathName)
8.19. AddLayerDynamicPoint добавить новый слой, содержащий данные по часто перерисовываемым точечным объектам
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки
Синтаксис:
bool AddLayerDymanicPoint(void)
8.20. GetFreeID возвращает минимальное свободное значение идентификатора для размещения нового объекта в слое.
Обращается к слою по имени
На выходе можно получить:
- свободное значение идентификатора объекта.
Синтаксис:
unsigned int GetFreeID(std::string Name)
8.21. GetObjList возвращает список заголовков объектов в существующем слое. Обращается к слою по имени
На вход подаются:
- имя слоя.
На выходе можно получить:
- список заголовков объектов в указанном слое.
Синтаксис:
TLayer::THeadersObjects GetObjList(std::string Name)
8.22. AddInDynamicPoint добавляет в слой с динамическими точками новый объект
Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- идентификатор объекта;
- описание объекта;
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- код цвета MapInfo.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки
Синтаксис:
bool AddInDynamicPoint(unsigned int ID, std::string Comment, TOnePoint Point, int ColorMI)
8.23. MoveInDynamicPoint быстро сдвигает объект в слое с динамическими точками
На вход подаются:
- идентификатор объекта;
- описание объекта;
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад]
Синтаксис:
void MoveInDynamicPoint(unsigned int ID, std::string Comment, TOnePoint Point)
8.24. AddPointInLayer добавляет в существующий слой объект типа "точка"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- тип символа, изображающего объект "точка";
- геодезические координаты объекта "точка" на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "точка";
- заливка для рисования объекта "точка".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPointInLayer(std::string Name, unsigned int ID, std::string ObjName,
TLayer::TTypeSymbol Type, TOnePoint Point, QPen Pen,
QBrush Brush)
8.25. AddPolyLineInLayer добавляет в существующий слой объект типа "полилиния"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек полилинии на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "полилиния".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddPolyLineInLayer(std::string Name, unsigned int ID, std::string ObjName, TSpot Spot, QPen Pen)
8.26. AddRegionInLayer добавляет в существующий слой объект типа "регион"
Обращается к слою по имени. Добавление объекта в слой не вызывает перерисовку слоя. Следует пользоваться методом RePaint.
На вход подаются:
- имя слоя;
- идентификатор объекта;
- наименование объекта;
- геодезические координаты узловых точек региона на эллипсоиде ПЗ-90 [рад];
- перо для рисования объекта "регион";
- заливка для рисования объекта "регион".
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool AddRegionInLayer(std::string Name, unsigned int ID,
std::string ObjName, TSpot Spot, QPen Pen, QBrush Brush)
8.27. DelObjFromLayer удаляет объект любого типа из существующего слоя
Обращается к слою по имени
На вход подаются:
- имя слоя;
- идентификатор объекта.
На выходе можно получить:
- true в случае успешного выполнения процедуры;
- false в случае какой-либо ошибки.
Синтаксис:
bool DelObjFromLayer(std::string Name, unsigned int ID)