当前位置:文档之家› 使用openlayers调用本地瓦片数据方案

使用openlayers调用本地瓦片数据方案

使用openlayers调用本地瓦片数据方案
使用openlayers调用本地瓦片数据方案

使用openlayers调用本地瓦片数据方案

身边经常有一些朋友在与GIS项目的时候抱怨没有地图数据,而实际上他们在做具体的应用的时候常常仅仅是需要一个地图来使得应用程序变得更漂亮。以前自己也遇到过一些这些问题,在08年公司做兼职的时候,就行开发一个离线的GIS数据包,这些的话,对于一些小型的应用程序就不用花大笔的钱去购买地图数据。

对于以上的问题,大家常常采用的是两种解决方案:一种解决方案就是直接使用一些第三方数据服务,例如Google maps 或者是MapABC的API来实现自己的功能,这种方法开发比较简单,很容易上手,但是一个重要问题就是给一些不能上网的客户来说,这样的开发方式就不适合了;另外一种方式就是让客户购买地图数据去支持应用程序,这样的方式用户需要花一些钱去购买地图数据(我以前在做项目的过程中,由于地图数据量不是很大,所以也可以用一些基础图层,然后再加上一些影像数据进行数字化)。其实上述的两种方式是目前大多数应用程序解决地图数据的主要方法,下面本片文章介绍第三种方式来实现(特在此申明,文章中提出的方法仅仅是提供交流和学习使用,如果使用商业用途用户自行负责)。

如果想从本地访问瓦片数据的话,首先需要解决的问题是从一些公共地图服务中获取瓦片数据。在这里将使用工具https://www.doczj.com/doc/6e17926086.html,/?page_id=66下载地图的瓦片数据。瓦片数据下载到本地之后,可以看到瓦片的数据命名

“m_14_13519_6253.png”,其中m后面的14代表的目前的缩放级别,“13519”代表的是瓦片数据的横坐标,“6253”代表的是瓦片数据的纵坐标。对于Google maps用的是墨卡托投影方式,将地图投影成了一个40075016.685578488 m的正方形坐标的形式,然后根据缩放级别将这个正方形分割成不不同粒度的小正方形,这种分割的形式采用的是四叉树索引的方式进行。具体的分割如下图所示。

首先在level 0级别的时候,就是将这个正方形划分为一个256 像素的图片,如果化成米的形式的话,就是40075016.685578488的正方形,从这里可以计算出比例为:40075016.685578488/256 = 156543.033928041 (米/像素)。对于level 1级别时,然后再将这个正方形划分为一个4个256像素的正方形,此时计算出的比例为:40075016.685578488/512 = 78271.51696402 (米/像素)。

对于OpenLayers来说,首先会向wms服务发送一个请求,这个请求会有一个bbox 参数,参数的形式是这个box的左上角坐标和右下角坐标的值,对于后来服务来说,就是将这个box的图片发送到前台去显示。对于要使用本地的瓦片数据,根据上面对于瓦片数据的命名方式我们可以知道需要求三个参数:缩放级别zoom、横坐标 x和纵坐标的值 y。而对于请求来说,只有bbox的值,所以需要根据根据bbox的值来求出x,y和缩放级别的值zoom。首先从前台来说,展现的总图片应该是一个360°×360°的正方形的图片,这是对于缩放级别为一级的来说的;对于一个bbox中的经纬度,可以计算出缩放级别:

Java代码:

double mapUnit = 360/(x1-x0);//156543.033929687

double z = Math.log(mapUnit)/Math.log(2);

long zoom = Math.round(z);

计算出缩放级别之后,然后根据公式x = ((20037508.343 * 2 * ( x0 + 180 ) / 360 ) / pixelResolution)/256可以计算出x的坐标,同理根据公式y = ((20037508.343 * 2 * ( y0 + 90 ) / 360 ) / pixelResolution)/256可以计算出y的坐标,根据计算结果,可以直接访问到这个缩放级别的的256×256的图片,然后用 openlayer将图片展现到前天的界面中来。关于JavaScript代码如下:

JavaScript Code :

function init(){

map = new OpenLayers.Map(“map”,{numZoomLevels :

5,minScale:216281.173********,restrictedExtent: extent

});

map.maxExtent = new OpenLayers.Bounds(-180, -90, 180, 270);

var ol_wms = new https://www.doczj.com/doc/6e17926086.html,yer.WMS(

“basic map”,

“test”,

{layers: “basic”,format: “image/png”},{transitionEffect:

‘resize’}

);

map.addLayers([ol_wms]);

selectControl = new OpenLayers.Control.SelectFeature(layer);

map.addControl(selectControl);

selectControl.activate();

map.addControl(new https://www.doczj.com/doc/6e17926086.html,yerSwitcher());

map.zoomToMaxExtent();

}

如上述代码所属,在前台添加一个wsm的图层,他会想后台发送一个请求,这个请求参数是一个bbox,然后根据请求过来的参数进行分析,计算出需要返回给前台的图片的名称。

上述过程能够完成一个地图底图的应用,方式仅供学习使用,如果需要将显示相关信息的话,可以将点信息存数到数据库中或者是文本文件中,然后在使用openlayer的vector图层添加上去

var layer = new https://www.doczj.com/doc/6e17926086.html,yer.Vector(“POIs”, {

strategies: [new OpenLayers.Strategy.BBOX({resFactor: 1.1})], protocol: new OpenLayers.Protocol.HTTP({

url: “TextLayer”,

format: new OpenLayers.Format.Text()

})

});

