Средство просмотра карт ГИС, основы

Средство «КАСКАД Цифра» GIS Viewer позволяет отображать и управлять файлами форм ESRI. Имеется возможность отображать карты, в которые могут добавляться объекты. Пользователь может выводить на экран карты и добавлять к ним желаемые формы. Так же можно установить привязку уровня формы к точке данных _SumAlertPanel в «КАСКАД Цифра».

Основную информацию о средстве просмотра карт GIS см. в разделе Внешний виджет средства просмотра карты геоинформационной системы (GIS).

Ниже мы рассмотрим порядок интеграции средства GIS Viewer и функции, которые используются для отображения карт в средствеGIS Viewer.

В средстве GIS Viewer имеется широкий спектр функций. Список всех функций приведен в конце данного раздела (см. Функции средства просмотра карт GIS).

ДОБАВЛЕНИЕ СРЕДСТВА «КАСКАД Цифра» GIS VIEWER НА ПАНЕЛЬ

  1. Средство «КАСКАД Цифра» GIS Viewer можно добавить на панель с помощью графического редактора GEDI. Для этого щелкните мышью на кнопке внешнего виджета (EWO) Control_Grafik-24.gif и перейдите в каталог <путь_КАСКАД>/bin/Widgets. Выберите GisViewer.ewo и добавьте виджет на панель, щелкните на панели и растяните виджет до желаемых размеров.

Рисунок. Виджет средстваGIS Viewer на панели

Control_Grafik-54.png

ДОБАВЛЕНИЕ КОЛИЧЕСТВА ШАГОВ МАСШТАБИРОВАНИЯ

  1. В средство просмотра карт GIS необходимо ввести некоторые настройки. Для этого используется язык CONTROL. Для определения количества шагов масштабирования добавьте код, например, в событие инициализации средстваGIS Viewer.

На примере ниже задается 10 шагов масштабирования:left: 0px; top: 1541px; height: 82px;» width=»630″>

main()

{

  this.setSmoothSteps (10);

}

Рисунок. Редактор свойств и событие инициализации «Initialize»

Control_Grafik-26.gif

ЗАГРУЗКА ФАЙЛА БАЗЫ ДАННЫХ ЦВЕТОВ «КАСКАД Цифра»

  1. Загрузка файла базы данных цветов «КАСКАД Цифра» необходима для того, чтобы GIS Viewer определяло цвета «КАСКАД Цифра» по именам. Можно загрузить любой файл базы данных цветов. Этот файл может, например, использоваться для назначения цвета предупредительного сигнала определенной графической форме. Поэтому, убедитесь, что в файле содержатся имена цветов для предупредительных сигналов. Следующий код используется для загрузки файла базы данных цветов.

left: 0px; top: 1126px;» width=»630″>

main()

{  

  string strColorFile = getPath(COLORDB_REL_PATH, «colorDB»);

  GisViewer_ewo1.loadColorFile(strColorFile);

}

ЗАГРУЗКА КАРТ (ФАЙЛОВ ESRI Shape)

  1. Для средства просмотра GIS Viewer карты загружаются в виде файлов ESRI Shape. Добавьте код в сценарий событий средства GIS Viewer. Карта состоит из четырех файлов:
    • Фактические формы (*.shp).
    • Файл указателей (*.shx). Этот файл содержит позиции байтов каждой формы и используется средством GIS Viewer при загрузке отдельных форм из файла *.shp.
    • Файл DBF (*.dbf). Этот файл содержит информацию по каждой форме. Файл DBF это файл базы данных формата IV. В него входят данные по каждой форме, записанной в файле. Обычно файл DBF содержит ‘имена’ форм, при этом он так же может включать любые информационные поля.
    • Файл prj (*.prj). Это файл ASCII в котором содержится информация о координатной системе карты.

