В компоненте MapViewer ActiveX есть возможность в качестве источника данных использовать различные хранилища данных. Такими ресурсами могут быть:
• СУБД PostgreSQL;
• СУБД MySQL;
• СУБД SqLite;
• Ресурсы OGR.
В качестве работы с внешним источником данных мы будем рассматривать работу с СУБД PostgreSQL.
Для загрузки слоев из базы данных PostgreSQL сначала необходимо создать специальный объект типа ExternalSource из пространства имен mvMapLib. Посредством этого объекта будет осуществляться соединение с базой и загрузка слоев:
ExternalSource postgres; postgres =
axMapLib1 .CreateExternalSource(mvExternalSourceTypes.mvPostGIS);
Затем необходимо указать параметры соединения с базой, а также проекцию в которой находятся пространственные данные в базе (srid) и подключиться к ней:
int srid = 32639; postgres.prepare(“host =hostname port=portnumber user=
username password=pass dbname=databasename”, srid); postgres.Connect();
Можно проверить, было ли уже установлено соединение, используя следующую функцию:
if(!postgres.isConnected())
{
postgres.Connect();
}
Непосредственно при создании слоя необходимо указать параметры доступа к таблице с пространственными данными: схему, название таблицы, поле первичного ключа, поле с геометрией, поле из которого будет формироваться подпись для объектов (если такого поля нет, указать пустую строку), поле с указанием прикрепленных к объектам слоя изображений, а также указать название нового создаваемого слоя:
String nameScheme = “sys_scheme”;
String nameTable = “table”;
String newLayerName = “Layer name”;
String tablePkFieldName = “id”;
String tableGeomFieldName = “geom”;
String labelFieldName = “labelfield”;
String imageFieldName = “imagefield”;
String imageXFieldName = “imagexfield”;
mvLayer layer = postgres.addLayer(nameSheme + "." +nameTable,
newLayerName , tablePkFieldName, tableGeomFieldName ,
labelFieldName, "", "", imageFieldName, imageXFieldName);
При разработке своего проекта необходимо будет учитывать, что во внешние слои загружаются только те данные, которые должны отображаться на карте. Соответственно те данные, которые вышли из области видимости, выгружаются.
Свежие комментарии