如果是wgs1984的坐标体系的话,需要将坐标进行简单的转换,对于经度来说,和之前的一样,而对于纬度来说,首先换算成莫非托投影形式,然后将换成[-180,90,180,270]的坐标形式,转换算法如下:

x = Math.Log(Math.Tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180) * 20037508.343 / 180

x= x+ 20037508.343) * 360 / (20037508.343 * 2) – 90

最后这些都会添加到地图上,形式一个与业务相关的地图信息系统。总的上来说这样的实现方式可以满足一些只需要底图数据的系统,但是对于一些需要原始数据的应用系统来说,无法满足,因为无法获取底图的数据信息。

地图切片原理

地图切片原理 何为瓦片?瓦片即网格中有多个类似瓦片的图片集。瓦片数据是将矢量或影像数据进行预处理,采用高效的缓存机制(如金字塔)形成的缓存图片集,采用“级、行、列”方式进行组织,可在网页中快速加载。因此,瓦片地图加载是根据客户端请求的地图范围和级别,通过计算行列号获取对应级别下网格的瓦片(即服务器预裁剪的图片),由这些瓦片集在客户端形成一张地图,如图2.21所示。 矢量地图和瓦片地图各具特点和优势,两者可以结合应用。矢量地图实时生成,可以对地图数据进行在线编辑、查询分析,具有空间关系,能够支持网络分析、空间分析等应用。瓦片地图由于是预裁剪的缓存图片集,网络加载速度较快、效果好,常作为地图底图。 地图切片:采用预生成的方法存放在服务器端,然后根据用户提交的不同请求,把相应的地图瓦片发送给客户端的过程,它是一种多分辨率层次模型,从瓦片金字塔底层到顶层,分辨率越来越低,但表示的地理范围不变。 地图缓存:又称地图瓦片,是一个包含了不同比例尺下整个地图范围的地图切片的目录,即一个缓存的地图服务就是能够利用静态图片来快速地提供地图的服务。 这里对地图切片中的几个重要的概念做一个介绍。 原理 几个概念: 在地图切片中,有三个比较重要的概念:1、切片原点;2、切片分辨率(比例尺);3、初始切片范围。下面就这三个概念做一个简单的介绍。 1、切片原点 切片原点一般有两种:1、左上角;2、左下角。大部分切片的算法是采用左上角作为切片原点的,例如天地图、Arcgis Server等等。切片原点定义了我的第一个 256*256的切片的位置。 2、切片分辨率(比例尺) 切片分辨率和比例尺是一一对应的。比例尺指的是我的图上一个单位代表实际多少距离,而分辨率代表屏幕上一个像素代表实际多少距离,因此,当定了一个之后,对应的另一个也确定了。 切片分辨率(比例尺)影响的是在该分辨率(比例尺)下,我的一个256*256的图片的实际坐标是多少。 3、初始化切片范围 初始化切片范围是指我是按照多大的图幅进行切片的,影像的是我在这个分辨率下总共能切多少个256*256的切片。

基于瓦片的web地图