Бесплатные файлы ESRI Shape можно найти в Интернете. См. http://www.mapcruzin.com/download_mapcruz.php или http://www.gfk-geomarketing.de/en/digital_maps/digital_map_samples/shape.php.

note.gifПРИМЕЧАНИЕ

Сохраняйте карты в одной из подпапок проекта, например, data/Gis. Учтите, что для загрузки карты необходимо чтобы все четыре файла были сохранены в одном каталоге.

На примере ниже показан пример загрузки карты:left: 0px; top: 1126px;» width=»630″>

main()

{

  string strMap = «Gis/country»;

  getPath(DATA_REL_PATH, strMap + «.shx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.shp»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbn»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.prj»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.lyr»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.gif»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.dbf»); // загрузить файл

  this.loadShapeFile(getPath(DATA_REL_PATH) + strMap, «COUNTRY»);

  strMap = «Gis/lakes»;

  getPath(DATA_REL_PATH, strMap + «.shx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.shp»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbn»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.prj»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.lyr»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.gif»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.dbf»); // загрузить файл

  this.loadShapeFile(getPath(DATA_REL_PATH) + strMap, «lakes»);

  strMap = «Gis/rivers»;

  getPath(DATA_REL_PATH, strMap + «.shx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.shp»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbn»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.prj»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.lyr»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.gif»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.dbf»); // загрузить файл

  this.loadShapeFile(getPath(DATA_REL_PATH) + strMap, «rivers»);

  strMap = «Gis/cities»;

  getPath(DATA_REL_PATH, strMap + «.shx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.shp»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbx»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.sbn»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.prj»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.lyr»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.gif»); // загрузить файл

  getPath(DATA_REL_PATH, strMap + «.dbf»); // загрузить файл

  this.loadShapeFile(getPath(DATA_REL_PATH) + strMap, «cities»);

  /*Укажите папку для карты (в нашем случае: «Gis») и имя карты без расширения файла (в нашем случае: country, lakes, rivers, cities. «Gis/country» = Имя папки / имя файла без расширения*/

}

Вышеуказанный код загружает несколько файлов Shape (COUNTRY, lakes, rivers, cities). Кроме этого код определяет имена слоев.. В данном случае это имена «COUNTRY», «lakes», «rivers» и «cities». Позже можно будет использовать имена для обращения к слоям. В данном разделе используется карта мира.

По умолчанию каждый слой отображается. Чтобы скрыть слой используйте функцию «hideLayer»:left: 0px; top: 1126px; height: 113px;»>

main()

{

  GisViewer_ewo1.hideLayer(«lakes»);

  GisViewer_ewo1.hideLayer(«rivers»);

  GisViewer_ewo1.hideLayer(«cities»);

}

Для отображения слоя используйте функцию «showLayer»:left: 0px; top: 2120px; height: 92px;»>

main()

{

  GisViewer_ewo1.showLayer(«lakes»);

}

УСТАНОВКА ЦВЕТОВ ДЛЯ СЛОЕВ

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

left: 0px; top: 2285px; height: 221px;»>

  main()

{

  this.setLayerFillColor(«COUNTRY», «yellow»);

  this.setLayerFillColor(«lakes», «blue»);

  this.setLayerFillColor(«rivers», «blue»);

  this.setLayerFillColor(«cities», «red»);

  this.setLayerLineColor(«cities»,»black»);

  this.setLayerLineColor(«rivers», «Green»);

  this.setLayerLineColor(«lakes», «Green»);

  this.setLayerLineColor(«COUNTRY»,»black»);

}

В зависимости от используемой карты (карт), экран GIS Viewer может выглядеть следующим образом:

Рисунок. Слои: COUNTRY, rivers, lakes

Control_Grafik-27.gif

На рисунке выше для примера используется карта мира.

Рисунок. Слои:COUNTRY, rivers, lakes и cities

Control_Grafik-28.gif

note.gifПРИМЕЧАНИЕ

