- 浏览: 7330204 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
GIS的学习(二十四)android异步调用geoserver wms中的地图
在geoserver的客户端通过wms的GetMap实现地图的图片的调用和下载。
具体的API如下:
GetMap¶ The GetMap operation requests that the server generate a map. The core parameters specify one or more layers and styles to appear on the map, a bounding box for the map extent, a target spatial reference system, and a width, height, and format for the output, The response is a map image, or other map output artifact, depending on the format requested. GeoServer provides a wide variety of output formats, described in WMS output formats. The information needed to specify values for parameters such as layers, styles and srs are supplied by the Capabilities document. A good way to get to know the GetMap parameters is to experiment with the WMS Reflector.
The standard parameters for the GetMap operation are: Parameter Required? Description service Yes Service name. Value is WMS. version Yes Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3. request Yes Operation name. Value is GetMap. layers Yes Layers to display on map. Value is a comma-separated list of layer names. styles Yes Styles in which layers are to be rendered. Value is a comma-separated list of style names, or empty if default styling is required. Style names may be empty in the list. srs or crs Yes Spatial Reference System for map output. Value is in form EPSG:nnn. crs is the parameter key used in WMS 1.3.0. bbox Yes Bounding box for map extent. Value is minx,miny,maxx,maxy in units of the SRS. width Yes Width of map output, in pixels. height Yes Height of map output, in pixels. format Yes Format for the map output. See WMS output formats for supported values. transparent No Whether the map background should be transparent. Values are true or false. Default is false bgcolor No Background color for the map image. Value is in the form RRGGBB. Default is FFFFFF (white). exceptions No Format in which to report exceptions. Default value is application/vnd.ogc.se_xml. Other valid values are application/vnd.ogc.inimage and application/vnd.ogc.se_blank. GeoServer provides a number of useful vendor-specific parameters, which are documented in the WMS vendor parameters section. An example request for a PNG map image using default styling is: http://localhost:8080/geoserver/wms? request=GetMap &service=WMS &version=1.1.1 &layers=topp%3Astates &styles= &srs=EPSG%3A4326 &bbox=-145.15104058007,21.731919794922,-57.154894212888,58.961058642578& &width=780 &height=330 &format=image%2Fpng
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/btnFirst" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="异步下载方式一" > </Button> <Button android:id="@+id/btnSecond" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="异步下载方式二" > </Button> <FrameLayout android:layout_width="fill_parent" android:layout_height="match_parent" android:id="@+id/frameLayout" > <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerInside" android:padding="2dp" > </ImageView> <ProgressBar android:id="@+id/progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> </ProgressBar> </FrameLayout> </LinearLayout>
主要配置文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.easyway.geoserver.map" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".GeoServerGetMapActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
具体代码实现如下:
package com.geoserver.map; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; /** * 异步下载图片的两种方式 * * * 本实例的目的通过geoserver 的wms调用相关的地图图片的服务 * 采用的操作为GetMap实现。相关的操作。 * * * * * @Title: * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:
* @Date:2012-9-10 * @author longgangbai * @version 1.0 */ public class GeoServerGetMapActivity extends Activity implements OnClickListener{ private Button btnFirst; private Button btnSecond; private ProgressBar progress; private FrameLayout frameLayout; private Bitmap bitmap=null; ProgressDialog dialog=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnFirst=(Button)this.findViewById(R.id.btnFirst); progress=(ProgressBar)this.findViewById(R.id.progress); progress.setVisibility(View.GONE); frameLayout=(FrameLayout)this.findViewById(R.id.frameLayout); btnFirst.setOnClickListener(this); btnSecond=(Button)this.findViewById(R.id.btnSecond); btnSecond.setOnClickListener(this); } //前台ui线程在显示ProgressDialog, //后台线程在下载数据,数据下载完毕,关闭进度框 @Override public void onClick(View view) { final String urlString=getGeoServerGetMap(); switch(view.getId()){ case R.id.btnFirst: dialog = ProgressDialog.show(this, "", "下载数据,请稍等 …", true, true); //启动一个后台线程 handler.post(new Runnable(){ @Override public void run() { //这里下载数据 try{ URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setDoInput(true); conn.connect(); InputStream inputStream=conn.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream); Message msg=new Message(); msg.what=1; handler.sendMessage(msg); } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); break; case R.id.btnSecond: MyASyncTask asyncTask=new MyASyncTask(); asyncTask.execute(urlString); break; } } /**这里重写handleMessage方法,接受到子线程数据后更新UI**/ private Handler handler=new Handler(){ @Override public void handleMessage(Message msg){ switch(msg.what){ case 1: //关闭 ImageView view=(ImageView)frameLayout.findViewById(R.id.image); view.setImageBitmap(bitmap); dialog.dismiss(); break; } } }; public String getGeoServerGetMap(){ StringBuffer sb=new StringBuffer(); sb.append("http://10.100.108.20:8080/geoserver/wms?");//wms路径 sb.append("request=GetMap"); //geoserver的操作 sb.append("&service=WMS"); //服务的类型 sb.append("&version=1.1.1"); //版本 sb.append("&layers=topp:states"); //图层的名称 sb.append("&srs=EPSG:4326"); //图源的类型 sb.append("&bbox=-145.15104058007,21.731919794922,-57.154894212888,58.961058642578"); //图层的范围 sb.append("&width=780"); sb.append("&height=330"); sb.append("&format=image/png");//图片的格式 return sb.toString(); } class MyASyncTask extends AsyncTask<String, Integer, Bitmap> { @Override protected Bitmap doInBackground(String... params) { Bitmap bitmap=null; try { URL url = new URL(params[0]); HttpURLConnection con=(HttpURLConnection) url.openConnection(); con.setDoInput(true); con.connect(); InputStream inputStream=con.getInputStream(); bitmap=BitmapFactory.decodeStream(inputStream); inputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bitmap; } //执行获得图片数据后,更新UI:显示图片,隐藏进度条 @Override protected void onPostExecute(Bitmap Result){ ImageView imgView=(ImageView)frameLayout.getChildAt(0); imgView.setImageBitmap(Result); ProgressBar bar=(ProgressBar)frameLayout.getChildAt(1); bar.setVisibility(View.GONE); } } }
发表评论
-
【转】Django resources
2014-01-23 14:35 10801Django resources This page li ... -
使用国内镜像源来加速python pypi包的安装
2014-01-16 11:16 197801pipy国内镜像目前有: http://pypi.d ... -
[转 ]vagrant使用简介
2014-01-10 13:53 257251> 简介: vagrant提供了易于配置,重复性 ... -
[转]在Java中调用Python
2014-01-07 13:08 9209在执行之前都需要把jython对应的包加载进去,这个是必须的 ... -
[转]Eclipse配置PyDev插件
2014-01-02 14:25 2831安装python解释器 安装PyDev: 首 ... -
RestFuse的研究(五) Http请求的封装
2014-06-14 15:50 3622在RestFuse中封装了Http请 ... -
RestFuse的研究(四) Junit的Statement的分析
2013-12-06 11:46 1664在RestFuse提供了多种单 ... -
RestFuse的研究(三) Junit的Rule的使用和分析
2013-12-06 11:01 2233在junit中定义一些可以公用的规则(R ... -
RestFuse的研究(二) Junit的Runner的分类和模式
2013-12-06 10:40 1597在Junit4中的调用JunitCore可以采 ... -
RestFuse的研究(一) HttpJunitRunner的实现
2013-12-06 10:11 1742在RestFuse是一种针对Rest We ... -
[转]An open-source JUnit extension to test HTTP/REST APIs
2013-12-06 09:57 1098http://developer.eclipsesource ... -
TestNG简单的学习(十三)TestNG中Junit的实现
2013-12-04 09:00 3352TestNG和junit的整合 ... -
TestNG简单的学习(十二)TestNG运行
2013-12-03 09:08 51573文档来自官方地址: ... -
TestNG简单的学习(十一)TestNG学习总结
2013-12-03 09:08 14173最近一直在学习关于TestNG方面的知识,根 ... -
TestNG简单的学习(十)TestNG @Listeners 的使用
2013-12-03 09:07 8686TestNG官方网站: http://testng.or ... -
TestNG简单的学习(九)TestNG Method Interceptors 的使用
2013-12-03 09:07 2708TestNG官方网站: http://testng ... -
TestNG简单的学习(八)TestNG Annotation Transformers 的使用
2013-12-03 09:07 2803TestNG官方网站: http://testng.or ... -
TestNG简单的学习(七)TestNG编程方式运行
2013-12-02 09:22 2448TestNG官方网站: http://testng.or ... -
TestNG简单的学习(六)测试工厂注释的使用
2013-12-02 09:22 2778TestNG官方网站: http://testng.or ... -
TestNG简单的学习(五)参数化测试数据的定制
2013-12-02 09:22 2696TestNG官方网站: http://testng.or ...
相关推荐
html版本Leaflet调用地图 主要使用Leaflet调用ahocevar的geoserver wms服务
在调用GeoServer发布的地图时,OpenLayers主要通过WMS GetMap 请求来获取地图切片。以下是一个基本的OpenLayers配置示例,展示了如何加载GeoServer发布的地图: ```javascript var map = new ol.Map({ target: '...
总结来说,GeoServer安装配置后,可以发布WMS服务,这涉及到在UDig中对shp文件进行符号化并生成SLD文件。需要编辑SLD文件以适配正确的字符集,然后在GeoServer中创建工作区、数据存储、图层,并应用SLD样式。最终,...
在本教程中,我们将深入探讨如何使用Leaflet.js库与GeoServer集成,以显示通过WMS(Web Map Service)发布的地图数据。Leaflet是一个轻量级的JavaScript库,专为Web上的交互式地图设计,而GeoServer是一个开源的...
将WMS集成到Mapbox中,可以让用户访问和展示由Geoserver等地图服务提供商发布的地理数据。Geoserver是另一个开源项目,它支持WMS服务的发布和管理,能够处理多种GIS数据格式。 要实现Mapbox加载WMS,首先需要在...
如何发布数据等描述,简单的操作提示,geoserver发布wms wfs等服务
在本教程中,我们将深入探讨如何使用Leaflet.js库调用通过Geoserver发布的PostGIS数据库中的地理空间数据,创建地图图层。首先,我们来理解每个组件的作用: 1. **Leaflet.js**: Leaflet是一个轻量级的JavaScript库...
- **添加WMS图层**:使用L.tileLayer与GeoServer的WMS服务接口连接,将地图数据叠加到Leaflet地图上。 - **监听地图点击事件**:使用Leaflet的`map.on('click', function(event) {...})`监听地图点击事件,获取...
但是,在面对庞大地图数据、庞大的用户交互时,如果仅仅采用 GeoServer 作为 GIS 服务器,势必导致地图数据传输缓慢甚至获取服务出错。为了解决这个问题,本文研究了 GeoServer 中的瓦片缓存机制,包括瓦片金字塔的...
- 添加图层:通过调用`L.tileLayer`方法,添加由GeoServer提供的WMS图层到地图上。 3. **实现空间查询** - 创建交互元素:使用Leaflet的`L.Marker`、`L.Polygon`等工具,让用户可以绘制兴趣区域或选择特定地点。 ...
在"geoServer+openLayers简单小例子"中,OpenLayers被用来调用通过GeoServer发布的地图数据。这通常涉及到以下几个步骤: 1. **配置GeoServer**:首先,你需要在本地安装GeoServer并配置它来发布你的地图数据。这...
在GIS(地理信息系统)领域,GeoServer是一款开源的、基于Java的服务器软件,它能够发布地理数据并提供WMS(Web Map Service)和WFS(Web Feature Service)等OGC(Open Geospatial Consortium)标准服务。...
从影像数据、矢量数据、切片数据等多方面,对geoserver的优化提出完整,全方位的优化策略,是迄今为止最新最详细的geoserver优化方案。
OpenLayers则是一个强大的JavaScript库,用于在网页中创建交互式的二维地图。 1. **Geoserver的使用**:在Tomcat这样的应用服务器中部署Geoserver,无需安装版,只需解压并配置即可。这简化了部署过程,使得地理...
在本案例中,“map_shp”包含全国省界和县道的数据,这些数据在GeoServer上注册后,可以通过WMS服务获取到地图图像,或者通过WFS服务获取原始的地理空间数据。 OpenLayers 3是实现地图交互的主要工具。它提供了丰富...
在IT行业中,尤其是在Web GIS(Web地理信息系统)领域,Cesium和Geoserver是两个非常重要的工具。Cesium是一款强大的JavaScript库,用于创建交互式的3D地球浏览器,而Geoserver则是一个开源的GIS服务器,用于发布和...
GeoServer是一款开源的地理信息系统(GIS)服务器,它能够发布和管理地理空间数据,并提供Web服务接口,如WMS(Web Map Service)和WFS(Web Feature Service)。在本文中,我们将深入探讨GeoServer 2.18版本,特别...
在GIS领域,Geoserver是一款开源的地理信息系统服务器,它能够发布、管理和处理地理空间数据。在处理大量请求时,为了提升服务响应速度和用户体验,配置图层缓存是必不可少的步骤。本篇文章将深入探讨如何在...
我们将重点关注标题中提到的"Leaflet调用wms地图服务"以及描述中的"使用netcore调用wms地图服务"。 首先,让我们了解Leaflet。Leaflet是一个轻量级、高性能的JavaScript库,专门用于创建交互式地图应用。它提供了...
总结起来,"地图服务器基于geoserver改造"是一个将开源GeoServer与Tomcat结合的项目,旨在提供一个易于部署和使用的GIS服务。改造的核心在于利用Tomcat的便利性和GeoServer的强大功能,为用户提供一个高效、稳定的...