做的一个网站中需要一个电子地图,姑且叫他web-gis吧!基本的实现机制是网页中的图片动态浏览,mapabc(也就是图盟:https://www.doczj.com/doc/6e17926086.html,/)的网页地图应该也是基于这一机制实现的,google地图搜索就是mapabc提供的,当然我做的这个在功能方面和人家的还是差的远。去年,还差点决定到这家公司面试去那。 现在这个网站中的电子地图开始时也不是我自己写的,代码来自于一个俄罗斯人,使用了mootools工具包,我只是在他代码的基础上进行了功能和界面的修改和增补。地图图片是由很多小的图片组成的;也就是把一张大的地图图片,根据清晰度剪切成许多小的图片,再实时加载呈现出来。当地图上有拖拽、双击等操作时,也需要重新加载地图。你保存一下google 地图,就可以看到这些剪切出来的小图片了。小图片的文件名称都是按照规则命名的,这样也是js加载图片的需要。在地图上添加标识,是在地图上添加一个div,之后在它上面添加一个标识图片;当然这个div也要响应地图的所有事件。将鼠标放在标识上方后出现提示框,点击提示框中的文字可以进行一些相关操作!这个提示框的实现也有很多例子!我不知道地图搜索部分是如何实现的,估计应该是通过要搜索的字符检索匹配的地点和地点坐标。通过页面上的菜单可以在的图上显示这些地方,清晰度可以控制的。现在还有一些细节方面的问题需要修改!最后一张是操作成功后用ExtJs做的信息提示框!

网上有一个比较成熟的开源的地图浏览器,网址是:https://www.doczj.com/doc/6e17926086.html,/projects/gsiv/,

初始版本的名字叫Giant Scalable Image Viewer (GSIV),现在官方网站上又出现了一个版本Giant-Ass Image V iewer(GSV)。现在这个开源项目只是实现了图片的浏览,并且在IE下还有些问题。有兴趣的朋友可以研究一下!

WebGIS中瓦片地图关键技术研究

2012年第2期·北京测绘· [收稿日期] 2 011-10-27[作者简介] 苏旭明( 1966—),女,汉族,湖南桃江人,高级工程师,硕士,主要从事地图制图和地理信息系统研究。WebGIS中瓦片地图关键技术研究 苏旭明 谭建成 (中华测绘服务公司,北京100088 )[摘 要] 针对WebGIS系统的特点,提出利用金字塔瓦片地图技术在服务器端预先生成不同级别的瓦片地图方法, 提高地图的生成、发布、显示和浏览效率,减轻服务器负载和网络传输负担。文中简要介绍了瓦片地图技术的实现模型。并对瓦片地图金字塔模型的构建、瓦片地图金字塔数据的组织、瓦片地图索引机制建立等关键技术进行了阐述。 [关键词] W ebGIS;瓦片地图;金字塔模型;四叉树[中图分类号] P283.7 [文献标识码] B [文章编号] 1 007-3000(2012)02-4网络地理信息系统(WebGIS)是Web技术与GIS技术相结合的产物,随着Internet技术和计算机技术的飞速发展,WebGIS已成为当前GIS领域的研究热点。其实现方式多种多样,其 中以基于HTTP、XML、GML的B/S结构的瘦客户端和Ajax(AsynchronousJavaScrip t andXML)的RIA(Rich Internet Application,富网络应用或富客户端)技术模式为主流。其中后者用户只要拥有一台上网的计算机和任一款浏览器,不需要安装任何插件或其他客户端软件,就可以使用WebGIS带来的服务。客户端只完成数据 量较小的简单操作和应用功能, 其它所有的基础性、全局性的GIS功能操作都集中在服务器端实现,因此,服务器端的实现方式会直接决定 WebGIS系统的性能。而其中Web地图的生成、 发布、显示和浏览速度是决定WebGIS系统性能的关键。传统的WebGIS系统是客户端发送一次地图浏览请求,服务器根据请求实时生成一张图片, 时间长、效率低、出图慢。而利用金字塔瓦片地图技术在服务器端预先生成不同级别的瓦片地图,能大大提高地图的生成、发布、显示和浏览速度效率,极大地改进客户端和服务器端的交互效率,减轻服务器负载和网络传输负担。 1 瓦片地图技术的实现模型 瓦片地图技术的实现模型如下图图1所示。主要由服务器端的金字塔瓦片地图库的构建和客户端的Aj ax技术组成 。图1 瓦片地图技术的实现模型 服务器端的金字塔瓦片地图库的构建方法: 主要是对数据库中的空间数据进行符号化显示和分层瓦片切割(瓦片大小可以是128×128像 素,256×256像素,512×512像素等),生成不同层次的电子地图瓦片,建立地图瓦片金字塔模型,采用数据库或文件目录的方式对瓦片地图数 9

OpenLayers二维地图使用教程

OpenLayers 1 OpenLayers简介 OpenLayers是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范,OpenLayers 采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。采用OpenLayers作为客户端不存在浏览器依赖性。由于OpenLayers采用JavaScript语言实 现,而应用于Web浏览器中的DOM(文档对 象模型)由JavaScript实现,同时,Web浏览 器(比如IE,FF等)都支持DOM。OpenLayers APIs采用动态类型脚本语言JavaScript编写, 实现了类似与Ajax功能的无刷新更新页面, 能够带给用户丰富的桌面体验(它本身就有一 个Ajax类,用于实现Ajax功能)。 目前,OpenLayers所能够支持的Format有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。OpenLayers所能够利用的地图数据资源“丰富多彩”,在这方面提供给拥护较多的选择,比如WMS、WFS、GoogleMap、KaMap、MSVirtualEarth、WorldWind等等。当然,也可以用简单的图片作为源。 在操作方面,OpenLayers 除了可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠加等不同的操作,甚至可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。例如,它可以为OpenLayers 添加网络处理服务WPS 的操作接口,从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。同时,在OpenLayers提供的类库当中,它还使用了类库Prototype.js 和Rico 中的部分组件,为地图浏览操作客户端增加Ajax效果。 2 Openlayers基本使用方法 Openlayers是使用Javascript编写的脚本,与网页设计技术密切相关,因此在使用之前需要掌握一定得相关知识,例如html、css、javascript等。编辑工具推荐使用:EditPlus。 1)下载并拷贝源代码即相关文件 到Openlayers官方网站https://www.doczj.com/doc/6e17926086.html,下载源代码压缩包,解压后可以看到其中的一些目录和文件。需要拷贝的文件和目录有:根目录下的【OpenLayer.js】文件、根目录下的【lib】目录、根目录下的【img】目录、根目录下的【theme】目录。将这4项内容拷贝到你网站的Scripts目录下(当然,这个只是例子,自己的网站程序目录结构自己说了算,只要保证OpenLayers.js,/lib,/img,/theme在同一目录中即可)。

制作自己的Web服务瓦片地理底图

制作自己的Web服务瓦片地理底图 最近的Web服务开发过程中遇到的问题是:如何制作自己的瓦片地理底图。因为:1)在单位内网中使用,不能通过外网直接调用高德、百度、或者谷歌的在线地图;2)主要涉及海域的中、小比例尺应用,即使有高德离线地图,也不实用;3)只涉及轻量级、简单的Web服务,不想用ArcGIS Server 等高端系统作为后端支撑。最后拟定的实施方案:1)采用ETOPO1、GEBCO_2014网格地形数据作为基础数据,绘制地理底图;2)通过Global Mapper软件将地理底图切割成OpenStreetMap(OSM)方式组织的瓦片地图;3)利用免费开源的Leaflet JS库实现地图交互。下面一一道来,供作参考。 1.绘制地图 1.1 下载ETOPO1数据 首先从美国国家海洋和大气管理局(NOAA)的环境信息中心下载ETOPO1全球地形数据,网址https://https://www.doczj.com/doc/6e17926086.html,/mgg/global/global.html。ETOPO1的分辨率为1个弧分(约1.8公里),下载数据地理范围为:经度 60°E~ 180°E,纬度 20°S~60°N,图1为Sufer绘制的地形晕渲图。(注:如果机器内存及软件处理能力足够,可全部采用GEBCO_2014数据绘图,不一定需要ETOPO1数据。) 图1:ETOPO1地形晕渲图

