Facebook Twitter LinkedIn E-mail
magnify
Home Archive for category "GIS"

再谈离线地图工具(2):为GeoServer添加ShapeFile数据源

这里简要介绍一下如何给GeoServer添加一个ShapeFile:

准备测试数据

1. 下载示例ShapeFile nyc_roads.zip ,这个文件含有纽约市道路图。

2. 将其解压得到四个文件 nyc_roads.shp ,nyc_roads.shx, nyc_roads.dbf, nyc_roads.prj

3. 将 nyc_roads 拷贝到 <GEOSERVER_DATA_DIR> (在GeoServer 安装目录的data_dir)的data 子目录下: 在windows 的缺省目录名为:

C:\Program Files (x86)\GeoServer 2.1.0\data_dir\data

使用GeoServer创建Workspace, Workspace 用来管理一组相关的地图图层(Layers),比如道路层,湖泊层,文字层等,多层叠加可以构成完整的地图。

  1. 使用浏览器 进入GeoServer的管理页面http://localhost:8080/geoserver/web.
  2. 登录到GeoServer
  3. 转到Data->Workspace页面
  4. 创建一个新的Workspace,选择Add New Workspace 按钮,将会提升输入Workspace名称,和Namespace URI:
  5. 输入Name: nyc_roads ,URI: http://opengeo.org/nyc_roads, 这个URI可以用来唯一指定中个Workspace, http://opengeo.org可以替换成你自己的域名。
  6. 点击“Submit”提交,GeoServer将会创建nyc_roads Workspace.

创建 Data Store

  1. 转到 Data -> Store 页面。
  2. 为了添加 nyc_roads 数据,需要在GeoServer中创建一个新的Data Store, 点击“Add new Store”按钮,可以看到GeoServer支持很多种数据源: PostGIS NG , Shapefiles 等等。
  3. 因为我们使用的是shapefile,因此选择Shaprfile -ESRI(tm) Shapefile (*.shp)
  4. 在”New Vector Data Source”页面 来配置这个Store的基本信息,如Workspace, Data Source Name, Description (这些都可以根据需要自己定义)
  5. 在”Connection Parameters”下指定nyc_roads.shp 的路径
  6. 点击“Save”,页面将转到Layer 的配置页面。

Layer 配置

  1. 在“New Layer Chooser” ,选择 nyc_road.
  2. 配置“publish”的参数
  3. 为shape文件生成边界矩形参数 (点击” Compute from Data” 自动产生)
  4. 为Shaprfile 指定显示风格 (在Publsih页面)
  5. 选择”line”的缺省风格
  6. 保持配置”Save”

预览Layer

可以通过 Layer Preview 来检验nyc_roads 发布成功,

选择使用OpenLayers来显示地图

使用引路蜂离线地图工具,参见上篇将 MapDigit.ext.config 中 Layers名称改为nyc_roads:nyc_roads

<add key=”GOOGLESATELLITE” value=”http://localhost:8080/geoserver/gwc/service/gmaps?layers=nyc_roads:nyc_roads#zoom={ZOOM}#x={X}#y={Y}” />

同样的方法可以为nyc_roads 生成离线地图包

由此可见,GeoServer可以用来架设自定义的地图服务器,引路蜂地图开发包(Android,Java ME, Blackberry等平台)支持这种自定义的服务器,离线地图工具生成的离线地图包可以直接用在引路蜂地图开发包中。

 

再谈离线地图工具(1):如何使用已有地图数据源生成离线地图包

在前文离线地图下载方法解析离线地图生成工具结构图离线地图生成工具使用方法

我们重点介绍如果使用引路蜂离线地图制作工具的原理和使用方法,离线地图工具缺省支持从Google地图,Bing地图,MapABC地图,Yahoo地图等地图服务器下载制作离线地图包。

但有些情况下,用户自己已经购买了地图数据(如ArgGIS, MapInfo,PostGIS ,ShapeFile等)需要从这些数据来生成离线地图包。

可以利用GeoServer和引路蜂离线地图包来制作离线地图包:步骤如下:

1. 下载安装GeoServer ,GeoServer是Java应用,可以用于Windows ,Mac OS, Linux,本教程使用Windows 系统,在 http://geoserver.org/display/GEOS/Stable 选择 Windows Installer

2. GeoServer安装成功后,在GeoServer 启动菜单有如下几个菜单项:

  • Start GeoServer   启动GeoServer
  • Stop GeoServer   停止GeoServer
  • GeoServer Web Admin Page: GeoServer管理页面

首先启动GeoServer,然后进入GeoServer管理页面, 缺省用户名和密码为admin , geoserver.

3. 首先看看随GeoServer安装时自带的地图数据   Data –>Layers

我们想生成Topp:states 数据的离线地图包,可以在Data -> Layer Preview 中使用 OpenLayers来预览该图层:

4. GeoServer 集成了一个GeoWebCache ,是一个采用Java实现用于缓存WMS(Web Map Service)Tile的开源项目。当地图客户端请求一张新地图和Tile时,GeoWebCache将拦截这些调用然后返回缓存过的Tiles。如果找不到缓存再调用服务器上的Tiles,从而提高地图展示的速度。实现更好的用户体验.

这里不详细介绍GeoWebCache ,只要知道它提供一种和Google Map类似的Tile访问方法 。可以根据Tile的X,Y和Zoom来访问一个图片:

比如安装好GeoServer,在IE地址栏输入:

http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states&zoom=1&x=0&y=0 ,表示Zoom为1即是X=0和Y=0的Tile:

5. 下载引路蜂离线地图工具

离线工具下载 http://www.imobilebbs.com/download/tools/downloader.msi 安装版

http://www.guidebee.info/download/tools/MapTileDownloader.rar 绿色版

离线工具需要.Net Framework Runtime,如果您的计算机上未安装,请下载安装

6.  打开引路蜂离线地图工具的安装目录: 找到 MapDigit.exe.config ,这是 MapDigit.exe的配置文件,这个配置文件缺省定义了多个地图服务器(软件Google地图,Bing地图等)。

我们重用GOOGLESATELLITE这个类型,将它重新定义为:

<add key=”GOOGLESATELLITE” value=”http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states#zoom={ZOOM}#x={X}#y={Y}” />

可以对比一下 URL:

http://localhost:8080/geoserver/gwc/service/gmaps?layers=topp:states&zoom=1&x=0&y=0

将& 改成#  Zoom=1 , x=0 ,y=  改成zoom={ZOOM},x={X},y={Y}从而就为Layer: topp:states 定义好了URL模板,然后启动MapDigit.exe ,在下来框中选择 GOOGLESATELLITE。

后面就可以和下载Google地图,Bing地图一样来制作离线地图包了,地图数据源来自GeoServer。离线地图生成工具使用方法

限于篇幅,将在下一篇介绍如果使用ShapeFile做为GeoServer的数据源。