В редакторе свойств графического редактора можно установить прозрачный цвет фона для средства GIS Viewer и вставить графический объект с картинкой на заднем плане экрана GIS Viewer. После загрузки средства GIS Viewer на его заднем плане будет выведена картинка.

Рисунок. Экран GIS Viewer с прозрачным цветом фона и картинкой на заднем плане

Control_Grafik-37.gif

ДОБАВЛЕНИЕ ФОРМ

  1. Формы в средстве просмотра карт GIS Viewerиспользуются двумя способами.
  1. Можно изменить цвет формы, которая присутствует на одном из имеющихся слоев.
  2. Можно в динамическом режиме добавлять новые формы на новый слой и изменять цвет этих форм. На примере ниже показан способ добавления прямоугольника на слой в динамическом режиме.

caution.gifВНИМАНИЕ

При добавлении формы на слой, это слой предварительно должен быть добавлен функцией «addEmptyLayer».

  • Для добавления прямоугольника сверху над зоной Африки от верхнего правого до нижнего левого угла используйте функцию «addRectangleToLayer» , как показано ниже:

left: 0px; top: 3273px; height: 128px;» width=»630″>

 // — Долгота в зоне Африки : -15, — Широта в зоне Африки: -36

 // Верхний правый угол в зоне Африки:  — Долгота : 43,  — Широта : 35

main()
{

   GisViewer_ewo1.addEmptyLayer(«SHAPES»);

   GisViewer_ewo1.setLayerFillColor( «SHAPES», «green» );

   GisViewer_ewo1.addRectangleToLayer( «SHAPES», «MYRECT», -15, -36, 43, 35 );

   GisViewer_ewo1.addRectangleToLayer(«COUNTRY»,»AUT», -15, -36, 43, 35);

}

Рисунок. Слой «COUNTRY» с прямоугольником над зоной Африки

Control_Grafik-29.gif

note.gifПРИМЕЧАНИЕ

Как показано на примере кода выше, формы могут добавляться на карту используя координаты (долгота и широта желаемого континента, страны или города).

long addPolygonToLayer( string strLayer, string strName, long iNumPoints);

void addPointToPolygon( long pPolygon, int iIndex, double dX, double dY); class=SourcePure style=»font-family: Arial, sans-serif;»>

При помощи данной функции будет добавлен полигон над зоной Алжира, Туниса и Ливии.left: 0px; top: 3273px; height: 128px;» width=»630″>

main()

{

  int i;

  GisViewer_ewo1.addEmptyLayer(«POL»);

  GisViewer_ewo1.setLayerFillColor(«POL»,»blue»);

  GisViewer_ewo1.home();

  i = GisViewer_ewo1.addPolygonToLayer(«POL»,»POLI», 3);

  GisViewer_ewo1.addPointToPolygon(«POL», i, 0, 5, 22);  // добавить первую точку

  GisViewer_ewo1.addPointToPolygon(«POL», i, 1, 18.5, 33); //добавить вторую точку

  GisViewer_ewo1.addPointToPolygon(«POL», i, 2, 10.8, 40.2); //добавить третью точку

}

Рисунок. Полигон над зоной Алжира, Туниса и Ливии

Control_Grafik-31.gif

ИЗМЕНЕНИЕ МАСШТАБА И ПАНОРАМИРОВАНИЯ

  1. В средстве GIS Viewer имеются несколько функций изменения масштаба и панорамирования. Эти функции описаны ниже.
  • Средство GIS Viewer обычно имеет несколько слоев, каждый из которых содержит формы (полигоны, линии, прямоугольники). Для изменения масштаба набора форм, назначьте этим формам переменную и используйте функцию масштабирования для показа всех форм, содержащих данное значение.

left: 0px; top: 3273px; height: 128px;» width=»630″>

main()
{
 GisViewer_ewo1.assignVariableToShape(«COUNTRY», «CAPITAL», «Luxembourg», «Cit», 1) ;   
 GisViewer_ewo1.zoomByVariableValue(«Cit», 1);  
}

