打开工作空间
打开工作空间中的地图
打开工作空间中的地图,分为三个步骤:
(1)打开工作空间;
(2)工作空间与地图显示控件关联;
(3)打开工作空间中的地图。
/** ————打开工作空间———— **/
m_workspace = new Workspace();
WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
info.setServer(sdCard + "/SampleData/OpenMap/Changchun.smwu");
info.setType(WorkspaceType.SMWU);
m_workspace.open(info);
/** ————工作空间与地图显示控件关联———— **/
m_mapView = (MapView) findViewById(R.id.mapView);
m_mapControl = m_mapView.getMapControl();
m_mapControl.getMap().setWorkspace(m_workspace);
/** ————打开工作空间中的地图———— **/
String mapName = m_workspace.getMaps().get(0);
m_mapControl.getMap().open(mapName);
m_mapControl.getMap().refresh();
打开工作空间中的数据源
打开工作空间中的数据源,分为三个步骤:
(1)打开工作空间;
(2)工作空间与地图显示控件关联;
(3)打开工作空间中的数据源并加载数据源中的数据集到地图。
/** ————打开工作空间———— **/
m_workspace = new Workspace();
WorkspaceConnectionInfo info = new WorkspaceConnectionInfo();
info.setServer(sdCard + "/SampleData/OpenMap/Changchun.smwu");
info.setType(WorkspaceType.SMWU);
m_workspace.open(info);
/** ————将地图显示控件和工作空间关联———— **/
m_mapView = (MapView) findViewById(R.id.mapView);
m_mapControl = m_mapView.getMapControl();
m_mapControl.getMap().setWorkspace(m_workspace);
/** ————打开数据源中的数据集———— **/
m_dataSource = m_workspace.getDatasources().get("changchun");
Dataset dataset = m_dataSource.getDatasets().get("AreaPoly");
m_mapControl.getMap().getLayers().add(dataset,true);
m_mapControl.getMap().viewEntire();
m_mapControl.getMap().refresh();
打开数据源
打开数据源包括三个步骤:
(1)关联工作空间;
(2)打开数据源;
(1)打开数据集。
/** ————关联工作空间———— **/
Workspace workspace = new Workspace();
mMapView = (MapView) findViewById(R.id.mapView);
mMapControl = mMapView.getMapControl();
mMap = mMapControl.getMap();
mMap.setWorkspace(workspace);
/** ————打开数据源———— **/
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.setEngineType(EngineType.UDB);
info.setServer(path);
Datasource datasource = workspace.getDatasources().open(info);
/** ————打开数据集———— **/
if(datasource != null){
mMap.getLayers().add(datasource.getDatasets().get(0), true);
mMap.refresh();
}
打开地图服务
/** ————关联工作空间———— **/
Workspace workspace = new Workspace();
mMapView = (MapView) findViewById(R.id.mapView);
mMapControl = mMapView.getMapControl();
mMap = mMapControl.getMap();
mMap.setWorkspace(workspace);
/** ————打开数据源———— **/
DatasourceConnectionInfo info = new DatasourceConnectionInfo();
info.setAlias("OpenStreetMap2");
info.setEngineType(EngineType.GaoDeMaps);
Datasource datasource = workspace.getDatasources().open(info);
/** ————打开数据集———— **/
if(datasource != null){
mMap.getLayers().add(datasource.getDatasets().get(0), true);
}
mMap.refresh();
若地图服务含有token,使用时,将token直接加到地址后方即可,参考如下代码:
http://localhost:8090/iserver/services/map-china400/rest.rjson?token=NZklLM9Tl2FEGK_Uh9KHOtOOdS83IDOARAS5_rMVEUTyKOTVGCYV-5m3wUYE-MS NPGwKnewy8jek..
常见GIS数据导入地图
iMobile支持导入常见格式的数据,包括shp、mif、dxf、dwg、tif、img、kml、kmz、gpx、csv等,必须的jar包、so库以及关键类、方法参照下表。
jar包 |
---|
com.supermap.data.jar、com.supermap.mapping.jar |
so库 |
libimb2d.so、libimbAutoCAD.so(导入dxf、dwg时需要)、libgnustl_shared.so、libQt5Core.so、libQt5Gui.so、libQt5Svg.so、libQt5Widgets.so(注:11.1版本开始,需添加后五个so库。) |
关键类 |
DataConversion、ImportSetting |
关键方法 |
importTIF()、importCSV()、importDWG()、importDXF()、importGPX()、importIMG()、importKML()、importKMZ()、importMIF()、importSHP() |
导入shp
导入shp格式的数据,分为三个步骤:
(1)构建SHP导入参数(ImportSettingSHP)(可选步骤);
(2)导入SHP数据(importSHP);
(3)打开导入的SHP数据。
try {
/** ————导入SHP数据———— **/
boolean shp = DataConversion.importSHP(strShpPath,udbDatasource);
/** ————打开导入的SHP数据———— **/
if (shp == true) {
dataset = udbDatasource.getDatasets().get("shpImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
}
} catch (Exception e) {
e.printStackTrace();
}
导入mif
导入mif格式的数据,分为两个步骤:
(1)导入MIF数据(importMIF);
(2)打开导入的MIF数据。
try {
/** ————导入MIF数据———— **/
boolean mif = DataConversion.importMIF(strMifPath,udbDatasource);
/** ————打开导入的MIF数据———— **/
if (mif == true) {
dataset = udbDatasource.getDatasets().get("mifImportR");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
}
} catch (Exception e) {
e.printStackTrace();
}
导入tif
导入tif格式的数据,分为三个步骤:
(1)构建TIF导入参数(ImportSettingTIF)(可选步骤);
(2)导入TIF数据(importTIF);
(3)打开导入的TIF数据。
try {
/** ————构建TIF导入参数———— **/
ImportSettingTIF importSettingTIF = new ImportSettingTIF();
importSettingTIF.setSourceFilePath(strTifPath);////设置导入数据的路径信息
importSettingTIF.setTargetDatasetName("tifImport");//设置目标数据集名称
importSettingTIF.setTargetDatasource(udbDatasource);//设置目标数据源
importSettingTIF.setSourceFileCharset(Charset.UTF8);/设置导入文件的字符集类型
importSettingTIF.setMultiBandImportMode(MultiBandImportMode.COMPOSITE);
importSettingTIF.setTargetEncodeType(EncodeType.DCT);//设置生成数据集的编码类型
importSettingTIF.setImportingAsGrid(false);
importSettingTIF.setImportMode(ImportMode.OVERWRITE);
importSettingTIF.setBuildPyramid(true);
/** ————导入TIF数据———— **/
boolean tif = DataConversion.importTIF(importSettingTIF);
/** ————打开导入的TIF数据———— **/
if (tif == true) {
dataset = udbDatasource.getDatasets().get("tifImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
} catch (Exception e) {
e.printStackTrace();
}
导入img
导入img格式的数据,分为三个步骤:
(1)构建IMG导入参数(ImportSettingIMG)(可选步骤);
(2)导入IMG数据(importIMG);
(3)打开导入的IMG数据。
try {
/** ————构建IMG导入参数———— **/
ImportSettingIMG importSettingIMG = new ImportSettingIMG();
importSettingIMG.setSourceFilePath(strImgPath);
importSettingIMG.setTargetDatasetName("imgImport");
importSettingIMG.setTargetDatasource(udbDatasource);
importSettingIMG.setSourceFileCharset(Charset.UTF8);
importSettingIMG.setMultiBandImportMode(MultiBandImportMode.COMPOSITE);
importSettingIMG.setTargetEncodeType(EncodeType.DCT);
importSettingIMG.setImportMode(ImportMode.OVERWRITE);
importSettingIMG.setBuildPyramid(true);
/** ————导入IMG数据———— **/
boolean img = DataConversion.importIMG(importSettingIMG);
/** ————打开导入的IMG数据———— **/
if (img == true) {
dataset = udbDatasource.getDatasets().get("imgImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
} catch (Exception e) {
e.printStackTrace();
}
导入dxf
导入img格式的数据,分为三个步骤:
(1)构建DXF导入参数(ImportSettingDXF)(可选步骤);
(2)导入DXF数据(importIDXF);
(3)打开导入的DXF数据。
try {
/** ————导入DXF数据———— **/
boolean dxf = DataConversion.importDXF(strDxfPath,udbDatasource, true);
/** ————打开导入的DXF数据———— **/
if (dxf == true) {
dataset = udbDatasource.getDatasets().get("dxfImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
}
} catch (Exception e) {
e.printStackTrace();
}
导入dwg
导入dwg格式的数据,分为三个步骤:
(1)构建DWG导入参数(ImportSettingDWG)(可选步骤);
(2)导入DWG数据(importDWG);
(3)打开导入的DWG数据。
try {
/** ————导入DWG数据———— **/
boolean dwg = DataConversion.importDWG(strDwgPath,udbDatasource, true);
/** ————打开导入的DWG数据———— **/
if (dwg == true) {
dataset = udbDatasource.getDatasets().get("dwgImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
}
} catch (Exception e) {
e.printStackTrace();
}
导入csv
导入csv格式的数据,分为三个步骤:
(1)构建CSV导入参数(ImportSettingCSV)(可选步骤);
(2)导入CSV数据(importCSV);
(3)打开导入的CSV数据。
try {
/** ————构建CSV导入参数———— **/
ImportSettingCSV importSettingCSV = new ImportSettingCSV();
importSettingCSV.setSourceFilePath(csvPath);//设置导入数据的路径信息
importSettingCSV.setTargetDatasetName("csvImport");//设置目标数据集名称
importSettingCSV.setTargetDatasource(udbDatasource);//设置目标数据源
importSettingCSV.setImportEmptyDataset(true);//设置导入空的数据集
/** ————导入CSV数据———— **/
boolean csv = DataConversion.importCSV(importSettingCSV);
/** ————打开导入的CSV数据———— **/
if (csv) {
dataset = udbDatasource.getDatasets().get("csvImport");
mLayer = mMapControl.getMap().getLayers().add(dataset, true);
mLayer.setVisible(true);
mMapControl.getMap().viewEntire();
mMapControl.getMap().refresh();
}
} catch (Exception e) {
e.printStackTrace();
}