1.2 下载GEBCO_2014数据 从英国海洋数据中心(BODC)下载最新的通用大洋水深图数据GEBCO_2014,网址https://www.doczj.com/doc/6e17926086.html,/data_and_products/gridded_bathymetry_data。GEBCO制图项目由国际水道测量组织(IHO)和联合国教科文组织下属的政府间海洋学委员会(IOC)联合指导,并由英国海洋数据中心(BODC)负责更新与维护。GEBCO_2014网格数据的分辨率为30弧秒(约0.9公里),下载数据地理范围为:经度 102°E~ 140°E,纬度 0°~42°N,图2为Sufer绘制的地形晕渲图。 图2:GEBCO_2014地形晕渲图

openlayers经典例子

Openlayers经典例子 案例地址 (2) 一. Popup (2) 二、图层叠加 (3) 三、编辑功能 (5) 四、鹰眼 (7) 五、书签及样式 (7) 六、改变显示内容 (9) 七、SLD (9) 八、动画效果 (10) 九、获得属性 (11) 十、局部放大 (12) 十一、记录上次操作历史 (12) 十二、鼠标滚轮 (13) 十三、鼠标坐标 (13) 十四、标签 (14) 十五、全屏 (14) 十六、显示缩放比例 (15)

案例地址 https://www.doczj.com/doc/6e17926086.html,/releases/OpenLayers-2.10/examples/ https://www.doczj.com/doc/6e17926086.html,/dev/examples/ 一.Popup https://www.doczj.com/doc/6e17926086.html,/dev/examples/sundials.html https://www.doczj.com/doc/6e17926086.html,/dev/examples/sundials-spherical-mercator.html

https://www.doczj.com/doc/6e17926086.html,/dev/examples/select-feature-openpopup.html 二、图层叠加 https://www.doczj.com/doc/6e17926086.html,/dev/examples/layerswitcher.html

https://www.doczj.com/doc/6e17926086.html,/dev/examples/wmts-getfeatureinfo.html https://www.doczj.com/doc/6e17926086.html,/dev/examples/wmts-capabilities.html

《Google Map中的瓦片》

《Google Map中的瓦片》 分类:地图2013-07-03 11:56631人阅读评论(0)收藏举报 一、墨卡托投影google map使用的是EPSG:900913标准墨卡托投影(等角圆术地图投影)y = R*ln(tan(pi/4 + a/2)) x = R*b 当y等于piR时,投影图正好为一个正方形,可行到纬度为85.05113度,把以Google map 的最大纬度为 [-85.05113,85.05113],最大经度为[-180,180]。赤道长度为6378137米,那么根据公式可求科最大边 界[-20037508.342789244,20037508.342789244]米。 二、瓦片金字塔google map是由256*256的图片拼接而成的,称为瓦片。在初始等级(0)时,整个地球只投影在一张瓦 片上,也就是256像素代表了40075016.685578488米。即 40075016.685578488/256=156543.033928041( 米/像素)。 缩入由四叉树实现,即放大一个级别后,原来一张图片分裂成4张。见下图 三、瓦片url形如: https://www.doczj.com/doc/6e17926086.html,/vt/lyrs=m@180000000&hl=zh-CN&gl=cn&src=app&x=3&y=1&z=2&s =Ga mt0:服务器名(Google Map有四个服务器) hl:语言 x:瓦片X轴的信息编号 y:瓦片Y轴的信息编号 z:瓦片的缩放级别

s:""和"Galileo"共8个字符(无实际意义) 计算关系: mt = (x + y) % 4 s = (3 * x + y) % 8 空白瓦片url https://www.doczj.com/doc/6e17926086.html,/intl/zh-CN_cn/mapfiles/transparent.png 注意:瓦片信息编号是从左上角(0,0)开始的。

Openlayers教程

OpenLayers教程 1开始使用openlayers 1.1设置 先到它的官方网站https://www.doczj.com/doc/6e17926086.html,下载他的压缩包,解压。 拷贝目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的Scripts目录下(当然,这个只是例子,您网站的目录结构您自己说得算,只要保证OpenLayers.js,/lib,/img在同一目录中即可)。然后,创建一个****.html作为查看地图的页面。 2试验openlayers 环境:geoserver1.7 Openlayers2.4 Dreamviever8 2.1第一个地图窗口 目标:用openlayers加载geoserver wms。 步骤: (1)空白html文件 (2)插入div-map (3)为div付风格 以上为未加载地图的静态页面 代码为: 效果为: (4)插入openlayers代码引用 (5)写js代码,主要是init() 第一个地图窗口就完成了 注1.js中defer的作用是页面加载完成后,执行脚本。