//Функция масштабирует объект автоматически. На данном примере это объект «Luxembourg» в поле CAPITAL на слое COUNTRY*/

Функция «assignVariableToShape» имеет следующие переменные:

  1. <Layer>Имя слоя.
  2. <Field>Поле, которое используется для идентификации формы. Значение для поля должно быть уникальным.
  3. <Field value> Значение для поля, которое используется для идентификации одной из форм.
  4. <Variable>Имя переменной, которая назначается форме.
  5. <Value>Значение переменной. Переменную можно использовать позже, например, для изменения цвета одной или нескольких форм, содержащих данную переменную.

Вышеуказанный код покажет на экране все формы, которые содержат переменную «Cit» со значением 1.
 

  • Для панорамирования карты используйте функцию «pan».

GisViewer_ewo1.pan(float fX, float fY);

Функция выполнит панорамирование в направлении X и/или Y. Значение 0.25 означает, что карта будет перемещена на четверть от общей видимой зоны.left: 0px; top: 3879px;»>

main()

{

  GisViewer_ewo1.pan(0.25, 0.0);

}

  • Для увеличения масштаба карты используйте функцию «zoom» .

GisViewer_ewo1.zoom(float fFactor);

Данная функция увеличивает или уменьшает масштаб на указанный коэффициент.

На примере ниже показан код для уменьшения масштаба:left: 0px; top: 4131px; height: 85px;»>

main()

{

  GisViewer_ewo1.zoom(0.5);

}

На примере ниже показан код для увеличения масштаба:left: 0px; top: 4273px; height: 86px;»>

main()

{

  GisViewer_ewo1.zoom(2);

}

  • Для масштабирования карты до полного вида используйте функцию «home»:

GisViewer_ewo1.home();left: 0px; top: 4273px; height: 86px;»>

main()

{

  GisViewer_ewo1.home();

}

ЗАПРОС ИНФОРМАЦИИ О КАРТЕ

  1. Для получения информации о карте и формах используется определенный набор функций:
  • Для получения имени отдельного слоя используйте функцию «getLayerName».

string getLayerName(int iIndex);left: 0px; top: 4669px; height: 122px;»>

main()

{

  string lN;

  int iIndex = 2;

  lN = GisViewer_ewo1.getLayerName(iIndex);

  DebugN(«LayerName, Layer 1:», lN);

}

  • Для получения общего количества слоев используйте функцию «getNumLayers».

int getNumLayers();left: 0px; top: 4931px; height: 80px;»>

main()

{

  int numLa;

  numLa = GisViewer_ewo1.getNumLayers();

  DebugN(«Number of layers:», numLa);

}

note.gifПРИМЕЧАНИЕ

Указатель первого слоя 0.

  • Для получения общего количества объектов на всех слоях используйте функцию «getNumObjects».

        int getNumObjects();left: 0px; top: 4931px; height: 80px;»>

main()

{

  int i;

  i = GisViewer_ewo1.getNumObjects();

  DebugN(i);

}

  • Для получения общего количества полигонов на всех слоях используйте функцию «getNumPolygons».

 int getNumPolygons();left: 0px; top: 4931px; height: 80px;»>

main()

{

  int i;

  i = GisViewer_ewo1.getNumPolygons();

  DebugN(i);

}

  • Для получения общего количества объектов на определенном слое используйте функцию «getNumObjectsLayer»:

int getNumObjectsLayer(string strLayer);left: 0px; top: 4931px; height: 80px;»>

main()

{

  int i;

  i = GisViewer_ewo1.getNumObjectsLayer(«SHAPES»);

  DebugN(i);

}

Вышеуказанный код возвращает количество объектов на слое «SHAPES».

  • Для запроса размеров карты можно использовать событие ExtentChanged. Данное событие возвращает текущий размер карты.

left: 0px; top: 4931px; height: 80px;» width=»630″>

