安卓智能地图开发与实施二十:栅格图层展示
来源:互联网 发布:excel数据分析功能 编辑:程序博客网 时间:2024/05/17 23:24
栅格图层(RasterLayer)
用以加载展示移动端本地文件、移动镶嵌数据集、影像服务。
栅格文件(Raster)
mainMapView =(MapView) findViewById(R.id.mapView);ArcGISMap mainArcGISMap = new ArcGISMap(new Basemap());mainMapView.setMap(mainArcGISMap);String rasterFilePath = getResources().getString(R.string.raster_file_path);Raster mainRasterFile = new Raster(rasterFilePath);mainRasterLayer = new RasterLayer(mainRasterFile);mainArcGISMap.getOperationalLayers().add(mainRasterLayer);mainRasterLayer.loadAsync();mainRasterLayer.addDoneLoadingListener(new Runnable() {@Overridepublic void run() {mainMapView.setViewpointGeometryAsync(mainRasterLayer.getFullExtent(), 50);}});
支持的格式:
- ASRP/USRP
- CIB1, 5, 10
- CRF
- DTED0, 1, 2
- GeoTIFF
- HFA
- HRE
- IMG
- JPEG
- JPEG 2000
- NITF
- PNG
- RPF
- SRTM1, 2
- Mobile mosaic datasets
移动镶嵌数据集(MosaicDatasetRaster)
String rasterFilePath = "/path/to/mosaic.sqlite";mainMapView = (MapView) findViewById(R.id.mainMapView); ArcGISMap mainArcGISMap = new ArcGISMap(Basemap.createTopographic());mainMapView.setMap(mainArcGISMap);List<String> mainMosaicDatasetRasterNames = MosaicDatasetRaster.getNames(rasterFilePath); for (String name: mainMosaicDatasetRasterNames ) { MosaicDatasetRaster mainMosaicDatasetRaster = new MosaicDatasetRaster(urlOrPath,name); RasterLayer mainMDRasterLayer = new RasterLayer(mainMosaicDatasetRaster); mainArcGISMap.getOperationalLayers().add(mainMDRasterLayer); }
创建移动镶嵌数据集工具使用参考:
http://pro.arcgis.com/zh-cn/pro-app/tool-reference/data-management/mosaic-dataset-to-mobile-mosaic-dataset.htm
影像服务(ImageServiceRaster)
mainMapView = (MapView) findViewById(R.id.mainMapView); ArcGISMap mainArcGISMap = new ArcGISMap(Basemap.createTopographic());mainMapView.setMap(mainArcGISMap);ImageServiceRaster mainImageServiceRaster = new ImageServiceRaster(image_service_url);RasterLayer mainImageServiceRasterLayer = new RasterLayer(mainImageServiceRaster); ArcGISMap mainArcGISMap =new ArcGISMap(Basemap.createTopographic());mainMapView.setMap(mainArcGISMap);mainArcGISMap.getOperationalLayers().add(mainImageServiceRasterLayer);
Rendering rules(渲染规则)
用以定义如何对请求的影像进行渲染和处理。
ImageServiceRaster支持服务器端定义也支持客户端定义。
final ImageServiceRaster serviceRaster = new ImageServiceRaster(url);serviceRaster.loadAsync();serviceRaster.addDoneLoadingListener(new Runnable() {@Overridepublic void run() {if (serviceRaster.getLoadStatus() == LoadStatus.LOADED) {ArcGISImageServiceInfo serviceInfo = serviceRaster.getServiceInfo();List<RenderingRuleInfo> renderingRuleInfos = serviceInfo.getRenderingRuleInfos();}}});
通过ImageServiceRaster,获取RenderingRuleInfo,进一步得到Rendering Rule。
当服务端设置多个RenderingRuleInfo,可以选择不同的渲染规则显示栅格图层。
List<RenderingRuleInfo> ruleInfos = serviceRaster.getServiceInfo().getRenderingRuleInfos();if (ruleInfos.size() > 1) {RenderingRule renderingRule = new RenderingRule(ruleInfos[1]);renderingRule.getRenderingRuleInfo().getName();serviceRaster.setRenderingRule(renderingRule);RasterLayer layer = new RasterLayer(serviceRaster);}
通过Json设置渲染规则
// create rendering ruleRenderingRule renderingRule = new RenderingRule("{\"rasterFunction\" : \"Hillshade\",\"rasterFunctionArguments\" : {\"Azimuth\" : 215.0,\"Altitude\" : 75.0,\"ZFactor\" 未完// get a property of rendering rulerenderingRule.getRenderingRuleJson();// set on image service rasterserviceRaster.setRenderingRule(renderingRule);// create a raster layerRasterLayer layer = new RasterLayer(serviceRaster);
RasterFunction定义加载
RasterFunction是针对Raster结合展现的方法进而呈现不同渲染的影像,本质上不改变源数据。
通过RasterFunction定义山体阴影,得到新的RasterLayer
mainMapView =(MapView) findViewById(R.id.mapView);mainMapView.setAttributionTextVisible(false);ArcGISMap mainArcGISMap = new ArcGISMap(new Basemap());mainMapView.setMap(mainArcGISMap);String rasterFilePath = getResources().getString(R.string.raster_file_path);Raster mainRasterFile = new Raster(rasterFilePath);RasterFunction mainRasterFunction = RasterFunction.fromJson(getResources().getString(R.string.hillshade_simplified));RasterFunctionArguments mainRasterFunctionArguments = mainRasterFunction.getArguments();List<String> mainRasterFunctionNames = mainRasterFunctionArguments.getRasterNames();mainRasterFunctionArguments.setRaster(mainRasterFunctionNames.get(0),mainRasterFile);Raster rasterHill = new Raster(mainRasterFunction);mainRasterLayer = new RasterLayer(rasterHill);mainArcGISMap.getOperationalLayers().add(mainRasterLayer);mainRasterLayer.loadAsync();mainRasterLayer.addDoneLoadingListener(new Runnable() { @Override public void run() { mainMapView.setViewpointGeometryAsync(mainRasterLayer.getFullExtent(), 50); }});
使用RasterFunction(山体阴影)前后对比
RasterFunction(山体阴影)
{
\”raster_function_arguments\”:
{
\”z_factor\”:{\”double\”:25.0,\”type\”:\”Raster_function_variable\”},
\”slope_type\”:{\”raster_slope_type\”:\”none\”,\”type\”:\”Raster_function_variable\”},
\”azimuth\”:{\”double\”:315,\”type\”:\”Raster_function_variable\”},
\”altitude\”:{\”double\”:45,\”type\”:\”Raster_function_variable\”},
\”type\”:\”Raster_function_arguments\”,
\”raster\”:{\”name\”:\”raster\”,\”is_raster\”:true,\”type\”:\”Raster_function_variable\”},
\”nbits\”:{\”int\”:8,\”type\”:\”Raster_function_variable\”}
},
\”raster_function\”:{\”type\”:\”Hillshade_function\”},
\”type\”:\”Raster_function_template\”
}
结尾
源程序(包含栅格数据示例)请自行下载:
链接:http://pan.baidu.com/s/1jIswUwA 密码:3ngy
若失效,可发邮件给韩源萌(polyline@126.com)索要。
- 安卓智能地图开发与实施二十:栅格图层展示
- 安卓智能地图开发与实施十:图层管理
- 安卓智能地图开发与实施二十一:栅格渲染器
- 安卓智能地图开发与实施二十二:展示三维场景
- 安卓智能地图开发与实施七:在线业务图层(浏览查询)
- 安卓智能地图开发与实施八:离线业务图层(浏览查询)
- 安卓智能地图开发与实施十三:空间查询与展示
- 安卓智能地图开发与实施十六:三维地图
- 安卓智能地图开发与实施二:开发环境准备
- 安卓智能地图开发与实施二十五:Shapefile文件的可视化与编辑
- 安卓智能地图开发与实施二十三:三维场景中的可视化
- 安卓智能地图开发与实施二十四:关于源代码的放送
- 安卓智能地图开发与实施五:在线基础底图
- 安卓智能地图开发与实施六:离线基础底图
- 安卓智能地图开发与实施十七:使用天地图
- 安卓智能地图开发与实施四:二维地图的MapView与Layers
- 安卓智能地图开发与实施九:地图缩放与旋转
- 安卓智能地图开发与实施三:创建第一个地图程序
- FileInputStream(字节流)与fileReader(字符流) 的区别
- 人人都会的35个Jquery小技巧
- 梯度下降回归
- 矩阵嵌套
- C++学习疑惑解答笔记
- 安卓智能地图开发与实施二十:栅格图层展示
- percpu_init_late
- 浮点数计算
- MATLAB入门0
- linux系统基本操作——系统虚拟机管理
- 集合类的ArrayList的应用实例
- python_xml文件的解析与构建
- Linux用户具备sudo权限和不要启动图形界面
- Ubuntu下安装配置minicom