注2.222 2.2控制地图与div的占据区域 目标:让地图默认占满展现区 方法: 设置map的options,由其中两个因素决定:maxExtent-最大地图边界;maxResolution-最大解析度。 当maxExtent设置为地图的最大边界后,maxResolution设置为auto,那地图就占满DIV。 var options = { controls: [], maxExtent: bounds, maxResolution: "auto", projection: "EPSG:4326", numZoomLevels: 7, units: 'degrees' }; map = new OpenLayers.Map('map',options); 2.3地图控制-尺度缩放 目标:填加尺度缩放控件 步骤: (1)map初始化赋参数 var options = { controls: [], //scales: [50000000, 30000000, 10000000, 5000000], maxExtent: bounds, maxResolution: "auto", projection: "EPSG:4326", numZoomLevels: 7, (表示有几个缩放级别) units: 'degrees' }; map = new OpenLayers.Map('map',options); (2)填加控件,代码 map.addControl(new OpenLayers.Control.PanZoomBar({ position: new OpenLayers.Pixel(2, 15)(右边距,上边距) })); 思考:级别的计算,个人推测由(maxResolution- minResolution)/ numZoomLevels,但是默认值是书面日后再细究。

geoserver

●利用具有地理空间位置信息的数据制作地图。其中将地图定义为地理数据可视的表现。 这个规范定义了三个操作: ?GetCapabitities 返回服务级元数据,它是对服务信息内容和要求参数的一种描述; ?GetMap 返回一个地图影像,其地理空间参考和大小参数是明确定义了的; ?GetFeatureInfo(可选)返回显示在地图上的某些特殊要素的信息 WFS: Web Feature Service(Web要素服务) ●Web 地图服务返回的是图层级的地图影像, ●Web要素服务(WFS)返回的是要素级的GML编码,并提供对要素的增加、修改、删 除等事务操作,是对Web地图服务的进一步深入。OGC Web要素服务允许客户端从多个Web要素服务中取得使用地理标记语言(GML)编码的地理空间数据,定义了五个操作: ?GetCapabilites 返回Web要素服务性能描述文档(用XML描述); ?DescribeFeatureType 返回描述可以提供服务的任何要素结构的XML文档; ?GetFeature 一个获取要素实例的请求提供服务; ?Transaction 为事务请求提供服务; ?LockFeature 处理在一个事务期间对一个或多个要素类型实例上锁的请求。 WFS-T: Web Map Service-Transactional. 允许用户以可传输的块编辑地理数据。 WCS:Web Coverage Service(Web覆盖服务) Web 覆盖服务(WCS)面向空间影像数据,它将包含地理位置值的地理空间数据作为“覆盖(Coverage)”在网上相互交换。 ●网络覆盖服务由三种操作组成:GetCapabilities,GetCoverage和DescribeCoverageType: ?GetCapabilities 操作返回描述服务和数据集的XML文档。 ?GetCoverage操作是在GetCapabilities确定什么样的查询可以执行、什么样的数据能 够获取之后执行的,它使用通用的覆盖格式返回地理位置的值或属性。 ?DescribeCoverageType 操作允许客户端请求由具体的WCS服务器提供的任一覆盖层 的完全描述。 GML: Geography Markup Language. 一种用于描述地理数据的XML。OGC——Open Geospatial Consortium——开放地理信息联盟 总之,GeoServer 是您需要显示地图在网页的那些工具的当中一个,用户可以缩放并且移动。可以与一些客户端联合使用,比如:MapBuilder (for web pages), UDig, GVSig,等等。对标准的使用允许信息从GeoServer 到其它地理信息可以很容易地被结合。

瓦片数据MBTiles存储简介

瓦片数据MBTiles存储简介 地图制作者面对一个数以百万计的地图瓦片残酷的现实:大多数文件系统和传输协议对处理数以百万计的图像不是很有效,在磁盘为FAT32格式中,一个文件夹中最多含有65536个文件,HFS最多能列出32,767个文件,EXT3超过20000个文件时会变的很慢。不论是你通过USB还是网络来复制数以百万计的瓦片数据是低效并且缓慢的。MBTiles利用SQLite数据库来存储,并提供一种规范,使得数以百万的瓦片数据存储在一个文件中,而且SQLite数据库支持多种平台,所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。 ? 简单介绍下SQLITE ? 如果你之前使用过SQL数据库,比如MySQL或PostgreSQL),那么使用SQLite数据库会觉得很熟悉,您可以运行熟悉的SQL SELECT、INSERT、UPDATE语句,并创建表、索引、视图。SQLite和其他数据库之间的区别是:每个SQLite数据库只包含在一个文件,没有外部权限系统,数据库后台进程,或配置。每个.sqlite文件是一个独立的数据库,你可以从电脑复制一个.sqlite文件到移动设备中,它的行、表和索引都可完全使用。 SQLite是很小的并且是无处不在的:iTunes使用它来存储元数据,firfox使用它来存储缓存信息,还有一些其他产品(虽然过时了,但仍记忆犹新) 总之,SQLite非常适合作为一个便携式,单个文件解决方案和用于存储和网络地图服务。 ? 在SQL中使用瓦片坐标 ? 在WEB地图介绍中我们看到,瓦片是参照了他们的z/x/y形式坐标,在磁盘存储上,他们通常存储在以z、x为名字上的目录中,这样就有一个瓦片文件路径是0/0/0.png,MBTiles 提供了这样一个功能:瓦片表

如何将谷歌地图导出为百度瓦片(新版)