ExtentChanged(double dZoom, double dLeft, double dTop, double dRight, double dBottom, double dWidth, double dHeight, double dMiddleX, double dMiddleY)

{

  DebugN(«Left:», dLeft, «Top:», dTop, «Right:», dRight, «Bottom:», dBottom, «Width:»,   
 dWidth, «Height:», dHeight);

}

ЗАПРОС ИНФОРМАЦИИ О ПОЛЕ СЛОЯ

  1. На слое содержатся поля, которые описывают свойства данного слоя. Для получения информации о полях в файле ESRI Shape используются несколько функций:
  • Для получения количества полей на слое используйте функцию «getNumFieldsLayer».

       int getNumFieldsLayer(string strLayer);left: 0px; top: 4931px; height: 80px;»>

main()

{

  int i;

  i = GisViewer_ewo1.getNumFieldsLayer(«COUNTRY»);

  DebugN(«Number of Fields in Layer:», i);

}

  • Для получения имени поля на слое используйте «getLayerFieldName».

string getLayerFieldName(string strLayer, int iIndex);

Приведенный ниже код возвращает имя первого поля на слое «COUNTRY»:height: 80px; left: 0px; top: 6043px;»>

main()

{

  string Fn;

  Fn = GisViewer_ewo1.getLayerFieldName(«COUNTRY», 1);

  DebugN(«Field 0 of Layer country», Fn);

}

  • Для получения имени определенной формы на слое используйте функцию «getShapeNameInLayer».

string getShapeNameInLayer(string strLayer, int iFieldIndex, int iShapeIndex);

Функция возвращает значение поля (указатель iFieldIndex начинается с 0) формы (указатель iShape начинается с 0).height: 80px; left: 0px; top: 6043px;»>

main()

{

  string sN;

  sN=GisViewer_ewo1.getShapeNameInLayer(«COUNTRY», 0, 0);

  DebugN(sN);

}

Приведенный выше код возвращает имя первой формы на слое «COUNTRY»:

  • Если необходимо определить указатель отдельного поля в слое используйте «getLayerFieldIndex».

int getLayerFieldIndex(string strLayer, string strField);

Данная функция возвращает указатель поля ‘strField’ или -1 если поле не было найдено.height: 80px; left: 0px; top: 6043px;» width=»630″>

main()

{

  int i;

  i = GisViewer_ewo1.getLayerFieldIndex(«COUNTRY», «NAME»);

  DebugN(«Field index of the field ‘NAME’ in layer COUNTRY:», i); 

}

Вышеуказанный код возвращает указатель поля»NAME» на слое «COUNTRY».

  • Для получения всех указателей полей, имен всех объектов и форм (стран) на слое можно использовать цикл FOR:

height: 80px; left: 0px; top: 6043px;» width=»630″>

main()

{

   int i, j, k;

   k = GisViewer_ewo1.getLayerFieldIndex(«COUNTRY», «NAME»);

   DebugN(k);

   j = GisViewer_ewo1.getNumObjectsLayer(«COUNTRY»);

   for (i=0;i<j;i++)

   {

      string sN;

      sN = GisViewer_ewo1.getShapeNameInLayer(«COUNTRY», k, i);

      DebugN(«Shapes in layer COUNTRY», sN);

   }

}

ЭКСПОРТ ИНФОРМАЦИИ О СЛОЕ

  1. Файл указателей CSV содержит перечень всех форм и их полей. Экспорт информации о слое производится функцией «exportLayerIndexFile».

void exportLayerIndexFile( string strPath, string strLayer);

Данная функция создает файл с названием «<layer>.csv» в указанной папке. Нижеследующий код создает файл CSV «Country.csv в каталоге D:/.

Файл CSV содержит всю информацию по карте мира (например: регионы, континенты, страны).height: 80px; left: 0px; top: 6043px;» width=»630″>

main()

{

  GisViewer_ewo1.exportLayerIndexFile(«D:/», «COUNTRY»);

}

ИЗМЕНЕНИЕ ЦВЕТОВ

  1. Цвет формы можно изменить различными способами:

void setShapeColorByName( string strLayer, string strField, string strShape, string strColor);

Данную функцию можно использовать для назначения цвета форме с указанным полем и значением поля на указанном слое. На примере ниже показан код, устанавливающий красный цвет прямоугольника «MYRECT» (над зоной Африки) на слое «SHAPES» .height: 80px; left: 0px; top: 6043px;» width=»630″>

main() 

{

  GisViewer_ewo1.setShapeColorByName(«SHAPES», «NAME», «MYRECT», «red»);

}

Рисунок. Прямоугольник MYRECT красного цвета

Control_Grafik-33.gif
  • voidsetShapeFillColor(string strLayer, string strField, string strShape, string lColor);

Код устанавливает цвет заливки для указанного слоя.

    На следующем примере код устанавливает зеленый цвет формы «MYRECT».height: 80px; left: 0px; top: 6043px;» width=»630″>

main()

{

 GisViewer_ewo1.setLayerFillColor(«SHAPES», «NAME», «MYRECT», «{0,255,0}»);

}

  • Таким же образом можно задать цвет линии с помощью функции  

    void
     setShapeLineColor(string strLayer, string strField, string strShape, string lColor);

Показанный ниже код задает розовый цвет линии формы «MYRECT».height: 80px; left: 0px; top: 6043px;» width=»630″>

main()

{

  GisViewer_ewo1.setShapeLineColor(«SHAPES»,»NAME», «MYRECT», «{255,0,255}»);

}

Рисунок. Цвет линии формы MYRECT

Control_Grafik-34.gif

note.gifПРИМЕЧАНИЕ

Так же с помощью функции «setLayerLineStyle» дополнительно была установлена толщина линии на слое, на котором был добавлен прямоугольник.

  1. Цвет заливки и цвет линии можно сбросить в состояние по умолчанию. Для этого используются две функции:

void resetShapeFillColor(string strLayer, string strField, string strShape);

void resetShapeLineColor(string strLayer, string strField, string strShape);height: 80px; left: 0px; top: 6043px;»>

main()

{

  GisViewer_ewo1.resetShapeFillColor(«SHAPES», «NAME», «MYRECT»);

  GisViewer_ewo1.resetShapeLineColor(«SHAPES»,»NAME», «MYRECT»);  
}

ПОДКЛЮЧЕНИЕ ТОЧКИ ДАННЫХ _SumAlertPanel К ФОРМЕ

  1. Средство GIS Viewer может принимать состояние предупредительного сигнала от точки данных _SumAlertPanel и использовать его для изменения цвета соответствующих форм.
     
  • Вызовите метод «PVSSSetSumAlertPanels»для загрузки списка точек данных _SumAlertPanel в средство GIS Viewer. Это должен быть список точек данных _SumAlertPanels
    , которые необходимо связать с формами в средстве просмотра карт GIS Viewer.
     
  • Выполните команду запроса dpQuery() или, например, dpQueryConnectSingle() для получения цвета предупредительного сигнала точки данных _SumAlertPanel и передачи результата запроса
    в средствоGIS Viewer путем вызова функции «PVSSReceiveSumAlertStatus».
     
  • Затем используйте функцию «PVSSLinkSumAlertToShape» для связи точки данных с формой.

Нижеследующий код используется для передачи имен точек данных SumAlertPanel в средство GIS Viewer, запроса цветов предупредительных сигналов этих точек и

передачи данных цветов в средство GIS Viewer с помощью команды «PVSSReceiveSumAlertStatus». Код так же устанавливает связь формы «Austria» на слое «COUNTRY» с точкой данных
«КАСКАД Цифра» _SumAlertPanel.

При возникновении предупредительного сигнала, форма «Austria» будет мигать.left: 0px; top: 32px; height: 676px;» width=»630″>