如何将谷歌地图导出为百度瓦片 一、概述 在国内的商用地图中,百度和高德地图是比较用常用并为大家所熟知的,尤其是对于WebGIS开发者来讲,百度API和高德API都是比较常用的项目开发选型平台。但这两个平台都具有一个美中不足的缺点,即卫星影像的高清区域相较谷歌卫星地图而言少很多,且拍摄时间都比较久远,而且没有提供历史卫星影像。 鉴于以上所述原因,这里以百度API为例,提供一种可以将谷歌地球高清卫星影像用百度API进行调用的解决方案。由于百度地图的坐标是在火星坐标(GCJ-02)的基础之上,进行二次加偏的百度BD09专用坐标系,因此需要先将谷歌地球卫星影像下载并投影转换为百度BD09坐标系并切片之后,才可以用百度API进行调用。 这里我们以“古田县”为例,说明如何用万能地图下载器下载谷歌地球高清卫星影像,并将卫星影像投影转换为百度BD09切片的过程。最后,会提供一份百度API调用离线地图并进行二次开发WebGIS系统的案例。 二、下载谷歌卫星地图 下载谷歌卫星影像数据时,可以通过屏幕范围下载、框选矩形范围下载、绘制多边形范围下载、道路沿线下载和导入下载范围下载等多种下载方式。 导入下载范围的文件可以支持Google Earth (*.kml;*.kmz)、

Shapefile(*.shp)、AutoCAD (*.dxf;*.dwg)、Mapinfo (*.tab)、GPS 文件(*.gpx)、GMT 文件(*.gmt)、Excel (*.csv;*.cls)和文本文件(*.txt)等多种矢量格式。 这里我们以按行政区划范围下载为例。 在万能地图下载器的右上角行政区划中,选择显示“古田县”行政区划,同时会显示“下载”按钮,点击该按钮可以新建下载任务。 在“新建任务”对话框,在该对话框中可以参考文件大小和打印尺寸等参数选择适合的级别。下载单张大图时,一般情况下选择16到19级当下载结果最终需要导出为瓦片时,一般是从当前行政区划显示的级别开始选择(这里是第11级),一直选择到第19级(国内19级清晰度效果最佳,19级以上基于19级放大),由于数据量非常大,这里只为了说明如何下载谷歌地球影像并投影转换为BD09瓦片的方法,因此这里以选择到第15级为例。

如何使用地图瓦片