main()

{

  dyn_string strDefinition;

  dyn_string color;

  // Пользователь может задать точки данных SumAlertPanel, которые должны «обрабатываться» в средстве GIS Viewer

  // ‘process’

  // На данном примере имена всех точек данных просто передаются

  // в средство просмотра карт GIS

  dyn_string strTest = dpNames(«*», «_SumAlertPanel»);

  GisViewer_ewo1.PVSSSetSumAlertPanels((string)strTest);  

  // Теперь можно создать «карту» связи формы

  // с определенной точкой данных _SumAlertPanel

  strDefinition = makeDynString(«COUNTRY@NAME@Austria@System1:Panel1_1»);

  //                              ^^ Слой

  //                                      ^^ Поле

  //                                           ^^ Значение поля

  //                                                   ^^ Имя точки данных _SumAlertPanel

  GisViewer_ewo1.PVSSLinkSumAlertToShape(strDefinition);  

  // Теперь создадим запрос, который отправит цвета предупредительных сигналов

  // точек данных _SumAlertPanel в средство GisViewer 

  string strQuery = «SELECT ‘.Warning:_alert_hdl.._act_state_color’, ‘.Alert:_alert_hdl.._act_state_color’, ‘.Danger:_alert_hdl.._act_state_color’ FROM ‘*’ WHERE(_DPT = \»_SumAlertPanel\»)»;

  dpQueryConnectSingle(«CallBackSumAlertPanel», «MyId», strQuery);

}

 void CallBackSumAlertPanel(string strID, dyn_dyn_anytype a)

{

  string strLine;

  string strOneLine;

  // Преобразуем полученный формат dyn_dyn_anytype в более удобный тип

  // чтобы средство GIS Viewer могло его использовать

  for(int t = 2; t <= dynlen(a); t++)

  {

    if(t > 2)

      strLine += «|»;

    // Средство GIS Viewer получает список, где каждая строка выглядит так:

    //    <dp>,<warning color>,<alert color>,<danger color>

    strOneLine = a[t][1] + «,» + a[t][2] + «,» + a[t][3] + «,» + a[t][4];

    strLine += strOneLine;

  }

  // Передача (форматированных) точек данных и цветов в средство GIS Viewer

  GisViewer_ewo1.PVSSReceiveSumAlertStatus(strLine);  

  DebugN(«status of the sum alert panel data points:»,strLine);

}

note.gifПРИМЕЧАНИЕ

При использовании средства GIS Viewer с веб-клиентом, сначала необходимо запросить путь к файлу для функции loadShapeFile() с помощью команды getPath()
. Выполните запрос пути к файлу для кэширования карт для средства GIS Viewer .

Функции средства GIS Viewer