分布式切图服务——瓦片使用篇Written by:iServer 2013-5-17 10:19:00 如果已经通过分布式切图服务生成了地图瓦片,那么如何配置地图服务才能使用这些瓦片呢?下面我们将介绍如何使用切图得到的地图瓦片。如果已经通过分布式切图服务生成了地图瓦片,那么如何配置地图服务才能使用这些瓦片呢?下面我们将介绍如何使用切图得到的地图瓦片。使用地图切片库 在多台服务器上分布式存储的地图切片,通过文件系统进行管理,这样服务器端就无需进行数据同步,直接对客户端提供地图服务。在线地图服务接收到地图请求时,会自动在地图瓦片中检索合适的切片并返回给客户端。此外,分布式存储的地图瓦片也可以导出为MBTiles标准格式,供移动端离线使用,如iClient Flex Bev、iClient for Android等。 1. 配置地图服务使用地图切片库 通过分布式切图服务切地图瓦片时,需要通过服务组件来选择地图,相应地,使用地图瓦片时也需要对地图服务组件进行设置。 具体方法是:登录服务管理器,打开地图瓦片对应的地图服务组件,进入配置页面(如,勾选启用缓存,选择缓存 类型为“FastDFS”,并导入存储配置(即选择存储ID)后,该地图服务组件所发布的服务即可使用指定的FastDFS文件系统中的地图瓦片。

2. 将地图切片导出为MBTiles格式供离线使用 SuperMap iServer支持将FastDFS分布式文件系统中每一幅地图对应的地图瓦片集导出为MBTiles格式,便于传播和移动端(如iClient Flex Bev、iClient for Android等)的离线使用。 使用方式是: ?进入服务管理器的“切片存储”选项卡,页面列出了服务器上当前添加的各个切片存储的存储位 置信息,选择类型为“FastDFS”的切片存储?点击存储ID进入FastDFS切片存储页面 ?点击切片集列表右端的“导出mbtiles”链接,填写导出目录、比例尺、范围等参数,即可将切片导出为MBTiles格式。当导出完成后,可点击“下载”链接,将导出的MBTiles文件下载到本地。

在ArcGIS中发布GoogleEarth瓦片为网络地图服务(wms)

在ArcGIS中发布GoogleEarth瓦片为网络地图服务(wms) 说明 本案例实现内容:GoogleEarth瓦片地图的获取、在ArcGIS Server Manger中发布下载好的影像瓦片数据。 本实例使用软件版本:ArcGIS10.2,水经注万能地图下载器。 影像瓦片来源“水经注万能地图下载器”。如果没有安装本软件,可以百度“水经注软件”到官方网站下载。 一、下载瓦片数据 启动水经注万能地图下载器,选择“卫星.谷歌地球”在线地图,点击“框选下载区域”,双击下载区域,选择级数,如下图。 由于我们需要导出瓦片数据,为了增加缩放效果,这里我们从1级到10级

都勾选上。选择好级别后,点击开始下载。下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。 在该对话框中,选择导出“瓦片:ArcGIS Server”,导出级别“1-10”,点击“输出”按钮导出数据,并叠加上标签即可。 默认导出路径为“D:\SGDownload\ tt2_ArcgisServerTiles”。 二、在ArcGIS中发布服务 首先把刚下载好的瓦片文件在arcmap中打开,可以预览到瓦片地图,如下图。

发布服务,选择“文件”,“共享为”,“服务” 弹出对话框,点击“下一步”

点击“继续”,弹出服务编辑器对话框。 这里的设置就是重点了。

1、点击“缓存”; 2、选择“使用缓存中的切片”;2、选择“切片方案”; 3、选择我们下载瓦片文件夹中的conf.xml文件; 4、选择“手动构建缓存”;最后“发布”。 发布成功后,可以再ArcGIS manager中查看,然后会发现我发布的地图服务是空白的。 接下来就需要添加我们下载好的瓦片影像了。 在“目录”下右击发布好的文件,选择“管理缓存”,选择“导入缓存”,弹出对话框,导入下载好的瓦片如下图 导入成功后,在ArcGIS Server Manager中保存并重新启动“testTiles”服务。 现在就可以预览到发布好的瓦片服务了。 最后我们开启WMS服务,如下图。

实验报告六

徐州工程学院 管理学院实验报告 实验课程名称:物流信息技术 实验地点:南主楼机房 2014 年 5 月至 2014 年 5月 专业物流工程 班级 11物流1班 学生姓名吴燕 学号 20111514105 指导老师周渠

实验报告 实验项目:GIS,GPS 实验学时: 4 实验日期:2014年5月 实验要求:了解GIS组成,GPS技术、应用。 实验内容: 一、GIS 地理信息系统(GIS,Geographic Information System)是一门综合性学科,结合地理学与地图学以及遥感和计算机科学,已经广泛的应用在不同的领域,是用于输入、存储、查询、分析和显示地理数据的计算机系统,随着GIS的发展,也有称GIS为“地理信息科学”(Geographic Information Science),近年来,也有称GIS为"地理信息服务"(Geographic Information service)。GIS是一种基于计算机的工具,它可以对空间信息进行分析和处理(简而言之,是对地球上存在的现象和发生的事件进行成图和分析)。 GIS 技术把地图这种独特的视觉化效果和地理分析功能与一般的数据库操作(例如查询和统计分析等)集成在一起。GIS与其他信息系统最大的区别是对空间信息的存储管理分析,从而使其在广泛的公众和个人企事业单位中解释事件、预测结果、规划战略等中具有实用价值。 二、GIS组成 人员,是GIS中最重要的组成部分。开发人员必须定义GIS中被执行的各种任务,开发处理程序。熟练的操作人员通常可以克服GIS软件功能的不足,但是相反的情况就不成立。最好的软件也无法弥补操作人员对GIS的一无所知所带来的负作用。[1] 数据,精确的可用的数据可以影响到查询和分析的结果。 硬件,硬件的性能影响到软件对数据的处理速度,使用是否方便及可能的输出方式。 软件,不仅包含GIS软件,还包括各种数据库,绘图、统计、影像处理及其它程序。 过程,GIS 要求明确定义,一致的方法来生成正确的可验证的结果。 GIS属于信息系统的一类,不同在于它能运作和处理地理参照数据。地理参照数据描述地球表面(包括大气层和较浅的地表下空间)空间要素的位置和属性,在GIS中的两种地理数据成分:空间数据,与空间要素几何特性有关;属性数据,提供空间要素的信息。 地理信息系统(GIS)与全球定位系统(GPS)、遥感系统(RS)合称3S系统。 三、特点 公共的地理定位基础;

openlayers

1开始使用openlayers 1.1设置 先到它的官方网站https://www.doczj.com/doc/6e17926086.html,下载他的压缩包,解压。 拷贝目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的Scripts目录下(当然,这个只是例子,您网站的目录结构您自己说得算,只要保证OpenLayers.js,/lib,/img在同一目录中即可)。然后,创建一个****.html作为查看地图的页面。 2试验openlayers 环境:geoserver1.7 Openlayers2.4 Dreamviever8 2.1第一个地图窗口 目标:用openlayers加载geoserver wms。 步骤: (1)空白html文件 (2)插入div-map (3)为div付风格 以上为未加载地图的静态页面 代码为: 效果为: (4)插入openlayers代码引用 (5)写js代码,主要是init() 第一个地图窗口就完成了 注1.js中defer的作用是页面加载完成后,执行脚本。 注2.222 2.2控制地图与div的占据区域

目标:让地图默认占满展现区 方法: 设置map的options,由其中两个因素决定:maxExtent-最大地图边界;maxResolution-最大解析度。 当maxExtent设置为地图的最大边界后,maxResolution设置为auto,那地图就占满DIV。 var options = { controls: [], maxExtent: bounds, maxResolution: "auto", projection: "EPSG:4326", numZoomLevels: 7, units: 'degrees' }; map = new OpenLayers.Map('map',options); 2.3地图控制-尺度缩放 目标:填加尺度缩放控件 步骤: (1)map初始化赋参数 var options = { controls: [], //scales: [50000000, 30000000, 10000000, 5000000], maxExtent: bounds, maxResolution: "auto", projection: "EPSG:4326", numZoomLevels: 7, (表示有几个缩放级别) units: 'degrees' }; map = new OpenLayers.Map('map',options); (2)填加控件,代码 map.addControl(new OpenLayers.Control.PanZoomBar({ position: new OpenLayers.Pixel(2, 15)(右边距,上边距) })); 思考:级别的计算,个人推测由(maxResolution- minResolution)/ numZoomLevels,但是默认值是书面日后再细究。 2.4地图控制-鼠标坐标拾取

geoserver地图配置文档

(一)准备工作 1、下载JDK(java development kit) 2、下载Apache 3、下载Tomcat 4、下载geoserver 5、下载PostgreSQL 6、下载Postgis 7、下载Pgrouting 8、下载Openlayers https://www.doczj.com/doc/6e17926086.html,/wiki/HowToDownload 9、下载Tilecache2.10,python-2.5.1,mod_python-3[1].3.1.win32-py2.5-Apache2.2,链接分 别为https://www.doczj.com/doc/6e17926086.html,/ ,http:// https://www.doczj.com/doc/6e17926086.html,/,https://www.doczj.com/doc/6e17926086.html,/。注意版本要匹配。 (二)geoserver安装 1、安装Sun Java 2 SDK(java se development kit) Geoserver的安装需要JDK支持,因此应预先安装JDK, 1)安装JDK到指定目录。 2)安装完成后配置环境变量:“我的电脑”->“属性”, “高级”选项卡->“环境变量”; 在“系统变量”中JAVA_HOME变量名D:\Program Files\Java\jdk1.7.0(以本机为例)。 2、安装Apache服务器 1)安装Apache到指定目录,默认使用80端口。 2)安装完成后,在浏览器中输入http://localhost或者http://127.0.0.1/,检测apache 安装是否正确。如果Apache Server无法正常启动,检查端口是否被占用。端口查 看方法是“开始”->“运行”->“cmd”命令->“netstat –a –n”命令。若端口被占 用,修改apache的conf文件夹中的httpd.conf文件,将端口改为其他值。修改前 应关闭服务,修改保存后重启服务。

OpenLayers学习心得

OpenLays学习笔记 目录 (一)项目介绍 (2) (二)源代码总体结构分析 (5) (三)BaseTypes :定义底层类与定制JS内置类 (9) (四)BaseTypes: OpenLayers中定制JavaScript内置类 (14) (五)空间数据的组织与实现 (19) (六)OpenLayers 数据解析—以GML为例 (22) (七)数据渲染分析 (26) (八)地图表现 (29) (九)地图表现 (34) (十)OpenLayers中的控件 (37) (十一)OpenLayers事件机制分析 (42) (十二)体系结构 (45)

OpenLayers项目分析 (一)项目介绍 OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript 包,目前的最高版本是2.5 V,通过BSD License 发行。它实现访问地理空间数据的方法都符合行业标准,比如OpenGIS的WMS和WFS规范, OpenLayers 采用纯面向对象的JavaScript方式开发,同时借用了Prototype框架和Rico库的一些组件。 采用OpenLayers作为客户端不存在浏览器依赖性。由于OpenLayers采用JavaScript语言实现,而应用于Web浏览器中的DOM(文档对象模型)由JavaScript实现,同时,Web浏览器(比如IE,FF等)都支持DOM 。 OpenLayers APIs采用动态类型脚本语言JavaScript编写,实现了类似与Ajax 功能的无刷新更新页面,能够带给用户丰富的桌面体验(它本身就有一个Ajax 类,用于实现Ajax功能)。 目前,OpenLayers所能够支持的Format有:XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS、WKT(Well-Known Text)。在OPenlayers.Format名称空间下的各个类里,实现了具体读/写这些Format的解析器。

WebGIS各种术语定义以及介绍

1、jQuery(function(){})与(function(){})(jQuery)的区别 1、jQuery(function(){});======jQuery(document).ready(function(){});表示在DOM加载完毕后执行了ready()方法; 2、(function(){})(jQuery);实际上是执行()(para)匿名方法,只不过传递了jQuery对象; 3、总结: 3.1、jQuery(function(){}),用于存放操作DOM对象的代码,执行其中代码时对象已经存在。不可用于存放开发插件的代码,因为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数). 3.2、(function(){})(jQuery),用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码需要小心使用。 2、jQuery中的extend方法通过不同的参数实现了几种不同的继承方法: 1. extend(src), 扩展jQuery静态方法. 也就是说,将src对象的属性和方法逐一复制给jQuery $.extend({ test:function(){alert('test函数')}

}) 2. extend(dest,src1,src2,src 3...srcN) ,合并多个对象. 为jQuery.extend(css1,css2)为例,css1,css2各有一些属性(方法照样会如此处理,这里只讲属性). extend函数会把css2有而css2没有的属性加到css1中,如果css2的某个属性与css1的某个属性名称享用,就会用css2的属性去覆盖css1的同名属性。css1就是最后的整和对象。或者也可以用: var newcss = jquery.extend(css1,css2) newcss就是合并的新对象。 var newcss = jquery.extend({},css1,css2) newcss就是合并的新对象.而且没有破坏css1的结构。 //用法: jQuery.extend(obj1,obj2,obj3,..) ar Css1={size: "10px",style: "oblique"} var Css2={size: "12px",style: "oblique",weight: "bolder"} $.jQuery.extend(Css1,Css2) //结果:Css1的size属性被覆盖,而且继承了Css2的weight属性 // Css1 = {size: "12px",style: "oblique",weight: "bolder"}7 3.extend(boolean,dest,src1,src2...),深度镶套对象 新的extend()允许你更深度的合并镶套对象。下面的例子是一个很好的证明。 // 以前的.extend() jQuery.extend( { name: “John”, location: { city: “Boston” } },

相关主题
文本预览
相关文档 最新文档