Доступные функцииОписание
«addEmptyLayer»Добавляет пустой слой в карту.
«addPointToLayer»Добавляет координату к слою.
«addPointToPolygon»Добавляет точку на полигоне.
«addPointToPolyline»Добавляет точку на ломаной линии.
«addPolygonToLayer»Добавляет полигон к слою.
«addPolylineToLayer»Добавляет ломаную линию к слою.
«addRectangleToLayer»Добавляет прямоугольник к слою.
«addVarValueColorMapping»Таблица с цветовой маркировкой.
«assignVariableToShape»Назначает переменную форме, для обращения к форме через переменную.
«deleteAll»Удаляет все загруженные слои и формы средства просмотра карт GIS Viewer .
«drawTooltip»Выводит всплывающую подсказку.
«exportLayerIndexFile»Экспортирует файл указателя слоя со всей информацией о слое
«getLayerFieldIndex»Возвращает указатель поля для определенного имени поля на определенном слое.
«getLayerFieldName»Возвращает имя поля для определенного указателя поля на определенном слое.
«getLayerName»Возвращает имя слоя по определенному указателю слоя.
«getNumFieldsLayer»Возвращает количество полей на определенном слое.
«getNumLayers»Возвращает общее количество слоев.
«getNumObjects»Возвращает общее количество объектов.
«getNumObjectsLayer»Возвращает общее количество объектов на слое.
«getNumPoints»Возвращает общее количество точек на всех слоях.
«getNumPolygons»Возвращает общее количество полигонов на всех слоях.
«getShapeNameInLayer»Возвращает имя формы на слое.
«getShapeXCoordinate»Возвращает координату X для формы.
«getShapeYCoordinate»Возвращает координату Y для формы.
«getXLeft»Возвращает координату X левой границы области, которая в данный момент отображается на экране.
«getXRight»Возвращает координату X правой границы области, которая в данный момент отображается на экране.
«getYBottom»Возвращает координату Y нижней границы области, которая в данный момент отображается на экране.
«getYTop»Возвращает координату Y верхней границы области, которая в данный момент отображается на экране.
«hideLayer»Скрывает слой.
«home»Масштабирует карту до полного размера.
«loadShapeFile»Загружает файл ESRI Shape (карта для средства GIS Viewer ).
«loadColorFile»Загружает файл базы данных цветов.
«maxWidthForText»Задает максимальную ширину текста для карты
«memoryReport»Создает отчет состояния памяти.
«moveRectangle»Перемещает прямоугольник.
«PVSSLinkSumAlertToShape»Соединяет точку данных групповых алармов с формой.
«PVSSReceiveSumAlertStatus»Переносит результаты запроса dpQuery в средство GIS Viewer .
«PVSSSetSumAlertPanels»Переносит список панелей групповых алармов в средство GIS Viewer .
«removePolyLineGradient»Удаляет градиент ломаной линии.
«resetShapeFillColor»Сбрасывает цвет заливки формы.
«resetShapeLineColor»Сбрасывает цвет линии формы.
«selectShapeVarAsShapeName»Выбирает поле формы, которое должно отображаться в виде текста на карте.
«setAutoZoomExtra»Задает отклонение для функций автоматического масштабирования.
«‘setLayerClickEnabled»Включает или выключает события щелчка мыши (событие «Clicked») для средства GIS Viewer.
«setLayerDrawAfterText»Устанавливает выбранный слой сверху.
«setLayerFillColor»Определяет цвет заливки слоя.
«setLayerLineColor»Определяет цвет линий слоя.
«setLayerLineStyle»Задает стиль линий слоя.
«setLayerLineWidth»Задает толщину линий слоя.
«setLayerPointSymbol»Задает символ для точки на слое.
«setLayerVisibleRange»Определяет видимую область слоя.
«setMinWidthLayer»Определяет минимальную ширину слоя.
«setPolylineGradient»Задает градиент для ломаной линии.
«setPropShapeWildcard»Задает свойство различных форм, которые соответствуют знаку подстановки
«setShapeColorByName»Задает цвет формы по имени формы.
«setShapeFillColor»Определяет цвет заливки формы.
«setShapeIcon»Задает иконку для формы
«setShapeLineColor»Задает цвет линии формы.
«setShapePVSSSymbol»Задает ссылку панели для средства GIS Viewer .
«setSmoothSteps»Задает шаг плавного масштабирования карты. Масштаб карты будет изменяться плавно с заданным шагом.
«setTextVisible»Задает видимый текст слоя.
«showLayer»Показывает слой.
«showShapesAll»Показывает все формы на слое.
«showShapesWildcard»Показывает формы по знаку подстановки.
«updateShapeAndAutoZoom»Обновляет цвет формы и увеличивает ее размер.
«hideLayer»Скрывает слой.
«zoom»Увеличивает или уменьшает масштаб карты.
«zoomByVariableValue»Изменяет масштаб карты по значению переменной.
«zoomByWildcard»Изменяет масштаб карты по знаку подстановки.
«pan»Панорамирует карту.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *